subagent

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 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(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"`
}

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() <-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"`  // 可选,默认使用主模型
	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) 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(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