当一个 Agent 不够用时,你就需要多个 Agent 协作。 但多个 Agent 不是"多开几个窗口各干各的"那么简单------它们之间怎么分工、怎么沟通、怎么汇总,需要设计模式。
本文拆解三种最实用的多 Agent 设计模式:什么时候用、怎么配、效果如何。
一、为什么需要多 Agent?
一个 Agent 的瓶颈
单个 Agent 能做的事有限制:
- 上下文窗口限定了它能同时处理的信息量
- 单线程意味着它一次只能做一件事
- 单模型意味着它只能用一种推理方式
多 Agent 的优势
| 优势 | 说明 |
|---|---|
| 并行 | 多个 Agent 同时干不同的活 |
| 专精 | 每个 Agent 用不同的模型/技能处理不同任务 |
| 容错 | 一个 Agent 失败了不影响其他的 |
| 可扩展 | 加 Agent 比改代码容易 |
二、模式一:Fan-out(扇出/并行探索)
是什么
一个任务拆成多个独立的子任务,同时执行,各自完成后汇总。
你的需求
↓
拆解器
├── Agent A:查数据库性能
├── Agent B:查 API 延迟
├── Agent C:查内存使用
└── Agent D:查网络瓶颈
↓
汇总器 → 综合报告
适用场景
| 场景 | 说明 |
|---|---|
| 性能分析 | 从多个角度同时分析同一个系统 |
| 技术调研 | 同时查多个技术方案的优劣 |
| 安全检查 | 同时扫描代码的多个安全维度 |
| 多维度测试 | 同时测试性能、安全、兼容性 |
在 Hermes 中实现
from hermes_tools import delegate_task, terminal
# 1. 派 3 个子 Agent 并行做性能分析
task_db = delegate_task(
goal="分析项目的数据库查询性能,找出慢查询和 N+1 问题",
context="项目路径:/path/to/project,数据库:PostgreSQL"
)
task_api = delegate_task(
goal="分析项目的 API 响应时间,找出最慢的 5 个端点",
context="项目路径:/path/to/project,框架:FastAPI"
)
task_memory = delegate_task(
goal="分析项目的内存使用情况,找出内存泄漏风险",
context="项目路径:/path/to/project,Python 3.12"
)
# 2. 等待所有结果回来(delegate_task 自动异步执行)
# 结果会在各自完成时自动返回
# 3. 汇总
print("=== 性能分析汇总 ===")
print(f"数据库问题:{result_db}")
print(f"API 问题:{result_api}")
print(f"内存问题:{result_memory}")
用 Kanban 实现
# 创建 3 个并行的调研任务
hermes kanban create "分析数据库性能瓶颈" --assignee research
hermes kanban create "分析 API 响应时间" --assignee research
hermes kanban create "分析内存使用" --assignee research
# 创建汇总任务(依赖上面三个完成)
hermes kanban create "汇总性能分析报告" \
--assignee writer \
--parent t_db,t_api,t_memory
优点与缺点
✅ 优点:
- 速度快(N 个任务并行 = 时间近似于最慢的那个)
- 互不干扰(每个 Agent 独立)
- 容易扩展(加一个维度就加一个 Agent)
❌ 缺点:
- 不能处理有依赖的子任务
- 如果子任务之间有信息重叠,可能重复劳动
- 汇总器的质量取决于各子任务的质量
三、模式二:Pipeline(流水线)
是什么
任务分成多个阶段,每个阶段依赖前一个阶段的输出。后一个 Agent 拿到前一个的结果再处理。
需求 → Agent A(调研)→ 输出方案
↓
Agent B(实现)→ 输出代码
↓
Agent C(审查)→ Review 结论
↓
你(决策)→ 合并或退回
适用场景
| 场景 | 说明 |
|---|---|
| 功能开发 | 调研→方案→实现→审查→发布 |
| 数据分析 | 采集→清洗→分析→可视化→报告 |
| 内容创作 | 选题→大纲→初稿→编辑→发布 |
| Bug 修复 | 复现→定位→修复→测试→审查 |
在 Hermes 中实现
# Step 1:调研
hermes kanban create "调研 PostgreSQL 15 新特性及迁移方案" \
--assignee research
# Step 2:方案(依赖调研)
hermes kanban create "基于调研结果编写迁移方案" \
--assignee writer \
--parent t_research
# Step 3:实现(依赖方案)
hermes kanban create "按迁移方案执行数据库升级" \
--assignee coder \
--parent t_plan
# Step 4:审查(依赖实现)
hermes kanban create "审查数据库迁移代码" \
--assignee reviewer \
--parent t_impl
# Step 5:最终决策(依赖审查)
hermes kanban create "审批迁移并发布" \
--assignee pm \
--parent t_review
依赖链自动流转
关键设计:Kanban 的 parent 参数让后一个任务在前一个完成后自动变为 ready。不需要手动通知。
t_research (done) → t_plan 自动变 ready
t_plan (done) → t_impl 自动变 ready
t_impl (done) → t_review 自动变 ready
t_review (done) → t_pm 自动变 ready
优点与缺点
✅ 优点:
- 结构清晰,每个阶段职责明确
- 每个阶段可以换不同的 Agent/模型/技能
- 可以随时插入人工审批节点
❌ 缺点:
- 串行执行,慢在"最慢的阶段"
- 上游出错,下游白干
- 需要良好的依赖管理
四、模式三:Best-of-N(竞争式)
是什么
同一个任务交给多个 Agent 独立做,然后挑最好的结果。
你的需求:设计一个用户认证方案
↓
Agent A(o4-mini):方案 A
Agent B(Claude):方案 B
Agent C(DeepSeek Pro):方案 C
↓
你(或一个评判 Agent)→ 挑出最优方案
适用场景
| 场景 | 说明 |
|---|---|
| 技术方案设计 | 多个方案比选,选最优 |
| 代码重构 | 多个重构方案,选可读性最高的 |
| 文案生成 | 多个版本,选最符合调性的 |
| Bug 修复 | 多个修复方案,选影响最小的 |
在 Hermes 中实现
from hermes_tools import delegate_task
# 同一个需求,用不同模型/角度各出一份方案
task_a = delegate_task(
goal="设计用户认证方案,用 JWT + refresh token",
context="项目使用 FastAPI,PostgreSQL。方案要简洁,易于维护。"
)
task_b = delegate_task(
goal="设计用户认证方案,用 session + JWT 混合",
context="同上项目。方案要安全,防止常见攻击。"
)
task_c = delegate_task(
goal="设计用户认证方案,用 OAuth2 + 本地会话",
context="同上项目。方案要灵活,后续容易扩展第三方登录。"
)
# 三个结果回来后,让一个评审 Agent 选最优
best = delegate_task(
goal="评审以下三个认证方案,选出最优的一个并说明理由",
context=f"""
方案 A:{result_a}
方案 B:{result_b}
方案 C:{result_c}
评估维度:安全性、可维护性、开发成本、扩展性
请给出综合评分(1-10)和推荐方案
"""
)
优点与缺点
✅ 优点:
- 质量高(N 个方案中选一个)
- 可以并行使不同模型的优势
- 适合高风险决策
❌ 缺点:
- 成本高(N 倍的 token 消耗)
- 评判 Agent 的质量决定最终结果
- 不适合时间敏感的场景
五、如何选择:决策树
你的需求是什么?
│
├─ 从多个角度看同一个问题 → Fan-out(扇出)
│ 例:性能分析、安全扫描、技术调研
│
├─ 任务有明确的先后依赖 → Pipeline(流水线)
│ 例:功能开发、数据分析、内容创作
│
├─ 需要高质量决策、可以接受高成本 → Best-of-N(竞争)
│ 例:技术选型、架构设计、高影响 Bug 修复
│
└─ 以上都有 → 混合模式
例:先用 Fan-out 调研,再串成 Pipeline,关键决策用 Best-of-N
六、混合模式实战
一个真实项目的多 Agent 工作流:
第一阶段:Fan-out 调研(同时进行)
├── Agent A:查 DB 性能 ------ 15 分钟
├── Agent B:查 API 延迟 ------ 15 分钟
└── Agent C:查前端性能 ------ 15 分钟
↓
第二阶段:Pipeline 执行(串行)
Agent D(汇总):出优化方案 ------ 10 分钟
Agent E(实现):按方案改代码 ------ 30 分钟
Agent F(审查):审查代码质量 ------ 10 分钟
↓
第三阶段:Best-of-N 决策(关键节点)
├── Agent G(方案一):用 Redis 缓存
├── Agent H(方案二):用 CDN 加速
└── Agent I(方案三):升级服务器
↓
你:选最优方案 → 合并 PR
整个流程:3 个 Fan-out + 3 个 Pipeline + 1 个 Best-of-N,约 60-90 分钟完成。如果一个人从头到尾做,至少需要 4-6 小时。
七、一句话总结
Fan-out 快,Pipeline 稳,Best-of-N 准。
没有万能模式。选哪种取决于你的约束条件:
- 时间紧 → Fan-out
- 质量要求高 → Pipeline(每步有人审)
- 决策风险大 → Best-of-N
- 全都要 → 混合模式