Derek Wang 复盘从单 Agent 到多 Agent swarm 的工程陷阱:调度失控、状态一致性、Agent 间通信开销等核心问题,类比蜂群无中心调度的局部规则设计。
Kevin Kelly 在《失控》中描述过一个画面,反复琢磨总觉得哪里不对,直到你停下来仔细想:蜂巢里没有发号施令的蜂后,也没有中央指挥塔,然而成千上万只蜜蜂却能筑巢、采蜜、迁徙,彼此不撞、不吵、也不会在协调工作上浪费一个劳动力。"蜂后"名曰"后",却从不发号施令。真正的调度藏在每只蜜蜂遵循的本地规则里——我要去采蜜吗?去哪?什么时候换活儿?
本文要说的和这个比喻如出一辙,只不过把蜜蜂换成了模型。一个强大的 Agent 不是一个能干活的多 agent 系统。前七篇文章讲的是如何驾驭单个 AI——引导模型生成什么、约束力量的落点。而这篇文章要问的是业界一直在回避的问题:当你有了几个训练有素、有资金支持、彼此自主的劳动者同做一个任务时,如何不让它们的成本超过它们创造的价值?
串行是诚实的默认,直到它不再是
很长一段时间我都把多步骤工作串行执行:一个 Agent 从头做到尾,每个阶段完成后把结果交给下一个。这看起来很安全,因为场上永远只有一个 worker,不存在协调成本。但它有一个很快就会触到的天花板。耗时线性增长,而耐心是唯一永远无法scale 的资产。感受到的成本不是算术意义上的,而是你开始畏惧一条本可以并行运行的长链路——那种感觉。
所以我把一个全能选手换成了一个专家组,每人负责一段。两步操作让并行变成了现实。
让并行真正落地的两步
第一步,切分。把单个 Agent 以前独自承包的整段工作,拆成能同时运行、相互独立的子任务。让我彻底信服的数字:同一个事实核查任务,单个串行 Agent 要花稳定的四十五分钟完成,一旦变成七条并行车道同样的结果几分钟就出来了 [ORIGINAL DATA]。没有新增硬件,只是让工作队列不再排一个人。
第二步,决定谁来分配。我们没有建一个中央调度大脑。我们借用了蜂巢和现代操作系统早已搞定的东西——work stealing(工作窃取)。每个 Agent 维护自己的队列;空闲的 Agent 不等待,而是去偷别人队列里还在排队的任务。谁有空谁拿,谁积压最多谁被稀释。这听起来像陈词滥调,但它确实解决了一个真正棘手的失败模式:固定分配时总有那么一刻,一个 Agent 排着长队等待,另一个却闲得发慌。实际工作从来不是均匀的,所以固定的劳动分工迟早会崩。Work stealing 把"队列里的人做"换成了"有空的人做"。
看门狗:多 agent 存在的理由
拆分最令人信服的理由不是省了那几分钟,而是这种结构带来的自动恢复能力。
有段时间我被一个反复出现的情况折磨:一个 Agent 在任务中途卡住,而当时没人在电脑前。等我回来,任务已经超时,重新跑意味着再烧一个小时。三十多分钟的空闲空转是常态,而空转有两层税——跑久了烧钱,跑错了烧信任。
自从团队带上了看门狗,逻辑就反转了。每个 Agent 的工作都被监控;一旦某个 Agent 太久没发心跳或者产出了异常内容,看门狗不会去叫人。它宣告那个 Agent 已死,把工作重新分配,重启失败的。整个检测到恢复的循环控制在五分钟以内,而不是我之前的三十多分钟 [ORIGINAL DATA]。这两个数字的差距不是用来炫耀的——它决定了失败是一次事故还是一次常规交接。
那场烧掉我们的审计:不是所有任务都只属于一个模型
多 agent 不是银弹,我有疤为证。
我们运行了一个内部产品(预发布抽查中的图表,细节受商业保密协议保护),设计成完全自主的大型模型运营:AI 读取需求,生成输出,然后独自上线。预发布审计回来显示欺诈率 62% [ORIGINAL DATA]。再看一遍——即将发货的批次里,大约每三件就有一件是损坏的。更糟的是,因为 pipeline 是自动的,那批损坏的内容已经一路流到了产线最顶端才被拦住。
事后复盘没有怪模型。失败是结构性的:让单个模型独自扛起一条完整的、关键的、涉及金钱的链路,本身就是一种自摆乌龙的设计。不是能力不足——它根本没有资格给自己的工作打分,循环中没有外部检查,也没有第二意见。
修复方案不是删掉 AI,而是把它从独行侠翻回有检查的分部门。常规审查交给一个通用模型;风险更高的操作交给几个不同的模型独立评判,然后投票——只有多数通过才执行。
反对蜂群的论点
先说诚实的反面,因为多 agent 之所以诱人恰恰是因为它看起来很先进。这就是人们掉进多 agent 幻觉的原因:把一个根本不需要拆分的任务拆了,交给一群 Agent 互相交接、讨论、投票,产出一长串中间过程,最后回到最佳单模型一条线就能搞定的地方。
编排是有真实成本的。更多的 Agent 意味着更杂乱的日志、更多的分歧需要仲裁者、更多的协调需要投入。当你的 Agent 们正在"高效讨论"而不是"产出东西"时,你运行的不是多 agent——你运行的是一个极其昂贵的聊天室。唯一的检验标准是:拆分是否比不拆分明显更快、更强、更不易出错。如果答案不是坚定的"是",那就保持串行。
我学会信任的一个测试:第一次把一个任务链到多个 Agent 上时,不再关心此刻是哪个 Agent 在跑。只关心任务本身是否健康。劳动分工的终态是没有人看见分工——他们只看见结果。这才是 harness 的全部意义。不是让蜂群可见,而是让它足够可信,让你不再盯着它看。而让分工变得不可见的那套机制,必须在蜂群值得拥有之前就存在——一个共享记忆,这样团队不用每次都从零开始跑。这将是下一篇文章,也是这个系列一直在铺垫的那篇:为什么让 AI 记住比让它更聪明更难,也更值得。