Help us shape the future of Go! Take the 2026 Go Developer Survey

subagent

package
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

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(ctx context.Context, manager *SubAgentManager, config PoolConfig) *AgentPool

NewAgentPool 创建代理池

func (*AgentPool) Cancel

func (p *AgentPool) Cancel()

Cancel 取消所有运行中的任务

func (*AgentPool) GetRunningAgents

func (p *AgentPool) GetRunningAgents() []*SubAgent

GetRunningAgents 获取运行中的 agent 列表

func (*AgentPool) Spawn

func (p *AgentPool) Spawn(tasks map[string]string) []*AgentResult

Spawn 并行启动多个任务

func (*AgentPool) Wait

func (p *AgentPool) Wait()

Wait 等待所有任务完成

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) Info

Info 返回工具信息

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) Info

Info 返回工具信息

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) Info

func (t *DelegateTool) Info(ctx context.Context) (*schema.ToolInfo, error)

Info 返回工具信息

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

func (*InMemoryCheckPointStore) Get

func (i *InMemoryCheckPointStore) Get(ctx context.Context, key string) ([]byte, bool, error)

func (*InMemoryCheckPointStore) Set

func (i *InMemoryCheckPointStore) Set(ctx context.Context, key string, value []byte) error

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)

func (*IterationBudget) Refunded

func (b *IterationBudget) Refunded() int

Refunded 返回已退还的迭代次数

func (*IterationBudget) Remaining

func (b *IterationBudget) Remaining() int

Remaining 返回剩余迭代次数

func (*IterationBudget) Total

func (b *IterationBudget) Total() int

Total 返回总迭代次数

func (*IterationBudget) Used

func (b *IterationBudget) Used() int

Used 返回已使用的迭代次数

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) Info

func (t *ListTasksTool) Info(ctx context.Context) (*schema.ToolInfo, error)

Info 返回工具信息

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"`
	ExtraFields map[string]any `json:"extra_fields,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) Info

Info 返回工具信息

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 NewSpawnTool

func NewSpawnTool(manager *SubAgentManager) *SpawnTool

NewSpawnTool 创建 spawn 工具

func (*SpawnTool) Info

func (t *SpawnTool) Info(ctx context.Context) (*schema.ToolInfo, error)

Info 返回工具信息

func (*SpawnTool) InvokableRun

func (t *SpawnTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)

InvokableRun 执行 spawn

func (*SpawnTool) SetMaxConcurrent

func (t *SpawnTool) SetMaxConcurrent(max int)

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) Cancel

func (s *SubAgent) Cancel()

Cancel 取消 Sub-Agent 执行

func (*SubAgent) GetResult

func (s *SubAgent) GetResult() *SubAgentResult

GetResult 获取执行结果

func (*SubAgent) ResultChannel

func (a *SubAgent) ResultChannel(ctx context.Context) <-chan *SubAgentResult

ResultChannel 返回一个 channel,当 agent 完成时发送结果

func (*SubAgent) Run

func (s *SubAgent) Run(ctx context.Context, task string) error

Run 运行 Sub-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

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"` // 可选,默认使用主模型
	Capabilities  []string        `json:"capabilities,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) Create

func (m *SubAgentManager) Create(ctx context.Context, id string) (*SubAgent, error)

Create 创建 Sub-Agent 实例(不运行)

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(ctx context.Context, 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) RunAsync

func (m *SubAgentManager) RunAsync(ctx context.Context, id string, task string) (*SubAgent, error)

RunAsync 异步运行 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 执行完成

func (*SubAgentManager) WaitTask

func (m *SubAgentManager) WaitTask(taskID string, timeout time.Duration) (*TaskInfo, error)

WaitTask 等待任务完成

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"
)

Jump to

Keyboard shortcuts

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