多 Agent 协作的技术内核:价值来自结构,不是并发

先说结论:多 Agent 的价值不来自模型多,来自结构对。没有结构的多 Agent 只是更贵的并发——多花 2 到 3 倍的 token,听一群模型互相点头;有结构的多 Agent,才是能委派、能并行、能验证的执行系统。

先诊断。单 Agent 执行复杂任务有五个结构性毛病,不怪模型智力,怪执行结构:

  • 停止判断不确定。一个含 7 个子任务的目标,模型可能干完 3 个就停下来汇报,问你要不要继续。它"觉得"自己干完了。
  • 长任务退化。上下文越攒越脏,早期要求被遗忘,方向偏了继续沿着偏的走。错误一旦产生,内部没有机制打断。
  • 自检自证。它很真诚地检查自己的成果,但检查的还是自己刚构造出来的现场。裁判和选手是同一个人,自证不算外部证据。
  • 长周期与交互预期冲突。分钟级甚至小时级的活,和秒级反馈的预期打架;后台任务和活跃对话共用上下文,互相污染。
  • 角色扮演不等于角色分工。给同一个 Agent 换 prompt 扮演"计划者"“执行者”,那不叫分工。分工在上下文层面至少分四个维度:工具、上下文、记忆、Skill。

这五条里最要命的是第三条。自己给自己批卷子,批出来全是满分——这毛病人也有,模型也有。

判断一个多 Agent 系统值不值得建,别看它能同时启动多少 Agent,看五个问题:为什么拆分、如何验收、何时停止、失败怎么恢复、记忆怎么管。这五个问题本身就是多 Agent 的验收标准。

反面教材是研究界早就做过的实验:同质模型互相 debate,消耗是单 Agent 自我修正的 2.1–3.4 倍 token,准确率没有提升,有时更差——2024 年那篇论文里,模型甚至会被更有说服力的错误论证带偏。多个同质模型互相确认,只是把不确定性并行扩散。

核心协作流就三类角色:

  • Leader:定计划,拆任务,判断值不值得开团队、拆多细、重试几次、什么时候升级给人类。
  • Worker:干活,各自有不同的工具、上下文和输出要求。角色越清楚,输出越容易被复用、比较和检查。
  • Verifier:把关,查事实来源、覆盖清单、风险边界,有权把活打回去。

关键设计是 Worker 和 Verifier 的对抗关系:研发和质检的关系,不是同事互相客气的评审会。状态机管每个任务的周期:producing → verifying → done,verifying 没过就打回 producing,直到通过或触发停止条件。

为什么非要对抗?因为多 Agent 顺序接力时幻觉会放大:A 的偏差被 B 强化、被 C 叠加,最后收敛成一个高置信度的错误结论。独立验证者就是来打断这条链的——另一种打断方式是 Claude Code 那种分叉-汇聚,但汇合点同样需要一个检查者。这个设计和 Anthropic 那篇 Building Effective Agents 里的 Evaluator-Optimizer 同构,但姿态更明确:验证不是生产者的自我改进,而是独立主体的否决权。

多 Agent 协作暴露三类没法靠加大 context window 解决的工程成本:

  1. 交接成本:同一段信息在不同 Agent 之间要重新组织。对策是交接物结构化:一份可读的交接文件加一块共享留言板,Agent 之间靠"文件路径 + 摘要"做慢通信,别一次性全塞进上下文。
  2. 共享成本:每多一段共享内容,每个 Worker 每一轮都要为它付 token。对策分三档:Agent 内记忆(广播给同类 Agent)、Agent 间通讯通道(直接对话)、白板(大容量,按需读)。对应"主动通知 → 直接对话 → 按需读取"的递进。
  3. 聚合成本:并行收集十份结果容易,合成一份事实一致、引用对得上、风格统一的交付物很难。聚合是 Leader 的贵活,“把 10 份合到 1 份”。

设计含义一句话:共享信息按"是否值得每个 Worker 每轮付费"来评估。隔离是默认,共享是例外。

三类上下文成本模型

三类上下文成本:交接、共享、聚合

写几段 prompt 让模型扮演不同角色,那是演示,不是系统。真实复杂度在控制面:任务状态机(每个运行周期是一个 session)、多来源事件(用户、其他 Agent、定时触发、系统监控)、可观测性、门禁。权限约束和写记忆的约束不能靠 Agent 自觉,要靠软硬门禁拦截。

行业证据同向:主流 Agent 框架都在强调 sandbox、workspace、handoff、tracing;企业级产品把 Runtime、Memory、Identity、Gateway、Browser 列为模块。重心正在从"写 prompt"转向"维护控制面"——这个方向我在 Agent 运行时动态干预里也聊过。

