Documentation
¶
Index ¶
- type AgentPool
- type AgentResult
- type CancelTaskTool
- type CollectTaskInput
- type CollectTaskTool
- type DelegateInput
- type DelegateTool
- type InMemoryCheckPointStore
- type IterationBudget
- func (b *IterationBudget) AddExemptTool(toolName string)
- func (b *IterationBudget) Consume() bool
- func (b *IterationBudget) ConsumeForTool(toolName string) bool
- func (b *IterationBudget) IsExempt(toolName string) bool
- func (b *IterationBudget) IsExhausted() bool
- func (b *IterationBudget) Refund()
- func (b *IterationBudget) Refunded() int
- func (b *IterationBudget) Remaining() int
- func (b *IterationBudget) Total() int
- func (b *IterationBudget) Used() int
- type ListTasksInput
- type ListTasksTool
- type ModelConfig
- type ParallelSpawnInput
- type ParallelSpawnTool
- type PoolConfig
- type SpawnInput
- type SpawnTool
- type SubAgent
- type SubAgentAdapter
- type SubAgentConfig
- type SubAgentManager
- func (m *SubAgentManager) CanSpawn() bool
- func (m *SubAgentManager) Cancel(id string) error
- func (m *SubAgentManager) CancelTask(taskID string) error
- func (m *SubAgentManager) Cleanup(id string)
- func (m *SubAgentManager) ConsumeIteration() bool
- func (m *SubAgentManager) Create(ctx context.Context, id string) (*SubAgent, error)
- func (m *SubAgentManager) GetConfig(id string) (*SubAgentConfig, bool)
- func (m *SubAgentManager) GetIterationBudget() *IterationBudget
- func (m *SubAgentManager) GetResult(id string) *SubAgentResult
- func (m *SubAgentManager) GetTaskStatus(taskID string) (*TaskInfo, error)
- func (m *SubAgentManager) ListSubAgents() []*SubAgentConfig
- func (m *SubAgentManager) ListTasks() []*TaskInfo
- func (m *SubAgentManager) NextTaskID() string
- func (m *SubAgentManager) RegisterConfigs(configs []SubAgentConfig)
- func (m *SubAgentManager) RegisterTool(name string, tool interface{})
- func (m *SubAgentManager) Run(ctx context.Context, id string, task string) (*SubAgentResult, error)
- func (m *SubAgentManager) RunAsync(ctx context.Context, id string, task string) (*SubAgent, error)
- func (m *SubAgentManager) SetIterationBudget(budget *IterationBudget)
- func (m *SubAgentManager) Spawn(ctx context.Context, agentID string, task string) (*TaskInfo, error)
- func (m *SubAgentManager) Wait(agent *SubAgent) *SubAgentResult
- func (m *SubAgentManager) WaitTask(taskID string, timeout time.Duration) (*TaskInfo, error)
- type SubAgentResult
- type SubAgentStatus
- type TaskInfo
- type TaskStatus
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AgentPool ¶
type AgentPool struct {
// contains filtered or unexported fields
}
AgentPool 子代理池 - 支持真正的并行执行
func NewAgentPool ¶
func NewAgentPool(manager *SubAgentManager, config PoolConfig) *AgentPool
NewAgentPool 创建代理池
func (*AgentPool) GetRunningAgents ¶
GetRunningAgents 获取运行中的 agent 列表
type AgentResult ¶
type AgentResult struct {
TaskID string
AgentID string
Output string
Error string
Duration time.Duration
}
AgentResult 单个 Agent 的结果
type CancelTaskTool ¶
type CancelTaskTool struct {
// contains filtered or unexported fields
}
CancelTaskTool 取消任务工具
func NewCancelTaskTool ¶
func NewCancelTaskTool(manager *SubAgentManager) *CancelTaskTool
NewCancelTaskTool 创建 cancel task 工具
func (*CancelTaskTool) InvokableRun ¶
func (t *CancelTaskTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行 cancel
type CollectTaskInput ¶
type CollectTaskInput struct {
TaskID string `json:"task_id"`
Timeout int `json:"timeout,omitempty"` // 等待超时秒数,默认 30
}
CollectTaskInput collect task 工具输入
type CollectTaskTool ¶
type CollectTaskTool struct {
// contains filtered or unexported fields
}
CollectTaskTool collect task 工具 - 获取异步任务结果
func NewCollectTaskTool ¶
func NewCollectTaskTool(manager *SubAgentManager) *CollectTaskTool
NewCollectTaskTool 创建 collect task 工具
func (*CollectTaskTool) InvokableRun ¶
func (t *CollectTaskTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行 collect
type DelegateInput ¶
type DelegateInput struct {
AgentID string `json:"agent_id"`
Task string `json:"task"`
Context string `json:"context,omitempty"` // 额外上下文
}
DelegateInput 委托工具输入
type DelegateTool ¶
type DelegateTool struct {
// contains filtered or unexported fields
}
DelegateTool 委托工具 - 让主 Agent 可以调用 Sub-Agent
func NewDelegateTool ¶
func NewDelegateTool(manager *SubAgentManager) *DelegateTool
NewDelegateTool 创建委托工具
func (*DelegateTool) InvokableRun ¶
func (t *DelegateTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行委托
type InMemoryCheckPointStore ¶
type InMemoryCheckPointStore struct {
// contains filtered or unexported fields
}
InMemoryCheckPointStore 内存中的检查点存储
func NewInMemoryCheckPointStore ¶
func NewInMemoryCheckPointStore() *InMemoryCheckPointStore
type IterationBudget ¶
type IterationBudget struct {
// contains filtered or unexported fields
}
IterationBudget 迭代预算管理器,用于在父子 agent 之间共享迭代次数
func NewIterationBudget ¶
func NewIterationBudget(total int) *IterationBudget
NewIterationBudget 创建迭代预算
func (*IterationBudget) AddExemptTool ¶
func (b *IterationBudget) AddExemptTool(toolName string)
AddExemptTool 添加豁免工具(不消耗预算的工具)
func (*IterationBudget) Consume ¶
func (b *IterationBudget) Consume() bool
Consume 尝试消耗一次迭代,返回是否成功 如果返回 false,表示预算已耗尽
func (*IterationBudget) ConsumeForTool ¶
func (b *IterationBudget) ConsumeForTool(toolName string) bool
ConsumeForTool 根据工具类型决定是否消耗预算 只读工具(如 Read, Grep, WebSearch)不消耗预算 返回是否消耗了预算
func (*IterationBudget) IsExempt ¶
func (b *IterationBudget) IsExempt(toolName string) bool
IsExempt 检查工具是否豁免
func (*IterationBudget) IsExhausted ¶
func (b *IterationBudget) IsExhausted() bool
IsExhausted 检查预算是否已耗尽
func (*IterationBudget) Refund ¶
func (b *IterationBudget) Refund()
Refund 退还一次迭代(用于某些操作如 execute_code)
type ListTasksInput ¶
type ListTasksInput struct {
Status string `json:"status,omitempty"` // 过滤状态:pending, running, completed, failed
}
ListTasksInput list tasks 工具输入
type ListTasksTool ¶
type ListTasksTool struct {
// contains filtered or unexported fields
}
ListTasksTool list tasks 工具 - 列出所有任务
func NewListTasksTool ¶
func NewListTasksTool(manager *SubAgentManager) *ListTasksTool
NewListTasksTool 创建 list tasks 工具
func (*ListTasksTool) InvokableRun ¶
func (t *ListTasksTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行 list tasks
type ModelConfig ¶
type ModelConfig struct {
Provider string `json:"provider"`
Name string `json:"name"`
APIKey string `json:"api_key,omitempty"`
APIBase string `json:"api_base,omitempty"`
Temperature float64 `json:"temperature,omitempty"`
MaxTokens int `json:"max_tokens,omitempty"`
TopP float64 `json:"top_p,omitempty"`
}
ModelConfig 模型配置
type ParallelSpawnInput ¶
type ParallelSpawnInput struct {
Tasks map[string]string `json:"tasks"` // agentID -> task
MaxConcurrent int `json:"max_concurrent,omitempty"` // 最大并发数
Timeout int `json:"timeout,omitempty"` // 单任务超时秒数
PoolTimeout int `json:"pool_timeout,omitempty"` // 池超时秒数
}
ParallelSpawnInput 并行 spawn 输入
type ParallelSpawnTool ¶
type ParallelSpawnTool struct {
// contains filtered or unexported fields
}
ParallelSpawnTool 并行 spawn 工具 - 同时启动多个 agent 并等待结果
func NewParallelSpawnTool ¶
func NewParallelSpawnTool(manager *SubAgentManager) *ParallelSpawnTool
NewParallelSpawnTool 创建并行 spawn 工具
func (*ParallelSpawnTool) InvokableRun ¶
func (t *ParallelSpawnTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行并行 spawn
type PoolConfig ¶
type PoolConfig struct {
MaxConcurrent int // 最大并发数,0 表示无限制
Timeout time.Duration // 单个任务超时
PoolTimeout time.Duration // 池级别超时
}
PoolConfig 代理池配置
type SpawnInput ¶
type SpawnInput struct {
AgentID string `json:"agent_id"`
Task string `json:"task"`
Timeout int `json:"timeout,omitempty"` // 超时秒数,默认使用 agent 配置
}
SpawnInput spawn 工具输入
type SpawnTool ¶
type SpawnTool struct {
// contains filtered or unexported fields
}
SpawnTool spawn 工具 - 异步启动 Sub-Agent 并立即返回
func (*SpawnTool) InvokableRun ¶
func (t *SpawnTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)
InvokableRun 执行 spawn
func (*SpawnTool) SetMaxConcurrent ¶
SetMaxConcurrent 设置最大并发数
type SubAgent ¶
type SubAgent struct {
ID string
Config *SubAgentConfig
Agent adk.Agent
Status SubAgentStatus
Result *SubAgentResult
CancelFn context.CancelFunc
// contains filtered or unexported fields
}
SubAgent 独立的 Sub-Agent 实例
func (*SubAgent) ResultChannel ¶
func (a *SubAgent) ResultChannel() <-chan *SubAgentResult
ResultChannel 返回一个 channel,当 agent 完成时发送结果
type SubAgentAdapter ¶
type SubAgentAdapter struct {
// contains filtered or unexported fields
}
SubAgentAdapter wraps a SubAgent's inner adk.Agent to implement the adk.Agent interface This allows it to be used as a sub-agent in deep.New()
func NewSubAgentAdapter ¶
func NewSubAgentAdapter(config *SubAgentConfig, agent adk.Agent) *SubAgentAdapter
NewSubAgentAdapter creates a new SubAgentAdapter
func (*SubAgentAdapter) Description ¶
func (s *SubAgentAdapter) Description(ctx context.Context) string
Description returns the agent description
func (*SubAgentAdapter) Name ¶
func (s *SubAgentAdapter) Name(ctx context.Context) string
Name returns the agent name
func (*SubAgentAdapter) Run ¶
func (s *SubAgentAdapter) Run(ctx context.Context, input *adk.AgentInput, options ...adk.AgentRunOption) *adk.AsyncIterator[*adk.AgentEvent]
Run executes the sub-agent with the given input
type SubAgentConfig ¶
type SubAgentConfig struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Prompt string `json:"prompt"`
Model *ModelConfig `json:"model,omitempty"` // 可选,默认使用主模型
Tools []string `json:"tools,omitempty"` // 工具名称列表
Skills []string `json:"skills,omitempty"` // 技能列表
MCPs []string `json:"mcps,omitempty"` // MCP 配置
RuntimeTools []tool.BaseTool `json:"-"`
MaxIterations int `json:"max_iterations"` // 最大迭代次数
TimeoutMs int `json:"timeout_ms"` // 超时时间
}
SubAgentConfig Sub-Agent 配置
type SubAgentManager ¶
type SubAgentManager struct {
// contains filtered or unexported fields
}
SubAgentManager Sub-Agent 管理器
func NewSubAgentManager ¶
func NewSubAgentManager(defaultModel model.ToolCallingChatModel) *SubAgentManager
NewSubAgentManager 创建 Sub-Agent 管理器
func (*SubAgentManager) CanSpawn ¶
func (m *SubAgentManager) CanSpawn() bool
CanSpawn 检查是否可以启动新任务(基于迭代预算)
func (*SubAgentManager) Cancel ¶
func (m *SubAgentManager) Cancel(id string) error
Cancel 取消 Sub-Agent 执行
func (*SubAgentManager) CancelTask ¶
func (m *SubAgentManager) CancelTask(taskID string) error
CancelTask 取消任务
func (*SubAgentManager) Cleanup ¶
func (m *SubAgentManager) Cleanup(id string)
Cleanup 清理已完成的 Sub-Agent
func (*SubAgentManager) ConsumeIteration ¶
func (m *SubAgentManager) ConsumeIteration() bool
ConsumeIteration 消耗一次迭代(用于 subagent)
func (*SubAgentManager) GetConfig ¶
func (m *SubAgentManager) GetConfig(id string) (*SubAgentConfig, bool)
GetConfig 获取 Sub-Agent 配置
func (*SubAgentManager) GetIterationBudget ¶
func (m *SubAgentManager) GetIterationBudget() *IterationBudget
GetIterationBudget 获取迭代预算
func (*SubAgentManager) GetResult ¶
func (m *SubAgentManager) GetResult(id string) *SubAgentResult
GetResult 获取 Sub-Agent 结果
func (*SubAgentManager) GetTaskStatus ¶
func (m *SubAgentManager) GetTaskStatus(taskID string) (*TaskInfo, error)
GetTaskStatus 获取任务状态
func (*SubAgentManager) ListSubAgents ¶
func (m *SubAgentManager) ListSubAgents() []*SubAgentConfig
ListSubAgents 列出所有 Sub-Agent 配置
func (*SubAgentManager) ListTasks ¶
func (m *SubAgentManager) ListTasks() []*TaskInfo
ListTasks 列出所有任务
func (*SubAgentManager) NextTaskID ¶
func (m *SubAgentManager) NextTaskID() string
NextTaskID 生成下一个任务 ID
func (*SubAgentManager) RegisterConfigs ¶
func (m *SubAgentManager) RegisterConfigs(configs []SubAgentConfig)
RegisterConfigs 注册 Sub-Agent 配置
func (*SubAgentManager) RegisterTool ¶
func (m *SubAgentManager) RegisterTool(name string, tool interface{})
RegisterTool 注册工具到管理器
func (*SubAgentManager) Run ¶
func (m *SubAgentManager) Run(ctx context.Context, id string, task string) (*SubAgentResult, error)
Run 运行 Sub-Agent 并等待结果
func (*SubAgentManager) SetIterationBudget ¶
func (m *SubAgentManager) SetIterationBudget(budget *IterationBudget)
SetIterationBudget 设置共享的迭代预算
func (*SubAgentManager) Spawn ¶
func (m *SubAgentManager) Spawn(ctx context.Context, agentID string, task string) (*TaskInfo, error)
Spawn 启动一个异步任务,立即返回 task_id
func (*SubAgentManager) Wait ¶
func (m *SubAgentManager) Wait(agent *SubAgent) *SubAgentResult
Wait 等待 Sub-Agent 执行完成
type SubAgentResult ¶
type SubAgentResult struct {
AgentID string `json:"agent_id"`
AgentName string `json:"agent_name"`
Status SubAgentStatus `json:"status"`
Output string `json:"output"`
TokensUsed int `json:"tokens_used"`
LatencyMs int64 `json:"latency_ms"`
Error string `json:"error,omitempty"`
}
SubAgentResult Sub-Agent 执行结果
type SubAgentStatus ¶
type SubAgentStatus string
SubAgentStatus Sub-Agent 状态
const ( SubAgentStatusIdle SubAgentStatus = "idle" SubAgentStatusRunning SubAgentStatus = "running" SubAgentStatusCompleted SubAgentStatus = "completed" SubAgentStatusFailed SubAgentStatus = "failed" SubAgentStatusCancelled SubAgentStatus = "cancelled" )
type TaskInfo ¶
type TaskInfo struct {
TaskID string
AgentID string
Status TaskStatus
Result *SubAgentResult
StartedAt time.Time
}
TaskInfo 任务信息
type TaskStatus ¶
type TaskStatus string
const ( TaskStatusPending TaskStatus = "pending" TaskStatusRunning TaskStatus = "running" TaskStatusCompleted TaskStatus = "completed" TaskStatusFailed TaskStatus = "failed" TaskStatusCancelled TaskStatus = "cancelled" )