Skip to content

4.6 多 Agent 协作

当单个 Agent 搞不定一个任务时,多 Agent 协作是答案——但它也带来了新的复杂性。

什么时候需要多 Agent

任务可以并行:代码审查 + 测试 + 文档可以同时进行
上下文不够用:单个 Agent 的上下文装不下整个任务
需要专业分工:不同子任务需要不同的指令和工具
需要相互检验:一个 Agent 生成,另一个 Agent 审查

不需要多 Agent 的场景:任务本身是顺序的,并行不了;任务简单,拆分只会增加复杂度


Orchestrator - Subagent 模式

这是最常见的多 Agent 架构:

Orchestrator(总协调者)
├── 理解整体任务
├── 把任务拆成子任务
├── 分配给 Subagent
└── 汇总结果

Subagent A(代码生成)  Subagent B(代码审查)  Subagent C(写测试)

在 Claude Code 里,当你说"帮我同时做 X 和 Y",Claude 可能会自动启动 Subagent 并行处理。


Handoff 的关键:信息传递要完整

多 Agent 最容易出问题的地方是信息传递。

反面案例:

Agent A:好的,我已经完成了数据库设计
Agent B:(收到"数据库设计完成")好的,我来写 API...
         (但 Agent B 不知道具体的表结构是什么)
结果:API 和数据库对不上

正确做法:

Agent A 完成时输出:
  - 完成的表结构 DDL
  - 主要字段说明
  - 需要注意的约束

Agent B 收到这些信息后开始工作

用文件系统作为共享状态

多个 Agent 之间共享状态最可靠的方式是通过文件:

Agent A 把中间结果写到 /tmp/task-output/schema.json
Agent B 从 /tmp/task-output/schema.json 读取并继续工作

比通过消息传递更可靠,而且可以随时检查中间结果。


多 Agent 的调试

多 Agent 出了问题比单 Agent 更难调试,因为问题可能出在任何一个 Agent 或它们之间的交互上。

调试步骤:

  1. 先找到是哪个 Agent 出了问题(看每个 Agent 的输出)
  2. 检查 Handoff 时传递的信息是否完整
  3. 确认子任务的依赖关系是否正确(A 依赖 B 的结果,但 B 还没完成)
  4. 检查共享状态(文件/数据库)是否被正确写入和读取

现实中的多 Agent 使用建议

从单 Agent 开始,只在需要时引入多 Agent

多 Agent 增加了复杂度,不是银弹。先用单 Agent 把任务搞定,当遇到明确的瓶颈(上下文不够、需要并行、需要专业分工),再考虑拆分。

给每个 Subagent 清晰的职责边界

每个 Subagent 应该有明确的:

  • 输入(从哪里获取信息)
  • 任务(做什么)
  • 输出(产出什么格式的结果)
  • 范围(不做什么)

📌 关键结论

  1. 多 Agent 适合并行任务、超长任务、需要专业分工的场景
  2. Orchestrator-Subagent 是最常见的架构
  3. Handoff 时信息传递要完整,用文件系统共享状态比消息传递更可靠
  4. 从单 Agent 开始,按需引入多 Agent,不要过度设计

下一节:4.7 AI 编程实战工作流

写给自己的 AI 学习地图