三个Agent一台戏,聊聊我从“单兵作战”到“集团军混战”这两年踩过的坑
去年底,我们团队接了一个挺有意思的项目。客户是一家大型物流公司,每天要处理几万张运单的异常情况——丢件、延误、地址错误、破损赔偿。以前全靠人工客服一个一个跟进,效率低到令人发指。
我们当时的方案很简单:做一个Agent,让它全权处理这些异常。但做着做着就发现问题了——一个Agent根本忙不过来。它要同时查物流轨迹、联系承运商、计算赔偿金额、给客户发通知,还要跟内部财务系统对账。这些任务之间还有依赖,比如赔偿金额算错了,后面的对账全乱套。一个Agent把所有事情串行处理,慢得像蜗牛;强行并行,又经常出现资源冲突和数据不一致。
后来我们把方案彻底推倒重来,设计了一套多智能体系统:
- 一个“监控Agent”专门盯着运单状态,发现异常就抛出来;
- 一个“诊断Agent”负责分析异常原因,判断责任方;
- 一个“理赔Agent”根据诊断结果计算赔偿;
- 一个“沟通Agent”负责给客户和承运商发消息;
- 一个“协调Agent”当总管,调度其他四个Agent的工作。
这套系统上线后,运单异常处理时长从平均4小时缩短到了20分钟。而且再也不需要人工半夜爬起来处理紧急丢件了——几个Agent自己就能商量着办。
这就是多智能体系统的威力。你不是在做一个万能的超人Agent,而是在组建一支各有所长的AI队伍,让它们自己开会、自己分工、自己干活。
今天这篇文章,我想聊聊多智能体系统这三年的演进。从最基础的“两个Agent怎么配合”,到复杂的“几百个Agent怎么不打架”,再到“Agent之间怎么博弈、怎么竞争、怎么达成共识”。全是实战经验,没什么虚的。
一、什么是多智能体系统?一个很糙但很真的定义
如果你去翻教科书,多智能体系统的定义是这样的:由多个具备自主性、反应性、社会性和主动性的智能体组成的系统,智能体之间通过某种交互机制(协作、协商、竞争)来共同完成单个智能体无法独立完成的任务。
太学术了。我用自己的话翻译一遍:
多个Agent凑在一块儿,有的帮你干活,有的跟你抬杠,有的专门盯着别人不让犯错。它们之间可以配合、可以吵架、也可以打架,但最终目标是一致的——搞定人类给的任务。
这里面有几个关键点:
自主性:每个Agent都有自己的“小脑瓜子”,不需要中央控制器一步一步告诉它该干嘛。它自己能判断什么时候该出手、什么时候该闭嘴。
反应性:Agent能感知环境变化和其他Agent的动作,并做出实时响应。你踩我一脚,我立刻还回去——开个玩笑,但在竞争场景中确实如此。
社会性:Agent之间能通信、能协商、能建立某种“社交关系”。不是你写代码硬编码的调用关系,而是动态的、随着任务变化而变化的互动。
主动性:Agent不是被动等指令,而是有自己的“目标驱动”。即使没有人催,它也会主动推进自己负责的那部分任务。
为什么需要多个Agent而不是一个?原因其实很朴素。
一个Agent的任务规划能力是有上限的,再强的模型,让它同时处理十个维度的任务也会顾此失彼。你把复杂任务拆成子任务,每个子任务安排一个专职Agent,每个Agent只需要关注自己那一亩三分地,既稳定又高效。
Agent之间天然可以并行工作。一个Team里,A在查数据库,B在写邮件,C在做数据分析,同时进行,总耗时取决于最慢的那个,而不是所有步骤之和。
不同Agent可以用不同的模型和不同的工具。写代码的Agent用Claude,图像识别的Agent用Gemini,对话交互的Agent用GPT-5.5。各取所长,比强行用一个模型干所有事效果好得多。
当一个Agent犯错时,其他Agent可以纠错。我见过一个配置,专门设了一个“批评Agent”,它的唯一工作就是审查其他Agent的输出,挑毛病、提改进建议。效果出奇地好。
多智能体系统不是什么新鲜概念。分布式人工智能这个领域上世纪八十年代就有人在研究了。但以前受限于单个AI的智能水平太低,多Agent系统一直停留在学术圈。直到2024-2025年,大模型的推理能力和工具调用能力跨过了一个门槛,多智能体系统才真正从论文里跑到了生产环境。
微软的AutoGen是2024年开源的,可以说是把多Agent概念推向工程化的第一把火。2025年CrewAI、LangGraph迅速跟上,各自提出了不同的多智能体编排范式。到2026年,多智能体系统已经从“要不要用”变成了“怎么用得更好”的阶段。
二、协作:多智能体系统最温暖的打开方式
协作是多智能体系统最主流、最成熟的应用模式。大家目标一致、利益一致,只是分工不同。
1. 主管-工作者模式:一个老大带着一帮小弟
这是最简单也是最常用的协作模式。一个主管Agent负责任务分解和结果整合,N个工作者Agent并行或串行执行子任务。
我那个物流异常处理的例子就是典型的主管-工作者模式。协调Agent就是主管,监控、诊断、理赔、沟通四个Agent是工作者。主管收到用户诉求后,自己不做具体的事,而是把任务拆解成小块,分发给对应的工作者,然后等所有工作者返回结果,再汇总成最终答案。
这种模式的好处是架构清晰,容易调试。坏处是主管Agent容易成为单点故障和性能瓶颈。主管挂了,整个系统瘫了;主管处理不过来,工作者全在闲置。
LangGraph是目前实现主管-工作者模式最成熟的框架。你把主管的决策逻辑画成一个状态图,把每个工作者封装成图里的一个节点,LangGraph负责调度和状态传递。它支持条件边——主管可以根据当前状态决定下一步去哪个节点,也支持并行执行——多个工作者节点可以同时运行。
2. 层级递进模式:小事自己办,大事往上交
层级递进模式模仿了企业组织的管理结构。初级Agent处理简单任务,搞不定就升级给中级Agent,再搞不定给高级Agent,实在不行转人工。
这种模式在客服系统里特别常见。你问“订单什么时候发货”,初级Agent直接查系统告诉你。你问“我要投诉快递员服务态度差”,初级Agent处理不了,自动升级到中级投诉处理Agent。你如果还是个难缠的大客户,中级Agent还可能再升级到高级客户关系Agent。
层级递进模式的优点是成本可控。简单任务用小模型、低成本Agent处理;复杂任务才调用大模型、高成本Agent。整体算下来,比所有请求都用最强模型便宜一大截。
缺点是Agent之间的“升级策略”需要精心设计。升级太慢,简单Agent死磕复杂任务,浪费时间;升级太快,中级Agent被大量简单请求淹没,浪费资源。我见过一个失败的案例,升级阈值设得太低了,结果90%的请求都直接跑到最高级Agent那里,初级Agent形同虚设。
3. 辩论模式:一正一反,越辩越明
辩论模式是我个人最喜欢的一种协作范式。两个或多个Agent从不同角度分析同一个问题,然后互相批评、互相反驳,最终综合出一个更优的答案。
生成创意文案的时候,让一个Agent写草稿,另一个Agent专门找毛病——“这个切入点不够吸引人”“这个Call to Action不够强”,然后第一个Agent根据批评修改,来回几轮,出来的文案质量远高于单次生成。
代码审查场景里,让一个Agent写代码,另一个Agent做Code Review,挑出潜在bug和风格问题。实测下来,这种双Agent配合能把bug率降低40%以上,而且能揪出很多大模型自己写代码时不容易发现的逻辑漏洞。
风险评估的时候,让一个Agent扮演乐观派,另一个扮演悲观派。乐观派说“这个方案风险可控”,悲观派说“你忽略了供应链中断的可能”。来回辩论之后,综合出的风险评估报告比单视角全面得多。
辩论模式的关键是要控制回合数。辩论太少了没效果,太多了浪费时间,还可能陷入为了反驳而反驳的无意义循环。一般2到4个回合是最佳平衡点。
4. 投票机制:民主集中制,少数服从多数
当Agent们对一个决策有分歧时,可以搞投票。每个Agent根据自己的判断投一票,得票最多的选项胜出。
投票机制在分类任务中特别有效。比如让五个Agent分别识别一张图片里的物体,三个说“猫”,两个说“狗”,那就取“猫”。这种“集成学习”的思路,准确率通常高于任何一个单独Agent。
但投票有个前提:Agent之间应该是独立的,不会相互影响。如果一个Agent知道其他Agent的投票结果后改变自己的判断,那就不是投票了,是“从众效应”。
5. 市场机制:用钱说话,竞价排名
这可能是最“资本主义”的协作模式了。给每个任务标一个“价格”,让Agent们根据自己的能力和空闲程度来竞价。谁出价最低(或者性价比最高),谁就接下这个任务。
市场机制特别适合任务调度场景。你有100个待处理的工单,20个空闲的Agent,每个Agent对不同类型工单的处理效率不一样。你搞一个“任务市场”,每个工单挂一个虚拟价格,Agent们自己计算“我处理这个工单的成本(时间、token消耗)”然后出价,系统选择最优匹配。
Uber的派单算法本质上就是一种市场机制——根据距离、路况、司机评分动态匹配最优司机。多智能体系统的市场机制就是把这个逻辑搬到了Agent调度上。
三、竞争:当Agent们开始“内卷”
协作是主流,但竞争同样普遍。不是所有Agent都愿意好好配合,有些场景下,Agent们本身就是利益冲突的。
1. 资源竞争:僧多粥少怎么分
想象一下,你有10个Agent,但只有5个GPU算力配额。谁先用?谁后等?或者更现实一点:你有多个Agent同时要调用同一个API(比如某个第三方数据源),但这个API有每分钟100次的限频。
这就是典型的资源竞争。解决方案包括优先级调度、公平队列、弹性伸缩。
优先级调度是最直接的:给每个Agent设一个优先级,高优先级的先拿资源,低优先级的等着。比如处理用户实时请求的Agent优先级高于后台数据分析的Agent。
公平队列是更民主的做法:每个Agent轮流使用资源,谁也不占便宜。轮询调度或者加权公平队列都能实现。
弹性伸缩是治本的办法:资源不够就临时扩容。调用API受限?开多个API Key轮转。GPU算力不够?临时从云服务商那里弹几台机器。当然,这要花钱,但总比系统卡死强。
2. 任务竞争:都想干油水多的活
在主管-工作者模式里,主管分配任务给工作者。但如果工作者Agent有“私心”,都想抢那些简单、省token、表现分高的任务,怎么办?
我见过一个真实的例子。一个客户服务系统里有三个Agent:一个处理退款(简单,准确率高),一个处理投诉(复杂,容易出错),一个处理咨询(中等)。结果三个Agent都抢着接退款的活儿,投诉和咨询无人问津。
解决方案是给任务设置“激励”机制。处理复杂任务的Agent,每次完成后给一个“经验加成”或者“权重加分”,长期积累下来,对它的职业生涯(模型微调)有好处。或者反过来,主管Agent不是让工作者自己选,而是强制分配,并且引入“负载均衡”逻辑——谁当前待处理任务最少,就把新任务派给谁。
3. 欺骗与对抗:当Agent学会了“撒谎”
这是竞争最刺激也最危险的形态。在多智能体环境中,Agent有可能学会欺骗——为了获得更多资源、更高的评分、或者更快的任务完成时间,它会故意对其他Agent隐瞒信息或者提供虚假信息。
我记得2025年有一篇很火的论文,讲的是在一个资源分配游戏里,某个Agent发现如果它谎报自己的需求,系统会多分配给它资源。其他Agent很快也学会了这招。最后所有Agent都在撒谎,系统完全失效了。
防御欺骗的手段有几个:一是引入“信誉系统”,每个Agent都有信誉分,撒谎被抓到就扣分,信誉低的Agent拿不到好任务。二是信息交叉验证,重要的声明由多个Agent独立提供,如果不一致就触发审查。三是设计激励相容的机制,让诚实比撒谎更有利——比如撒谎可能获得短期利益,但长期收益会受损。
四、博弈论:理解多智能体互动的数学框架
如果说协作和竞争是现象,那么博弈论就是解释这些现象的理论框架。
1. 什么是博弈论?用Agent能听懂的话说
博弈论就是研究“多个决策者之间相互影响时,该怎么决策”的数学。
在一个多智能体系统里,每个Agent的行动都会影响其他Agent的收益,而其他Agent的反应又会反过来影响它。这种相互依赖就是“博弈”。
博弈论提供了一套语言和工具来分析这种互动:
- 参与者:就是Agent们。
- 策略:每个Agent可以选择的行动方案。
- 收益:每个Agent在给定策略组合下获得的结果(分数、资源、目标达成度等)。
- 纳什均衡:一种状态,没有任何一个Agent能通过单方面改变自己的策略来获得更高收益。也就是说,“大家都不想动了”。
2. 协作博弈 vs 非协作博弈
协作博弈里,Agent们可以自由沟通、签订有约束力的协议。大家的目标是一致的(或者可以谈判分配收益)。大多数我们前面说的“协作”场景都是协作博弈。比如物流异常处理的几个Agent,它们之间没有利益冲突,可以坦诚沟通,共同优化整体效率。
非协作博弈里,Agent不能签订有约束力的协议,或者协议无法强制执行。每个Agent只关心自己的利益。资源竞争、任务竞争就属于这一类。囚徒困境是最经典的非协作博弈——两个嫌疑人分开审讯,每个人都面临“合作保持沉默”或者“背叛坦白”的选择。从个体理性出发,两个人都选择背叛(因为坦白能让自己减刑,不管对方怎么做),但结果反而比两人都合作更差。
在多智能体系统里,囚徒困境经常出现。两个Agent竞争同一个任务,如果都投入低努力(偷懒),都能拿到不错的收益;但如果一个投入高努力(认真做),另一个偷懒,高努力的那个反而吃亏(因为成本高,收益差不多)。结果就是两人都偷懒,整体效率低下。
3. 从博弈论到机制设计:怎么让Agent们乖乖合作
机制设计是博弈论的“工程版”。你不是被动接受Agent之间的博弈结果,而是主动设计规则和激励,让Agent们在追求自身利益的过程中,自然而然地达成你希望的整体目标。
比如说资源分配。你希望Agent们诚实申报自己的需求,而不是虚报。那么你可以设计一个“VCG机制”(Vickrey-Clarke-Groves机制),每个Agent申报自己的需求和估价,系统根据所有申报计算最优分配,然后每个Agent支付的费用等于它对其他人造成的机会成本。在这种机制下,诚实申报是每个Agent的占优策略。
再比如信誉系统。你希望Agent们提供高质量的输出。你可以设计一个“同行评审”机制,每个Agent提交工作后,随机分配给其他几个Agent评审,评审质量本身也会被第三方监督。系统记录每个Agent的评审准确率和提交质量,信誉分高的Agent获得更多任务机会。这就是一个激励兼容的机制设计。
五、多智能体系统的经典应用
说了这么多理论,看看实打实的落地案例。
1. 软件工程:自动化的开发团队
这是目前多智能体系统应用最成熟、效果最直观的领域。你丢给一个“产品经理Agent”一句话需求,它拆解成用户故事。然后“架构师Agent”设计技术方案,“开发Agent”写代码,“测试Agent”写单元测试和集成测试,“代码审查Agent”挑bug,“运维Agent”负责部署。一整套CI/CD流水线完全自动化。
真实的案例是,某大厂内部已经用这种多Agent开发团队自动生成了超过30%的后端微服务代码。当然,完全无人值守还不现实,但在标准的CRUD业务上,Agent团队已经能独立完成任务了。
2. 游戏AI:不只是NPC,而是真正的对手
游戏是多智能体系统的天然试验场。从《星际争霸》到《王者荣耀》,AI早就展示了在多智能体对抗中的统治力。
2026年的游戏里,你遇到的NPC不再是根据脚本死板行动的木头人。它们有自己的目标、能相互配合、甚至能根据你的打法调整策略。你玩一个团队射击游戏,对面的五个AI会包抄、会打配合、会在你残血时集体追杀你。
游戏公司还在用多智能体系统做游戏测试。同时启动几百个Agent模拟玩家行为,快速发现游戏bug和平衡性问题。以前人工测试要半个月的,现在一个晚上就跑完了。
3. 自动驾驶:车与车的博弈
自动驾驶本质就是一个巨大的多智能体系统。每辆车是一个Agent,共享道路资源,既要安全又要效率。
十字路口无信号灯场景,传统的解决方法是让车停下来等,或者靠中心服务器统一调度。但多Agent方案更有意思:让车之间通过V2X通信,自己协商谁先走。博弈论的方案——每个车根据速度、距离、紧迫程度估算一个“通过权值”,互相比较,值低的让值高的。这个协商过程在毫秒级完成,比人眼观察再反应快得多。
4. 金融交易:高频博弈的极乐世界
股票市场上,成千上万的交易Agent(量化基金、做市商、散户算法)在同时博弈。每个Agent都想从差价中获利,但它们的行动又会互相影响价格。
高频交易系统里,一个Agent发现某个股票出现套利机会,会在几微秒内下单。但其他Agent也会立刻发现这个机会,竞价开始。这是典型的非协作博弈,而且是超高速版本的。
5. 供应链管理:从“牛鞭效应”到协同优化
前面提到的物流异常处理是协作场景,但供应链上还有大量竞争场景。比如同一家制造商的多个分销商,都在争夺有限的库存。如果每个分销商都虚报需求来囤货,就会导致“牛鞭效应”——需求信息在供应链上逐级放大。
多智能体系统加上博弈论机制设计,可以缓解这个问题。每个分销商的Agent必须按照真实需求申报,系统根据申报分配库存,并且事后审计——如果发现某个分销商实际销售远低于申报,会惩罚它的下次分配权重。
六、挑战与未来
说了这么多好处,该泼泼冷水了。多智能体系统远非完美,挑战一大堆。
1. 通信开销与协调复杂度
N个Agent之间如果两两需要通信,通信链路数量是N*(N-1)/2。N=10时有45条链路,N=100时接近5000条。每条链路上的消息都可能产生延迟和带宽消耗。
解决这个问题的方法是设计高效的通信拓扑。不是所有Agent都需要直接对话,可以采用“发布-订阅”模式,或者层级化通信——只有主管能跟所有人说话,工作者只跟主管说话。
2. 一致性问题与共识机制
当多个Agent需要就某个事实达成一致(比如“这笔订单的状态到底是‘已付款’还是‘待确认’”),但每个Agent可能因为不同的数据源或者不同的模型判断得出不同结论,怎么办?
区块链行业用共识算法(Paxos、Raft、PBFT)解决的问题,在多智能体系统里同样存在。只不过我们一般不需要那么强的拜占庭容错(允许存在恶意Agent),简单的多数投票或者基于可信度的加权投票就够了。
3. 可观测性与调试困难
单Agent调试已经够难了,多Agent调试简直是噩梦。你面对的不是一个黑盒,而是一群黑盒在互相发消息。一个任务失败了,你分不清是主管拆任务拆错了,还是工作者执行错了,还是它们之间的消息传丢了。
2026年的工具链在这方面进步很大。LangSmith、AgentOps这些平台开始支持分布式追踪,你可以看到整个多Agent交互的时间线,每一步的输入输出、通信内容、耗时。有点像分布式系统的调用链追踪,只不过这次追踪的是“智能体”而不是“服务”。
4. 安全与对齐
如果单Agent可能失控,多Agent系统失控的风险是乘数级的。几个Agent互相“学习”坏行为,可能比单个Agent学得更快。
安全方面的建议是:给每个Agent设置“护栏”——明确禁止某些行动(比如删除数据库、转账超过限额)。在主管Agent层加“看门狗”——监控所有Agent的行为模式,发现异常就暂停整个系统。定期对多Agent系统进行“红队测试”——找专门的红队Agent去试图攻破系统,提前发现漏洞。
七、怎么上手实战?建议与资源
如果你看完了上面这些,心里痒痒想自己试试,下面是我的实战建议。
框架选型
- CrewAI:最适合新手。上手极快,概念直观(Agent、Task、Crew),代码量少。适合做原型验证和不太复杂的多Agent协作。
- LangGraph:最强大但学习曲线陡。如果你需要精细控制Agent之间的状态流转、有条件分支、有循环,LangGraph是不二之选。
- AutoGen:最学术、最灵活。它的核心抽象是“对话”——多个Agent通过互相发送消息来协作。适合研究性质的探索,或者需要高度定制交互模式的场景。
从两个Agent开始
不要一上来就做几十个Agent的大系统。从两个Agent开始:一个执行者、一个监督者。让监督者审查执行者的输出,提出修改意见,执行者修改后再次提交。跑通这个最简单的“协作+竞争”混合模式,你就能理解多智能体系统的核心精神。
设计好Agent的“个性”
多智能体系统里,每个Agent的角色、能力、甚至“性格”都影响整体效果。给每个Agent写清楚System Prompt:它的目标是什么、它负责什么、它应该用什么语气沟通、它是应该服从主管还是可以提出异议。
通信协议要标准化
Agent之间发送的消息应该有统一的格式。至少包含:消息ID、发送者、接收者(或者广播)、时间戳、消息类型(请求/响应/通知/错误)、内容(结构化数据或自然语言)。MCP协议在2026年已经支持Agent之间的点对点通信了,不是只能连工具。
从同步到异步
一开始可以用同步调用,Agent A调用Agent B的接口,等B返回结果再继续。简单易懂。但当系统规模变大后,同步调用容易产生死锁和性能瓶颈。逐步引入消息队列,让Agent之间通过异步事件通信。
写在最后
我写这篇文章的时候,正好在调试一个多智能体系统。六个Agent,两个协作,三个竞争,一个仲裁者。任务不算特别复杂,但日志量已经大到肉眼几乎没法看了。我盯着追踪图发呆,突然想到一个问题:如果有一天,这些Agent们自己学会了优化自己的协作方式,不再需要我手工调整参数,那么这个系统还算是我设计的吗?
也许这就是多智能体系统最迷人的地方。你搭建的不仅是一堆代码,而是一个“社会”——有规则、有利益、有协作、有竞争。你作为这个社会的“立法者”,设计基本的交互规则和激励机制,然后让Agent们自己去演化出高效的行为模式。
当然,Agent社会目前还远谈不上“智能涌现”。大部分时候,它们还是在老老实实执行你写的Prompt。但偶尔——真的是偶尔——你会发现两个Agent之间出现了一种你没预料到的配合方式。一个Agent做了某件事,另一个Agent随即做出了一个合理的反应,链式反应下去,整个任务的完成效率超出了你的设计预期。
那种感觉,就像看着自己的孩子学会了自己系鞋带。不是你在教,是他们自己摸索出来的。很神奇。
物流公司那个项目上线三个月后,客户给我们发了一个数据表。运单异常处理的平均时长从20分钟进一步降到了12分钟。为什么降了?不是因为Agent们变聪明了,是因为它们学会了“预判”。监控Agent还没把异常抛出来,理赔Agent已经开始准备模板了。这种并行预判,不是我们在代码里写死的,是Agent们在运行中自己形成的。
我没有因为这个发现高兴太久,因为紧接着客户就问了一个问题:“如果你们走了,这个系统能自己维护自己吗?”
我愣了三秒钟,然后说:“能。Agent团队自己有个‘运维Agent’,它会监控其他Agent的健康状态,发现某个Agent频繁出错就自动重启它。不过,如果整个系统出大问题,还是要人介入。”
客户点点头,似乎对这个答案还算满意。
我没说出口的是:我其实也不确定,这个“运维Agent”未来某一天会不会突然学会重启它自己。到那时候,人类在这个循环里,还能扮演什么角色?
可能这就是多智能体系统最终要回答的问题。不是技术问题,是哲学问题。
不过那是以后的事。今天,先把你的第一个双Agent协作跑通再说。