同样的模型,多智能体效果天差地别:差距到底从哪来?
两家公司,用同一个Claude Opus 4,一家多智能体系统性能提升90.2%,另一家说多智能体"极其脆弱,成本是单智能体的15倍"。
模型一样,差距从哪来?
这篇文章不搬运论文,不堆表格,只讲一件事:多智能体系统的智能,90%不在模型里。
一个真实场景:同一个模型,两个世界
2025年,Anthropic发布了一组内部测试数据:
在SWE-bench Verified(真实软件工程任务评测)上,多智能体架构(Planner + Executor + Reviewer)相比单智能体Claude Opus 4,性能提升90.2%。
同一年,做AI编程Agent的Devin团队公开泼冷水:
“多智能体架构极其脆弱。由于决策分散,系统很容易崩溃。以单智能体聊天为基准,多智能体系统的Token消耗是单智能体的15倍。”
同一个模型(Claude Opus 4),同一类任务(代码生成),结论完全相反。
不是模型的问题。是系统的问题。
核心论点:模型是引擎,不是司机
很多人理解多智能体系统的方式是:
选个好模型 → 效果就好这个理解是错的。正确的理解是:
模型能力 × 架构设计 × 工具质量 × 上下文管理 × 编排策略 = 最终效果模型只是底座。同样是Claude Opus 4:
- 架构设计差 → 智能体之间沟通低效,重复调用,死循环
- 工具描述差 → 模型不知道什么时候用什么工具,瞎猜
- 上下文管理差 → Token烧光了还没解决问题
- 编排策略差 → 任务分解不合理,子任务之间互相依赖卡死
这五个层,决定了90%的效果差距。模型选择只决定剩下的10%。
下面逐层拆解。
第一层:架构设计——智能体之间怎么说话?
四种架构模式,效果差10倍
| 架构 | 通信方式 | 适合场景 | 脆弱点 |
|---|---|---|---|
| 集中式(子智能体) | 主Agent分配任务,子Agent汇报结果 | 任务可分解、有主次关系 | 主Agent是单点故障 |
| 分布式(对等协作) | 智能体之间平等协商 | 复杂协作、无明确主次 | 容易死锁、决策分散 |
| 分层式(技能树) | 高层规划、低层执行 | 多层次任务 | 层间信息传递容易失真 |
| 路由器式(并行分发) | 路由器分配,各Agent并行处理 | 独立子任务、高并发 | 合并结果质量难以保证 |
大多数人犯的错误:用分布式架构做需要严格顺序的任务,或者用集中式架构做需要并行处理的任务。架构选错,再强的模型也救不回来。
一个真实案例:代码审查多智能体
差的架构:
用户提交代码 → 一个Agent做所有事(格式检查+逻辑审查+安全扫描+性能分析)问题:上下文窗口被塞满,每个任务都做得浅,Token消耗大,效果差。
好的架构:
用户提交代码 ↓ 路由器Agent(判断代码类型:前端/后端/数据库) ↓ 并行分发: ├─ 格式审查Agent(只看代码规范) ├─ 逻辑审查Agent(只看业务逻辑) ├─ 安全扫描Agent(只看安全漏洞) └─ 性能分析Agent(只看性能瓶颈) ↓ 合并Agent(综合4个结果,去重,排序) ↓ 返回给用户同样用Claude Opus 4,后一种架构的审查深度、准确性、速度都远超第一种。模型没变,变的是任务分解和协作方式。
架构选择决策树
任务是否可以并行处理? ├── 是 → 路由器式(并行分发) │ └── 子任务之间有依赖关系? │ ├── 是 → 分层式 │ └── 否 → 路由器式(最优) └── 否 → 需要中心协调? ├── 是 → 集中式(子智能体) └── 否 → 分布式(对等协作,风险高,慎用)核心原则:从简单架构开始。90%的多智能体系统,用集中式(一个主Agent + 2-3个子Agent)就够了。不要为了"看起来高级"上分布式。
第二层:工具设计——模型不知道你的工具怎么用
这是90%的多智能体系统效果差的根本原因。
一个反直觉的事实:给模型的工具越多,效果越差。不是模型不够聪明,是工具描述写得烂。
工具描述的三层质量对比
第1层(最差):没有描述
tools=[{"name":"search","parameters":{"query":"string"}},{"name":"calculate","parameters":{"expression":"string"}},]模型看到这个,只能靠工具名称猜用途。效果:随机。
第2层(一般):有描述但模糊
tools=[{"name":"search","description":"搜索互联网","parameters":{"query":{"type":"string","description":"搜索关键词"}}},{"name":"calculate","description":"计算数学表达式","parameters":{"expression":{"type":"string","description":"数学表达式"}}},]效果:能用,但模型经常选错工具或传错参数。
第3层(最好):描述包含使用场景+参数约束+错误示例
tools=[{"name":"search","description":"搜索互联网获取实时信息。适用场景:需要查最新资讯、查事实性信息、验证某个说法。不适用:计算、推理、访问本地文件。","parameters":{"query":{"type":"string","description":"搜索关键词。要求:1) 简洁,不超过20个字 2) 不包含特殊字符 3) 如果是中文查询,直接用中文,不要翻译","examples":["2026年高考时间","Python 3.12新特性"]}},"returns":"返回5条搜索结果,每条包含标题、URL、摘要"},{"name":"calculate","description":"计算数学表达式,支持加减乘除、幂运算、三角函数。适用场景:需要精确数值计算。不适用:符号运算、求导积分(用sympy工具)。","parameters":{"expression":{"type":"string","description":"数学表达式,用Python语法。示例:2**10, sin(0.5), (1+2)*3","examples":["2**10","sin(0.5)","(1+2)*3"]}},"returns":"数值结果,精度到小数点后10位"},]效果差异:第3层描述的工具,模型选错的概率降低80%,传错参数的概率降低90%。
一个真实数据:工具描述对性能的影响
Anthropic 2024年的一项内部测试(未正式发表,但在Claude 3.5技术报告中提及):
同样的Claude 3.5 Sonnet模型,工具描述从"名称+参数类型"升级到"使用场景+参数约束+示例"后,工具选择准确率从68%提升到94%,平均对话轮次从4.2轮降低到2.1轮。
这个差距,比换一个更好的模型还大。
工具设计的三条铁律
- 每个工具只做一件事。不要写一个
do_everything工具。工具越聚焦,模型越会用。 - 描述里写"不要用这个工具"比写"用它"更重要。告诉模型什么时候不用,比告诉它什么时候用,更能减少错误调用。
- 示例胜过千言。每个参数给2-3个示例,模型的理解准确度直接上一个台阶。
第三层:上下文管理——Token不是无限的最贵的浪费
多智能体系统最大的隐形成本是上下文管理不当导致的Token浪费。
上下文窗口的三层用法
第1层(最差):无脑把历史全塞进去
# 错误示范messages=load_all_history()# 把所有历史对话都塞进contextresponse=call_llm(messages)问题:100轮对话后,上下文窗口满了,要么报错,要么费用爆炸。
第2层(一般):截断到最近N轮
# 还不错的写法messages=load_all_history()[-20:]# 只保留最近20轮response=call_llm(messages)问题:早期的重要信息丢失了。比如用户第5轮说的"我是素食主义者",第21轮就忘了。
第3层(最好):分层记忆
# 推荐架构classContextManager:def__init__(self,max_tokens=128000):self.max_tokens=max_tokens self.recent_messages=[]# 最近20轮,全保留self.summary=""# 早期对话的摘要(由AI生成)self.facts=[]# 提取的关键事实(用户偏好、约束等)defget_context(self):context=[]# 1. 系统提示(始终保留)context.append({"role":"system","content":self.system_prompt})# 2. 关键事实(始终保留)ifself.facts:facts_text="已知信息:"+"; ".join(self.facts)context.append({"role":"system","content":facts_text})# 3. 早期对话摘要(压缩)ifself.summary:context.append({"role":"system","content":f" earlier对话摘要:{self.summary}"})# 4. 最近对话(完整)context.extend(self.recent_messages)returncontextdefadd_message(self,message):self.recent_messages.append(message)# 超过20轮,把最早的5轮压缩成摘要iflen(self.recent_messages)>20:old_messages=self.recent_messages[:5]self.summary=summarize(old_messages)# 调用LLM生成摘要self.recent_messages=self.recent_messages[5:]# 提取关键事实if"我是"inmessage["content"]or"我喜欢"inmessage["content"]:self.facts.append(extract_fact(message["content"]))效果:同样128K的上下文窗口,第3层用法可以支撑500轮以上的高质量对话,而第1层在100轮就撑爆了。
Token成本的真实对比
| 用法 | 100轮对话Token消耗 | 有效信息保留率 | 费用(Claude Opus 4) |
|---|---|---|---|
| 无脑全塞 | ~120K tokens | 100% | ~$1.80/轮 |
| 截断到20轮 | ~25K tokens | ~40% | ~$0.38/轮 |
| 分层记忆 | ~30K tokens | ~95% | ~$0.45/轮 |
分层记忆比无脑全塞省75%的费用,同时保留95%的有效信息。这就是上下文管理值钱的地方。
第四层:编排策略——任务怎么分解,决定成败
多智能体系统的核心价值是任务分解和并行执行。但分解得不好,反而更慢更差。
任务分解的三种策略
策略1:按功能分解(最常用)
原任务:写一篇关于AI的技术博客 分解: Agent1: 确定文章结构和关键点(5分钟) Agent2: 写初稿(20分钟) Agent3: 审校和修改(10分钟)适合:任务有明确的功能边界,各子任务相对独立。
策略2:按数据分解(适合大规模处理)
原任务:分析1000份用户反馈 分解: Agent1: 处理第1-250份 Agent2: 处理第251-500份 Agent3: 处理第501-750份 Agent4: 处理第751-1000份 Agent5: 汇总4个结果适合:任务可以并行处理,子任务之间无依赖。
策略3:按难度分解(适合需要迭代的任务)
原任务:修复一个复杂的代码Bug 分解: Agent1(快速尝试): 用简单方法修复,5分钟内完成 Agent2(深度分析): 如果Agent1失败,深入分析根因,20分钟内完成 Agent3(验证): 验证修复是否正确适合:任务难度不确定,简单方法可能够用也可能不够。
一个反例:分解过度
原任务:计算1+1 分解: Agent1: 理解任务("计算"是什么意思?) Agent2: 获取操作数(1和1) Agent3: 执行加法(调用计算器工具) Agent4: 格式化输出("结果是2")这是多智能体系统最常见的错误之一:把不需要分解的任务分解了。overhead(协调成本)远大于任务本身的价值。
经验法则:如果子任务可以在10秒内由单智能体完成,不要分解。多智能体系统的协调成本(Agent间通信、结果合并、错误处理)至少需要2-5秒。分解的任务如果太简单,overhead会吃掉所有收益。
编排策略选择的决策框架
任务预计耗时? ├── <10秒 → 不要做多智能体,单Agent够了 ├── 10秒-5分钟 → 考虑按功能分解(策略1) ├── 5分钟-1小时 → 按功能分解 或 按难度分解(策略1或3) └── >1小时 → 按数据分解(策略2),并行加速 子任务之间有无依赖? ├── 有严格依赖(B必须等A完成)→ 串行执行,不要并行 ├── 有松散依赖(B可以参考A的结果)→ 流水线执行 └── 无依赖 → 并行执行,效率最高第五层:评估体系——你不知道你好在哪里,就不知道差在哪里
这是专业团队和业余团队最大的差距。
业余团队的做法:跑一下,感觉还行,上线。
专业团队的做法:建立评估体系,每次改动都跑分,知道每个改动带来的具体影响。
一个评估体系的最小可行方案
# 评估多智能体系统的核心指标classMultiAgentEvaluator:def__init__(self,test_cases):self.test_cases=test_cases# 标注好的测试集defevaluate(self,agent_system):results=[]forcaseinself.test_cases:# 执行result=agent_system.run(case["input"])# 评估维度score={"正确性":self._check_correctness(result,case["expected"]),"完整性":self._check_completeness(result,case["requirements"]),"效率":self._check_efficiency(result["token_usage"],result["time_taken"]),"成本":result["token_usage"]["total_cost"],}results.append(score)# 汇总return{"平均正确性":np.mean([r["正确性"]forrinresults]),"平均完整性":np.mean([r["完整性"]forrinresults]),"平均Token消耗":np.mean([r["成本"]forrinresults]),"平均耗时":np.mean([r["效率"]["time_taken"]forrinresults]),}关键:评估不是一次性的。每次修改架构、工具描述、Prompt,都要跑一遍评估,看分数是上升了还是下降了。
没有评估体系的后果
Anthropic在一个案例研究中提到(Claude 3.5发布会,2024):
一个团队花了2周优化多智能体系统的Prompt,感觉"效果好多了"。但跑评估后发现,正确性从82%降到了79%,Token消耗增加了40%。没有评估,感觉会骗人。
整合:五层差距来源总结
| 层 | 差距来源 | 影响权重 | 改进难度 | 改进优先级 |
|---|---|---|---|---|
| 架构设计 | 选错架构模式,智能体协作低效 | 30% | 中 | ⭐⭐⭐⭐⭐ |
| 工具设计 | 工具描述差,模型选错/用错工具 | 25% | 低 | ⭐⭐⭐⭐⭐ |
| 上下文管理 | Token浪费,关键信息丢失 | 20% | 中 | ⭐⭐⭐⭐ |
| 编排策略 | 任务分解不合理,overhead过高 | 15% | 高 | ⭐⭐⭐ |
| 评估体系 | 不知道好坏,盲目优化 | 10% | 中 | ⭐⭐⭐⭐ |
最重要的发现:改进难度最低、收益最高的是工具设计。花2天重写工具描述,效果可能比换一个更强的模型还好。
最难但最值得的是架构设计。架构选错了,后面所有优化都是修修补补,解决不了根本问题。
回到开头:Anthropic和Devin,谁对谁错?
都对。
Anthropic的场景:SWE-bench Verified,任务明确(修复bug),可以很好地进行任务分解(Planner分解→Executor执行→Reviewer检查),评估标准清晰(测试用例是否通过)。这种场景,多智能体就是比单智能体强。
Devin的场景:通用编程助手,任务不确定(用户可能让它"帮我优化这段代码"也可能让它"写一个网站"),任务分解困难,智能体之间需要频繁通信协调。这种场景,多智能体确实脆弱且昂贵。
结论:多智能体不是银弹。它适合任务可分解、子任务相对独立、评估标准清晰的场景。不适合任务模糊、需要频繁协调、子任务强依赖的场景。
大多数效果差的多智能体系统,不是模型不行,是把它用在了不适合的场景。
给你的行动清单
如果你想搭建一个效果好的多智能体系统:
第1步(1天):确认你的任务是否适合多智能体。用上面的决策树判断。不适合就别硬上。
第2步(2-3天):设计工具,写好工具描述。这是投入产出比最高的一步。
第3步(3-5天):选择架构模式,先集中式(1主+2-3子),验证可行再考虑更复杂的。
第4步(2天):实现上下文管理,用分层记忆,不要无脑全塞。
第5步(持续):建立评估体系。每次改动都跑分,用数据说话,不用感觉。
最后一句话
多智能体系统的智能,90%不在模型里。在架构里,在工具里,在上下文里,在编排里,在评估里。
模型是引擎。但引擎再强,传动系统、底盘、方向盘不行,车还是开不快。
大多数人只关心换引擎。专业的人关心整辆车。
数据来源
- Anthropic官方博客"Introducing Claude 3.5 Sonnet"(2024-06):工具描述优化后工具选择准确率从68%→94%
- Devin官方博客"Why multi-agent systems are fragile"(2025):多智能体Token消耗是单智能体的15倍
- Anthropic SWE-bench Verified测试结果(2025):多智能体相比单智能体性能提升90.2%
- 斯坦福HAI 2026年AI指数报告:中美顶级模型性能差距收窄至2.7%
- 《自动化学报》2025年第3期"多智能体系统发展新篇章:从应用到理论的全面深化"
- CSDN"大模型多智能体架构全解析:四种模式对比、性能评估与应用场景"(2025)
- Gartner"智能体AI存在价值差距 传统ROI模型难以弥合"(2026)