| name | agent-orchestration |
| description | 多智能体编排协调(三省六部治理框架):消息总线通信、Supervisor/Pipeline/Swarm 三种编排模式、智能体间任务交接。当需要协调多个子智能体协作完成复杂任务时使用此技能。 |
| tools | spawn_agent, handoff_to_agent |
| metadata | {"category":"operations","emoji":"🎼","tree_id":"subagents/handoff_to_agent","tree_group":"subagents","min_tier":"task_write","intent_priority":20,"intent_keywords":{"zh":["智能体协调","多智能体编排","交接任务","handoff","supervisor模式","pipeline模式","swarm模式","消息总线","任务分配","编排流程","智能体通信"],"en":["orchestration","handoff agent","multi-agent coordination","supervisor pattern","pipeline mode","swarm mode","message bus"]},"scene_hint":"多智能体任务交接/编排用此→单个实例查询管理用agent-fleet→定时调度触发用agent-scheduler"} |
多智能体编排协调技能
核心组件
InterAgentBus (消息总线)
智能体间的 pub/sub 消息系统,支持广播和定向投递。
AgentMessage {
from: "coder" # 发送者
to: "analyst" # 接收者 (空=广播)
topic: "task.dispatch" # 主题路由
type: "handoff" # handoff/result/help/status
context: [...] # 可过滤的上下文块
}
消息过滤器 (控制传递给接收方的上下文量):
| 过滤器 | 行为 |
|---|
| FilterFull | 传递全部上下文 |
| FilterResultOnly | 仅最后 assistant 回复 |
| FilterRemoveTools | 移除工具调用块 |
| FilterSummaryTruncate(N) | 截断到最近 N 条 |
编排模式
Supervisor (监督者模式)
中央调度 — 一个 supervisor 分配任务给多个 worker。
Supervisor → SelectWorker(task, tags) → Dispatch → Worker 执行 → Complete
适用: 任务可独立分解,worker 无需直接通信。
Pipeline (流水线模式)
顺序执行 — 前一阶段输出作为后一阶段输入。
Stage1(collect) → Stage2(analyze) → Stage3(report)
适用: 有严格先后依赖的多步骤工作流。
Swarm (蜂群模式)
自主交接 — 智能体自行决定将任务转交给谁。
Agent-A → CanHandoff? → RecordHandoff → Agent-B → ...
适用: 需要动态路由、多轮对话协作。MaxHandoffs 防止无限循环。
工具集
handoff_to_agent
将当前任务交接给另一个子智能体。
handoff_to_agent(
target_blueprint_id="data-analyst",
task="分析这份数据",
context_filter="result_only"
)
权限检查: 使用 DelegationContract.CanDispatchTo() (L3 合同层)。
spawn_agent
从蓝图创建新的子智能体实例。
spawn_agent(
blueprint_id="researcher",
task="搜索XX领域最新论文"
)
使用场景
| 场景 | 推荐模式 | 示例 |
|---|
| 批量代码审计 | Supervisor | scheduler 分配 5 个文件给 5 个 security-auditor |
| 研究→分析→报告 | Pipeline | researcher → data-analyst → content-writer |
| 客服升级 | Swarm | customer-support → (复杂问题) → researcher |
| 周报自动化 | Pipeline | data-analyst → content-writer → (send_media) |