多智能体协作

一句话定义:多个分工不同的 Agent 协作完成复杂任务,由编排者协调流程。

1. 定义

Multi-Agent 系统由多个角色不同的 Agent(规划者、研究员、编码者、评审者…)协作,通过消息传递/共享状态协同,由 Orchestrator 编排。

2. 编排模式

模式 结构 适合
Hub-and-Spoke 中心分发汇总 任务可独立分解
Pipeline 流水线串行 线性流程(研究→写作→评审)
Hierarchical 分层委派 大任务逐级分解
Debate/Voting 多 Agent 辩论投票 需深思的判断

3. 角色设计

  • 每个 Agent 有明确职责与系统提示。
  • 角色边界清晰,避免"抢活"或"互相推诿"。
  • 常见角色:Planner、Researcher、Writer、Critic、Tester、Validator。

4. 协作机制

  • 消息传递:Agent 间通过消息通信。
  • 共享黑板:共享状态/上下文,各 Agent 读写。
  • 任务队列:编排者分发任务,Agent 领取执行。
  • 人在环上:关键节点由人审批或参与某角色。

5. 优势

  • 处理单 Agent 难胜任的复杂任务。
  • 每个 Agent 专精一面,质量更高。
  • 独立子任务可并行。
  • 评审/辩论 Agent 提升可靠性。

6. 劣势

  • 成本与延迟数倍于单 Agent。
  • 协调复杂,易死锁/活锁。
  • 调试困难。
  • 简单任务上过度工程。

7. 何时用 Tools,何时用多 Agent

这是设计前最该想清楚的一步。多数需求用「单 Agent + 多 Tools」就够了,不必上多 Agent。

7.1 本质区别:谁在做决策

维度 Tools(能力函数) 多 Agent(多个大脑)
定位 被调用的函数 独立的推理体
决策权 始终在同一个大脑 每个 Agent 各自决策
系统提示 共用一套 每个 Agent 独立
上下文 共享同一窗口 各自隔离
记忆 共享 可各自独立
类比 一个全能工程师 + 工具箱 一个团队,各人专长不同

一句话:Tools 解决「能做什么」,多 Agent 解决「推理在哪发生、上下文怎么隔离」。 类比软件设计:Tools 按领域分组 ≈ 命名空间(代码组织层面);多 Agent ≈ 多个独立进程/微服务实例(运行时隔离层面)。

7.2 优先用「单 Agent + Tools」(满足以下 → 别拆)

  • 单一连贯目标,一条主线能走完。
  • 能力差异只是「调不同 API / 函数」,靠 function calling 路由即可。
  • 上下文可以共享、彼此不冲突。
  • 不需要并行、不需要独立记忆、不需要不同人格。

7.3 该升级为「多 Agent」(满足任一 → 值得拆)

  • 子任务需要截然不同的系统提示 / 人格 / 专业语境(数学专家 vs 写作专家,提示词无法共用)。
  • 需要上下文隔离(长链路规划别污染编码上下文,防 context 污染 / 膨胀)。
  • 需要并行独立执行多个子任务。
  • 需要各自独立的长期记忆
  • 需要黑盒委托 + 各自护栏(主管不必看工人全部中间推理,各自加安全校验)。
  • 需要分角色的人在环审核

7.4 决策口诀

先用单 Agent + Tools 把活干完;当某子任务的系统提示越写越长、上下文互相打架、或它需要独立的人格 / 记忆 / 并行时,再把那一块抽成独立 Agent

8. 注意事项

  • 先单 Agent,不够再上多 Agent。
  • 明确终止条件防无限辩论。
  • 设总预算上限。
  • 共享状态需防污染、防膨胀。
  • 可观测:记录 Agent 间消息便于复盘。

9. 代表框架

  • AutoGen(微软)、CrewAI、MetaGPT、LangGraph 多 Agent。

10. 学习要点

  • 多 Agent 是单 Agent 的规模化协作扩展。
  • 成本量级远高于单 Agent,慎用。
  • 角色分工 + 编排模式是设计核心。
  • 先问「要不要独立的大脑和上下文」——不要,就用 Tools;要,才上多 Agent。

11. 参考资料

  • "MetaGPT: Meta Programming for Multi-Agent Collaborative Framework"
  • "Improving Factuality and Reasoning through Multiagent Debate"
  • AutoGen / CrewAI 文档