Skip to content

多 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 时需要决策:

  1. 任务分解:将复杂任务拆解为可独立执行的子任务
  2. 角色指派:为每个子 Agent 设定明确的角色定义(System Prompt)
  3. 依赖编排:识别子任务间的依赖关系,决定串行 vs 并行
  4. 结果聚合:定义子 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 的任务分解与分派
  • 异步邮箱通信
  • 并行执行与依赖管理
  • 结果收集与整合

我的理解与思考 ​