7.1 多智能体系统概述:为什么需要协作 一个 Agent 能力再强,也有天花板。面对「开发一个完整软件」「写一份深度研究报告」「规划一次跨国差旅」这类复合任务,单个 Agent 往往顾此失彼。让多个 Agent 分工——一个当产品经理、一个当程序员、一个当测试——常常比让一个 Agent「全能」更管用。但协作不是免费的,它有自己的代价。 7.1.1 单 Agent 的能力天花板 让一个 Agent 包揽一切,会遇到三道天花板: 天花板一:Profile 冲突 一个 Agent 只能有一套稳定的 Profile。但复杂任务需要多种相互冲突的角色——比如「快速行动的执行者」与「谨慎审查的把关人」很难在同一个 Profile 里共存。
一个 Agent 能力再强,也有天花板。面对「开发一个完整软件」「写一份深度研究报告」「规划一次跨国差旅」这类复合任务,单个 Agent 往往顾此失彼。让多个 Agent 分工——一个当产品经理、一个当程序员、一个当测试——常常比让一个 Agent「全能」更管用。但协作不是免费的,它有自己的代价。
让一个 Agent 包揽一切,会遇到三道天花板:
一个 Agent 只能有一套稳定的 Profile。但复杂任务需要多种相互冲突的角色——比如「快速行动的执行者」与「谨慎审查的把关人」很难在同一个 Profile 里共存。
单 Agent 试图同时是: - 行动派: 快速写代码、快速决策 - 保守派: 反复检查、慎之又慎 → 两种气质冲突, Agent 行为不稳定
一个 Agent 要处理整个复合任务,所有子任务的历史都堆在它的上下文里——第 4.4 节的「上下文膨胀」会被严重放大。
任务: 写一份完整调研报告 单 Agent 上下文: - 文献检索历史 - 数据分析历史 - 写作历史 - 修改历史 → 几千 Token 都装不下
一个 Agent 要啥都会,但 LLM 在不同能力上表现不均——擅长写作的模型可能数学弱,擅长推理的模型可能文笔差。一个 Agent 难以同时顶尖。
| 天花板 | 表现 | 多 Agent 如何破解 |
|---|---|---|
| Profile 冲突 | 一人难分饰多角 | 不同 Agent 不同 Profile |
| 上下文爆炸 | 全堆一个上下文 | 各 Agent 各管一摊 |
| 能力泛化难 | 一个模型难全能 | 不同 Agent 用不同模型 |
💡 多 Agent 的根本动机:与其让一个 Agent 「全能但平庸」,不如让多个 Agent 「各专其长、协同配合」。这与人類组织分工的逻辑完全一致——没有人能同时是最好的产品经理、程序员、设计师、测试员。
多 Agent 系统相对单 Agent,有四大优势:
每个 Agent 专注一个角色,Profile 精简、能力聚焦。
| 角色 | Profile | 工具 |
|---|---|---|
| 产品经理 | 懂需求、抓重点 | 文档、用户反馈 |
| 程序员 | 写代码、解 bug | 代码库、IDE |
| 测试员 | 找漏洞、验逻辑 | 测试框架 |
| 文档工程师 | 写文档、做教程 | 文档系统 |
无依赖的子任务由不同 Agent 并行处理,总延迟显著降低。
多个 Agent 互相审查、辩论,能发现单 Agent 看不到的盲点。这是 7.4 节的核心主题。
每个 Agent 独立设计、独立测试、独立升级,系统更易维护。
| 优势 | 单 Agent | 多 Agent |
|---|---|---|
| 专业化 | Profile 必须泛 | 各专其长 |
| 并行 | 串行为主 | 可并行 |
| 质量 | 单视角 | 多视角交叉 |
| 维护 | 牵一发动全身 | 模块化 |
多 Agent 不是万能解药,它有自己的代价:
Agent 之间要交换信息,每次通信都是一次 LLM 调用。Agent 越多、通信越频繁,成本越高。
单 Agent 完成: N 次调用 多 Agent (3 个): 3N + 通信开销
多个 Agent 谁先做、谁等谁、结果怎么合并——协调逻辑本身就是一个复杂系统。
一个 Agent 的错误输出,会被下游 Agent 当作输入,错误沿协作链放大。
多个 Agent 各有立场,可能在「什么是对的」上打架,陷入无休止的争论。
| 代价 | 表现 | 缓解 |
|---|---|---|
| 通信开销 | 调用数翻倍 | 减少不必要的通信 |
| 协调复杂 | 谁做啥要规划 | 明确角色与流程 |
| 错误传播 | 错输出被下游用 | 中间结果校验 |
| 一致性难 | Agent 互相矛盾 | 仲裁机制 |
⚠️ 多 Agent 不是「越多越好」。一个常见的反模式是「为了多 Agent 而多 Agent」——把简单任务拆给 5 个 Agent 协作,结果协调成本远超收益。多 Agent 适合复合任务,简单任务用单 Agent 反而更高效。
| 判据 | 倾向多 Agent |
|---|---|
| ✅ 任务涉及多种相互冲突的角色 | 强烈推荐 |
| ✅ 子任务可并行 | 推荐 |
| ✅ 单 Agent 上下文装不下 | 推荐 |
| ✅ 需要多视角交叉验证 | 推荐 |
| ✅ 不同子任务需要不同模型 | 推荐 |
| ❌ 任务简单、单步可完成 | 不适合 |
| ❌ 子任务高度串行、无并行机会 | 收益有限 |
| ❌ 实时性要求极高 | 通信开销吃不消 |
| ❌ 成本敏感 | 多 Agent 更贵 |
| 场景 | 多 Agent 怎么用 |
|---|---|
| 软件开发 | PM + 架构师 + 程序员 + 测试 + 文档(MetaGPT、ChatDev) |
| 研究报告 | 资料检索 + 分析 + 写作 + 审校 |
| 投资决策 | 多个分析师从不同角度分析 + 辩论 + 投票 |
| 客户服务 | 路由 + 售前 + 售后 + 升级 |
| 内容创作 | 策划 + 写作 + 编辑 + 校对 |
| 科研辅助 | 文献检索 + 实验设计 + 数据分析 + 论文写作 |
按协作模式,多 Agent 系统可大致分两类:
| 类型 | 特征 | 例子 |
|---|---|---|
| 协作型(Cooperative) | Agent 朝同一目标协同 | MetaGPT、CrewAI |
| 竞争型(Competitive) | Agent 互相审查、辩论、对抗 | 多 Agent 辩论、对抗验证 |
7.2-7.3 节主要讲协作型,7.4 节专门讲竞争型。
最后强调一个常被忽略的边界:多 Agent 不是替代单体,而是补充。
| 任务规模 | 推荐 |
|---|---|
| 简单单步 | 单 Agent(甚至直接 Function Calling) |
| 中等复合 | 单 Agent + 任务分解 |
| 高度复合、多角色 | 多 Agent |
| 需要多视角验证 | 多 Agent(竞争型) |
💡 从单 Agent 到多 Agent 是渐进的:先用单 Agent 解决问题,当单 Agent 明显不够时再升级到多 Agent。不要一上来就多 Agent——过早多 Agent 化是 Agent 工程的常见反模式,复杂度与成本都会失控。
下一节《7.2 通信协议与消息传递拓扑》将讨论多 Agent 之间怎么对话——星型、层级、网络、辩论四种拓扑。