对 Agent 的操作——发起、派生、中止、终止——可以抽象成一组统一接口,调用方可以是用户、其他 Agent 或系统引擎。接口平权带来统一的控制面和审计面,但两条边界要守住:平权不等于无限权限,Agent 不因获得接口而获得权限;人类不退出责任链,合并代码、覆盖线上数据这种高风险动作,必须有人类签字。

只有当 Agent 和人类共享同一个可审计协作面,权限、责任和风险才看得见。审计是平权的前提,不是平权的副产品。

长任务跨多轮消息、多个工具、多个 Agent,不能赌任何单个模型的上下文不丢。任务状态、事件日志、文件产物、决策记录,都要保存成可恢复对象;session 本身也是外部上下文对象,不等于模型的 context window。可恢复性是异步执行的前提。换个说法:session 会丢,文件不会。

每次运行的执行经验可以沉淀成记忆和 Skill,让同一角色的 Agent 越用越懂用户、越懂协作。成长本身计入 ROI,不只看单次 token 消耗。

所以选型判据很清楚:任务越复杂、链路越长、风险越高、经验越可复用,团队式协作越划算;任务越短、越确定,单 Agent 或传统自动化更好。不该鼓励"凡事开团队",该帮人判断什么时候值得协作,什么时候保持简单。

  • 异步长任务:任务和对话解耦,先秒级确认目标,后台拆开干,关键节点回报(开始、阻塞、需决策、完成)。用户随时能跟计划者说话,不污染执行上下文。
  • 编码 Harness:Developer 实现(输出修改理由、潜在风险、验证建议),Tester 给外部证据——验证结果来自命令、测试、可执行检查,不是模型拍脑袋;Reviewer 回答"该不该这么改"(抽象边界、兼容性、权限扩大、敏感信息)。停止条件绑在 test、lint、build、format check 上。
  • 并行研究:拆成并行信息通道,独立 Verifier 查来源可复查性(稳定 URL 优先,缓存页只能当线索)、是否过期、有没有反面证据,合成器再合并成结构化结论。
  • 文档流水线:Planner 定目标与结构,Writer 写正文,Formatter 排版,Evaluator 独立检查内容、格式、文件完整性。文档生成被改造成 CI/CD:每步有中间件,每步有检查,每步失败可局部重试。
  1. 计划者是新的单点。开头批评单 Agent 停止判断不确定,但方案里的 Leader 也是模型,也承担拆解粒度、重试策略、升级决策。这是把单点从执行层搬到决策层,不是消灭单点。
  2. 验证者的锚点在部分场景模糊。编码场景锚点清楚(命令、测试、可执行检查),但研究、文档场景里,验证者同样是模型,如果"检查来源可复查性"没有稳定 URL、版本时间戳这种硬锚点支撑,对抗关系会退化成两个模型的互相说服。对抗性需要可操作的验证标准。
  3. 安全边界没展开。Agent 对 Agent 可以发起中止,那防滥用机制呢?“软硬门禁"各自拦截什么(路径、命令、网络出口)?审计怎么保证防篡改、保留期?
  4. 没有量化数据。上文没有成功率、成本对比、故障恢复时间。“用户愿意为可验证的结果等更久"是假设,不是测量。
  5. 诊断和处方不对称。开头把单 Agent"中途停下"归为执行结构的毛病,后面又主张停止条件可以绑定外部系统——既然停止条件能外部化,单 Agent 的中途停下,相当程度上是设计选择,不是模型宿命。诊断和处方之间有个台阶。
  1. 选型先过五问:为什么拆分、如何验收、何时停止、失败如何恢复、记忆怎么管。任一问题答不上来,就别上多 Agent。
  2. 落地顺序:先协议(任务结构、状态机),再隔离(上下文、文件、权限),最后加对抗验证。顺序颠倒,协作就是灾难。
  3. 验证要有外部锚点:测试输出、命令结果、稳定 URL、时间戳。“看起来通过"的验证比没有验证更危险。
  4. 成本护栏先于功能:共享内容按每轮 token 评估;预设迭代上限、token 预算、超时升级。
  5. 状态全部外化:任务状态、事件日志、文件产物、决策记录落盘。session 会丢,文件不会。
  6. 审计优先于平权:全量可审计,控制接口才可授权;高风险动作保留人类签字。
  7. 长期收益看沉淀:把踩过的坑写成记忆,把有效动作固化成 Skill。这是相对一次性工具调用的真正复利。

多 Agent 的本质,是把"一个 Agent 既当裁判又当选手"的矛盾,拆成可对抗、可验收、可恢复、可审计的结构。结构是它唯一的产品力,成本模型是它唯一的准绳,记忆沉淀是它唯一的长期回报。

相关内容