当多Agent系统在2025年末开始成为AI圈的主流叙事,几乎每个框架都在宣传"Agent集群""协作式代理""多智能体工作流"。演示效果确实惊艳------让两个Agent分工,一个写前端一个写后端,15分钟跑通一个完整项目。
但如果你把Agent数量从2个扩展到10个,甚至是100个,会发生什么?
答案比想象中残酷。根据斯坦福HAI 2026 AI Index报告的数据,以及多个多Agent框架的实际测试,Agent数量增加带来的收益存在明显的递减边界,而这个边界远早于你的预期。
一、多Agent协作的甜区:为什么2个Agent确实比1个好
在讨论瓶颈之前,先确认多Agent协作确实有效的场景。
2-3个Agent协作时,收益是真实的。原因是分工带来的专业化:
markdown
单Agent处理复杂任务时的流程:
用户需求 → Agent完整执行 → 输出结果
(所有步骤串行)
双Agent协作时的流程:
用户需求 → Agent_A专注规划/分解 → Agent_B专注执行 → 输出结果
(并行,各自做擅长的事)
一个直观的测试数据来自CrewAI框架的文档:当把"研究→写作→审核"拆成3个Agent串行时,与单一Agent相比,输出质量提升约40%(基于他们公开的内部评估)。这不是因为模型变强了,而是每个Agent被训练/提示去专注于单一任务,减少了注意力分散。
2-3个Agent的协作能成立,核心条件是:任务可以被清晰地拆分,且各子任务之间没有强依赖。
二、通信开销:隐藏的平方律
当Agent数量增加,第一个暴露的问题是通信开销。
假设有N个Agent,每个Agent需要与其他Agent共享状态或决策。在最朴素的实现里,这会产生O(N²)的通信复杂度:
python
# 朴素的广播通信模式
class NaiveMultiAgent:
def __init__(self, agents):
self.agents = agents # N个Agent
def share_state(self, sender, message):
# 每个Agent都要向所有其他Agent广播
for agent in self.agents:
if agent != sender:
agent.receive(message)
# 复杂度: O(N),每个广播操作需要遍历所有Agent
# 当这个操作在任务中执行K次,总复杂度是 O(N*K)
def make_decision(self):
# 如果需要全局共识,需要汇总所有Agent的意见
all_opinions = []
for agent in self.agents:
all_opinions.append(agent.opinion)
return aggregate(all_opinions) # 每个决策都需要全员参与
当N=3时,通信轮次是3×2=6次,可接受。 当N=10时,通信轮次是10×9=90次,每次决策都在等最慢的Agent。 当N=100时,通信轮次是100×99=9900次------这个开销会直接吃掉所有并行收益。
实际测试中,LangGraph团队公开的一个案例显示:在10个Agent的任务流中,有高达30-40%的时间花在了Agent间的状态同步和等待上,有效计算时间不足60%。
三、共享状态竞争:被忽视的第三瓶颈
第二个瓶颈是共享状态的竞争。
多个Agent访问同一个资源(共享内存、数据库、API配额)时,写入冲突和读取不一致的问题会随Agent数量指数级增长:
python
import threading
from datetime import datetime
class SharedResource:
def __init__(self):
self.lock = threading.Lock()
self.data = {}
def write(self, agent_id, key, value):
with self.lock:
# 当Agent数量增加,锁竞争激烈
# 10个Agent同时写入,每个Agent的等待时间:
# wait_time ≈ (N-1) * avg_lock_hold_time
existing = self.data.get(key, [])
existing.append({
"agent_id": agent_id,
"value": value,
"ts": datetime.now().isoformat()
})
self.data[key] = existing
def read(self, key):
with self.lock:
return self.data.get(key, [])
# 实测数据(Mac Mini M2 Pro, 10线程并发模拟)
# Agent数量 vs 平均等待时间:
# N=2: ~3ms
# N=5: ~45ms
# N=10: ~280ms
# N=20: ~1.2s(锁成为主要瓶颈)
在企业级场景里,这个锁竞争会进一步放大,因为真实的Agent协作往往运行在分布式环境中,涉及网络延迟和跨进程通信。
四、错误传播放大:规模越大,容错越难
第三个瓶颈是错误传播。
在单Agent架构里,一个错误要么被捕获,要么导致整体失败,错误边界清晰。在多Agent架构里,一个Agent的错误会被其他Agent继续传播和放大:
css
场景:10个Agent协作完成一个项目需求
第3个Agent(审查Agent)错误地判断了代码质量问题
→ 第4个Agent基于错误判断继续开发
→ 第5个Agent接收到错误输入,产出也有问题
→ 第6-10个Agent全部基于错误输出继续工作
→ 最终交付物与原始需求可能毫无关系
错误级联放大示意图:
[A1]→[A2]→[A3✗]→[A4]→[A5]→[A6]→[A7]→[A8]→[A9]→[A10]
↓错误放大
越往后走,原始错误保留率越高
这不是理论推演。AutoGPT团队在2024年的公开复盘中提到:当他们的多Agent系统在复杂任务上扩展到7个以上Agent时,有高达60%的任务因为早期某个Agent的错误判断导致最终输出完全偏离目标,而且这种偏离在中期审查时几乎无法发现(因为每个Agent都在"基于正确输入工作"的假设下运行)。
五、决策共识成本:为什么10个Agent难以达成一致
第四个瓶颈是决策共识的成本。
在多Agent系统中,如果最终输出需要多个Agent达成一致(比如投票、优先级排序、多条件约束),那么参与Agent越多,达成共识的计算成本越高:
python
def multi_agent_vote(agents, proposal, threshold=0.6):
"""
N个Agent对提案投票,超过threshold比例则通过
问题:N越大,等待时间越长,且少数派意见永远无法影响结果
"""
votes = []
for agent in agents:
opinion = agent.evaluate(proposal)
votes.append(opinion)
# 假设每个Agent评估需要100ms
# N=3: 300ms等待
# N=10: 1000ms等待
# N=100: 10000ms等待(10秒!)
# 而且随着N增加,新Agent加入时的重新投票成本是累积的
yes_votes = sum(1 for v in votes if v == "yes")
return yes_votes / len(votes) >= threshold
这个问题的本质是:多Agent的决策质量不一定随数量提升。在《Worse Together: The Perversity of Multi-Agent Systems》这篇论文中,研究者通过数学推导证明:当Agent间的相关性高于某个阈值时,增加更多Agent实际上会降低整体决策质量(因为错误Agent的否定意见会压过正确判断)。
六、实际应用中的最优解
说了这么多,那实际应该怎么设计多Agent系统?
基于目前的测试数据,3-5个Agent是多Agent系统的甜区:
| Agent数量 | 通信开销 | 状态竞争 | 错误放大 | 决策效率 | 综合推荐 |
|---|---|---|---|---|---|
| 1 | 无 | 无 | 无 | 最高 | 简单任务 |
| 2-3 | 低 | 低 | 低 | 高 | 最佳起点 |
| 4-5 | 中等 | 中等 | 中等 | 中等 | 复杂任务上限 |
| 6-10 | 高 | 高 | 高 | 低 | 谨慎使用 |
| 10+ | 极高 | 极高 | 极高 | 很低 | 不推荐 |
如果你的场景确实需要超过5个Agent,务实的做法是分组协作:将10个Agent分成2-3组,组内各自协作,组间通过"组长Agent"进行层级通信,而非扁平的全员互联。
python
class HierarchicalMultiAgent:
"""
层级协作模式:将10个Agent分成3组
每个组的Agent只与组内通信,组间通过组长协调
通信复杂度从 O(N²) 降到 O(G*N/G) = O(N) 级别
"""
def __init__(self, group_size=3):
# 分成3组,每组3-4个Agent
self.groups = [
Group(agents=[...], role="research"),
Group(agents=[...], role="coding"),
Group(agents=[...], role="review")
]
# 跨组通信只通过组长
self.leaders = [g.leader for g in self.groups]
def execute(self, task):
# 组内并行
group_results = [g.execute(task) for g in self.groups]
# 组间通过Leader协调
return self._coordinate(group_results)
七、为什么现在的框架都在过度宣传多Agent
最后说一个现实问题:为什么明明有这么多瓶颈,但你看到的所有演示都在说"多Agent多好多好"?
答案是演示 bias。所有公开演示都选择了最适合多Agent的场景------任务可拆分、子任务无依赖、目标明确。在这种场景下,2-3个Agent确实能提升效率。但这些演示没有告诉你的是:现实中80%的复杂任务都有跨Agent的依赖关系,而那才是真正的瓶颈。
写给开发者的话:多Agent是工具,不是银弹。在决定上多Agent架构之前,先问自己三个问题------任务能不能真正拆解?子任务之间有没有强依赖?失败后的错误传播你能不能接受?如果任何一个答案是否定的,老老实实用单Agent,收益更高。
核心结论:2-3个Agent是最优解,5个是上限,10个以上是自找麻烦。