外观
多 Agent 协调
当单个 Agent 的能力边界不足以应对复杂任务时,多 Agent 协调成为必然选择。本章探讨如何让多个 Agent 高效协作。
1. Sub-agent 生成
1.1 为什么需要子 Agent
单一 Agent 面临的核心瓶颈:
- 上下文窗口有限:一个 Agent 无法同时持有所有相关信息,任务越复杂,信息丢失越严重
- 专业化需求:不同子任务需要不同的 System Prompt、工具集和知识库配置
- 并行加速:多个独立子任务可以同时执行,大幅缩短总耗时
- 风险隔离:某个子任务失败不会污染其他任务的上下文和执行状态
1.2 子 Agent 的隔离边界
子 Agent 与父 Agent 之间需要明确的隔离:
| 隔离维度 | 说明 |
|---|---|
| 上下文隔离 | 子 Agent 拥有独立的对话历史,不共享父 Agent 的完整上下文 |
| 工具隔离 | 子 Agent 可以拥有不同的工具集,按需配置 |
| 权限隔离 | 子 Agent 的权限范围可以比父 Agent 更窄(最小权限原则) |
| 状态隔离 | 子 Agent 的内部状态不影响父 Agent 的决策过程 |
1.3 任务分配策略
父 Agent 在生成子 Agent 时需要决策:
- 任务分解:将复杂任务拆解为可独立执行的子任务
- 角色指派:为每个子 Agent 设定明确的角色定义(System Prompt)
- 依赖编排:识别子任务间的依赖关系,决定串行 vs 并行
- 结果聚合:定义子 Agent 返回结果的格式和整合方式
2. 异步邮箱(Async Mailbox)
2.1 Agent 间通信机制
多 Agent 系统需要一种可靠的通信机制,异步邮箱是核心模式:
Agent A ──发送消息──→ [邮箱队列] ──轮询读取──→ Agent B- 解耦发送与接收:发送方不需要等待接收方处理完毕
- 消息持久化:消息存储在队列中,即使接收方暂时不可用也不丢失
- 顺序保证:消息按发送顺序排队,接收方按序处理
2.2 消息投递与轮询
通信的两个关键操作:
投递(Send):Agent 将消息放入目标 Agent 的邮箱
- 消息包含:发送者、内容、优先级、时间戳
- 投递后立即返回,不阻塞当前 Agent 的执行
轮询(Poll):Agent 在合适的时机检查自己的邮箱
- 可以在每个 Agent Loop 迭代开始时轮询
- 根据优先级决定是否中断当前任务处理新消息
2.3 非阻塞协作模式
异步邮箱实现的核心优势——非阻塞协作:
- Agent 不需要等待其他 Agent 的响应即可继续执行
- 多个 Agent 可以同时独立工作,通过邮箱交换中间结果
- 领导者 Agent 可以同时向多个工作者发派任务,异步收集结果
3. 团队协作模式
3.1 Leader-Worker 模式
最经典的多 Agent 协作架构:
Leader(领导者)的职责:
- 接收用户的原始需求
- 分解任务并制定执行计划
- 将子任务分派给合适的 Worker
- 监控执行进度,处理异常
- 整合结果并交付给用户
Worker(工作者)的职责:
- 接收 Leader 分派的具体任务
- 在自己的隔离环境中执行
- 通过邮箱报告进度和结果
- 遇到问题时向 Leader 请求帮助
3.2 角色分工
典型的多 Agent 团队角色配置:
| 角色 | 职责 | 典型工具 |
|---|---|---|
| Researcher | 信息调研、文档检索、知识收集 | search_codebase, read_file, search_web |
| Coder | 代码编写、功能实现 | create_file, search_replace, run_in_terminal |
| Reviewer | 代码审查、质量把关 | read_file, get_problems, grep_code |
| Verifier | 测试验证、结果确认 | run_in_terminal(运行测试), read_file |
角色分工的核心价值:
- 每个角色有专门优化的 System Prompt
- 工具集按角色需求精简,减少误用
- 职责清晰,减少重复劳动
3.3 冲突预防
多 Agent 并行工作时,冲突是最大挑战:
模块级隔离:
- 不同 Coder 负责不同模块/文件
- 通过 Git Worktree 实现物理隔离
- 每个 Agent 只能修改自己负责的区域
共享区域串行化:
- 当多个 Agent 需要修改同一文件时,排队串行执行
- 使用锁机制防止并发写入冲突
- Leader 负责调度共享资源的访问顺序
API 契约对齐:
- 在开始编码前,先由 Leader 定义好模块间的接口契约
- 各 Coder 按照契约独立实现,最后无缝集成
- 契约变更需要 Leader 协调所有相关 Agent
4. 协调模型
参见:多 Agent 协调模型
该时序图展示了一个完整的多 Agent 协调流程,包含:
- Leader 的任务分解与分派
- 异步邮箱通信
- 并行执行与依赖管理
- 结果收集与整合