agent

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

internal/agent/retry.go 重试机制:指数退避 + 429/529 处理 CC 参考:src/services/api/withRetry.ts

Index

Constants

View Source
const (
	DefaultMaxRetries = 10
	BaseDelayMs       = 500
	MaxDelayMs        = 32000 // 32s cap
	Max529Retries     = 3
	JitterFraction    = 0.25 // ±25%
)

CC 对标常量

Variables

This section is empty.

Functions

func CalcRetryDelay

func CalcRetryDelay(attempt int, retryAfter string) time.Duration

CalcRetryDelay 计算重试延迟 CC 公式:base * 2^(attempt-1) + jitter,cap at 32s

func IsRetryableStatusCode

func IsRetryableStatusCode(code int) bool

IsRetryableStatusCode 判断 HTTP 状态码是否可重试

func WithRetry

func WithRetry(
	ctx context.Context,
	cfg RetryConfig,
	operation func(ctx context.Context, attempt int) error,
) error

WithRetry 包装一个返回 error 的操作,添加重试逻辑 CC 参考:src/services/api/withRetry.ts

Types

type APIError

type APIError struct {
	StatusCode int
	Message    string
	RetryAfter string // Retry-After 头值
}

APIError 包含 HTTP 状态码的 API 错误

func (*APIError) Error

func (e *APIError) Error() string

type RetryConfig

type RetryConfig struct {
	MaxRetries int
	OnRetry    func(attempt int, err error, delay time.Duration) // 通知调用方
}

RetryConfig 重试配置

func DefaultRetryConfig

func DefaultRetryConfig() RetryConfig

DefaultRetryConfig 返回 CC 默认重试配置

type SubAgentEntry

type SubAgentEntry struct {
	ID          string
	Name        string
	Description string
	InputCh     chan string // 接收外部消息
	Done        bool
	Result      string
}

SubAgentEntry 运行中的子 agent 信息

type SubAgentRegistry

type SubAgentRegistry struct {
	// contains filtered or unexported fields
}

SubAgentRegistry 子 agent 注册表,追踪所有活跃的子 agent

func NewSubAgentRegistry

func NewSubAgentRegistry() *SubAgentRegistry

NewSubAgentRegistry 创建子 agent 注册表

func (*SubAgentRegistry) Get

func (r *SubAgentRegistry) Get(nameOrID string) *SubAgentEntry

Get 根据 ID 或名称查找子 agent

func (*SubAgentRegistry) List

func (r *SubAgentRegistry) List() []*SubAgentEntry

List 列出所有子 agent

func (*SubAgentRegistry) Register

func (r *SubAgentRegistry) Register(entry *SubAgentEntry)

Register 注册一个子 agent

func (*SubAgentRegistry) Remove

func (r *SubAgentRegistry) Remove(id string)

Remove 移除子 agent

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL