跳转到主要内容

扩展 LLM Agent 集群时,真正崩溃的是什么

多 Agent 系统的失败,更多源于协调机制而非模型能力。本文审视共享状态、交接协议,以及并行化的取舍。

A magnifying glass focuses on various business charts and graphs on paper.

协调问题不在模型

大多数构建多 Agent 系统的团队一开始都假设瓶颈是模型能力。事实很少如此。对于子任务而言,模型已经足够好。最先崩溃的是协调层:Agent 如何共享状态,如何决定下一个由谁行动,以及当其中一个产出了其他 Agent 无法使用的东西时,系统如何恢复。

单个 Agent 是一个循环。而一个集群是一个分布式系统,其节点不可靠,且以自然语言通信。第二种视角才能准确预测失败模式。

为什么自然语言交接是脆弱的

当一个 Agent 把工作交给另一个 Agent 时,交接通常是非结构化文本。这在原型阶段很方便,在生产中却很昂贵,原因有三。

第一,自然语言交接是有损的。接收方 Agent 必须从散文中重新推断意图。如果发送方遗漏了某个约束,接收方无法恢复它。没有任何 schema 可供校验。

第二,它们是非确定性的。相同的上游输出在不同运行中可能被解读为不同含义,这使得失败难以复现。

第三,它们掩盖了部分失败。一个返回看似合理但不完整结果的 Agent,与一个成功完成的 Agent 看起来一模一样,除非下游有东西去检查它。

解决办法不是消除自然语言,而是约束交接面。为 Agent 间消息定义一个带类型的信封:任务标识符、产出的 artefact、必须成立的约束,以及一个显式状态。Agent 的散文可以放在某个字段里,但编排器路由和校验的依据是信封。

一个具体机制:带类型的信封与校验门

设想一条研究与起草流水线,包含一个 planner、若干 retriever、一个 synthesiser 和一个 critic。没有结构时,synthesiser 收到一堆文本,然后猜测什么重要。

有了带类型的信封,流程如下:

A developer's hand interacting with code on a laptop screen in a workspace setting.

{
  "task_id": "r-014",
  "produced_by": "retriever-2",
  "status": "partial",
  "artefact": { "claims": [ { "text": "...", "source": "..." } ] },
  "constraints": ["no claims without a source", "max 12 claims"],
  "missing": ["coverage of the cost dimension"]
}

编排器不读散文。它读 status、constraints 和 missing。如果 status 是 partial,它可以重新派发缺失的维度,而不是把一个降级的 artefact 继续传递下去。synthesiser 只接收约束已满足的信封。

这就是校验门,也是大多数集群中单点杠杆最高的补充。它把静默降级转化为显式的路由决策。它还让系统变得可测试:你可以在不调用任何模型的情况下,把一组记录下来的信封重放进编排器。

拓扑选择及其代价

不存在普遍正确的集群形态。常见的有三种,每一种都要放弃一些东西。

Supervisor 模式。 一个编排器 Agent 向 worker 派发并聚合结果。易于推理,易于记录日志,并且把失败处理集中化。代价是瓶颈:supervisor 的上下文必须容纳足够信息才能正确路由,而它成为单一节点,其错误会传播到所有地方。

Pipeline 模式。 Agent 串联成链,每个转换前一个的输出。简单且可预测。代价是脆弱:早期的错误会累积,且没有分支来吸收它。Pipeline 适合规格明确的转换,而非开放式研究。

点对点或辩论模式。 Agent 直接交换意见并收敛到一个答案。它能暴露出 supervisor 会抹平的分歧。代价是难以设界:token 开销、延迟和终止条件都变得不平凡。没有显式的轮次上限和收敛判据,它可能无限运行,同时产出听起来自信的噪声。

在实践中,大多数生产系统是一个带类型信封的 supervisor 加上一两条专门的子流水线,而不是一个全连接的网状结构。

诚实的取舍:并行换来延迟,代价是一致性

并行运行 Agent 能减少墙钟时间并提高吞吐量。它同时也移除了顺序上下文,使得后一个 Agent 无法看到前一个 Agent 学到了什么。两个并行工作的 retriever 可能返回重叠或矛盾的 claim;而顺序链本可以让第二个避开第一个的死胡同。

这个取舍是真实的,无法通过工程手段消除。能做的是让合并步骤显式化。并行分支应当发出带类型的信封,合并应当按一条既定规则来调和冲突,例如优先选择 provenance 分数更高的来源,或把冲突标记给 critic Agent。没有合并策略,并行只会更快地产出更大一堆未经验证的文本。

Close-up of a magnifying glass over financial data charts and metrics on printed paper.

第二个取舍是可观测性。每增加一个 Agent,就增加一跳需要追踪。如果编排器不为每个信

评估必须针对接缝

孤立地评估单个 Agent 是必要的,但不充分。集群中真正重要的失败发生在接缝处:一次交接丢掉了约束,一次合并错误地解决了冲突,一次重试重复了工作。

一个实用的方法是在三个层次上评估。

  • Agent 层。 给定一个格式良好的输入,Agent 是否满足自身的契约?这最容易测试,也最不能预测系统行为。
  • 交接层。 给定记录下来的上游信封,下游 Agent 是否产出一个满足其声明约束的信封?这能捕捉 schema 漂移和静默的部分失败。
  • 轨迹层。 给定一个完整任务,系统是否能在有界的步数和 token 内达到可接受的结果?拓扑和合并策略实际上是在这里被检验的。

轨迹评估需要一个独立于 Agent 自我报告的可接受结果定义。否则系统就是在自己给自己批改作业。

先构建什么

如果集群正在失败,修复的顺序比任何单一修复的精巧程度都更重要。

  1. 为每条 Agent 间消息引入带类型的信封。仅此一项就能让失败变得可见。
  2. 在每个交接处加上校验门,带一个显式的 partial 状态和一条重新派发路径。
  3. 为并行分支定义合并策略,包括如何检测和解决冲突。
  4. 为每个信封埋点结构化 trace,使运行可以重放。
  5. 只有在此之后,才去调 prompt 或换模型。

大多数团队反着来,在协调层甚至无法表达哪里出错之前,就先去抓一个更强的模型。

结论

扩展 LLM Agent 集群是一个披着机器学习外衣的分布式系统问题。模型通常够用;交接、合并策略和可观测性通常不够。带类型的信封、校验门和轨迹层评估,针对的是生产中实际出现的失败模式。这些取舍,尤其是并行与一致性之间的取舍,是结构性的而非偶然的,诚实的做法是有意识地做出选择,并为后果埋点。

封面照片:panumas nikhomkhai / Pexels。

分享XLinkedIn永久链接5 分钟阅读

相关阅读

这能回答的问题

What is the first thing to fix in a failing multi-agent system?

Introduce typed envelopes for every inter-agent message. Structured status, artefact and constraint fields make silent partial failures visible and allow the orchestrator to route on facts rather than re-inferred prose.

Is a fully connected peer-to-peer swarm better than a supervisor pattern?

Not by default. Peer-to-peer can surface disagreements, but token spend, latency and termination become hard to bound. Most production systems use a supervisor with typed handoffs and a few specialised sub-pipelines.

How should parallel agents handle conflicting results?

Parallel branches should emit typed envelopes and the merge step should apply a defined policy, such as preferring higher-provenance sources or routing conflicts to a critic agent. Without a merge policy, parallelism just produces more unverified text faster.

Why is evaluating individual agents not enough?

Most swarm failures occur at the seams: dropped constraints in handoffs, incorrect conflict resolution in merges, duplicated work in retries. Handoff-level and trajectory-level evaluation are needed to catch these.