故障模式 —— MAST、群体思维、单一栽培、级联错误
2026 年的参考分类法是 MAST(Cemri 等人,NeurIPS 2025,arXiv:2503.13657),从横跨 7 个最先进开源 MAS 的 1642 条执行轨迹中提炼,显示 41–86.7% 的失败率。三个根类别:规范问题(Specification Problems)(41.77%)——角色含糊、任务定义不清;协调失败(Coordination Failures)(36.94%)——通信中断、状态失同步;验证缺口(Verification Gaps)(21.30%)——缺少校验、没有质量检查。群体思维(Groupthink) 家族(arXiv:2508.05687)补充了:单一栽培塌缩(同一基础模型 → 相关失败)、从众偏差(agent 互相强化错误)、心智理论不足、动机混合的动态、级联可靠性失败。级联例子:重试风暴——一次支付失败触发订单重试,订单重试触发库存重试,把库存服务压垮(几秒内 10 倍负载——需要断路器)。记忆投毒:一个 agent 的幻觉进入共享内存,下游 agent 把它当事实;准确率逐渐衰减,让根因诊断变得痛苦。STRATUS(NeurIPS 2025)报告通过专精的检测 / 诊断 / 校验 agent,缓解成功率提升 1.5 倍。本课把故障模式当成一等的工程目标来对待。
类型: Learn 语言: Python(标准库) 前置要求: Phase 16 · 13(共享内存)、Phase 16 · 14(共识与 BFT)、Phase 16 · 15(投票与辩论拓扑) 预计时间: ~75 分钟
问题背景
多 agent 系统在真实任务上有 41-86.7% 的时间失败(Cemri 等人 2025 跨 7 个开源 MAS 测得这一点)。这不是「就多加几个 agent」能调出来的。这些失败有结构性成因。MAST 分类法给了你类别。本课把每个类别映射到一个具体的检测、诊断、缓解模式,让这些数字不再显得随机。
2026 年的生产实践是把故障模式当成设计输入。你的架构在你能指着每个 MAST 类别、说出你部署的缓解手段之前,都还不算「够好」。
核心概念
MAST 类别
规范问题(占失败的 41.77%)。 agent 的任务定义得不够紧。例子:
- 角色含糊:两个 agent 都以为自己是 reviewer。
- 任务欠规范:「总结这个」而用户想要一个特定角度。
- 成功标准隐含:agent 没法判断自己成功了没。
缓解:
- 写显式的角色契约。每个 agent 的 prompt 说明它做什么以及它不做什么。
- 每个任务的验收测试。在 agent 开始前,定义「完成长什么样」。
- 飞行前规范检查:一个独立 agent 在分派前审查任务定义。
协调失败(36.94%)。 通信或状态崩溃。
例子:
- 两个 agent 不做同步就更新共享状态。
- 消息在 agent 之间丢失(队列故障、超时)。
- 状态漂移:agent A 以为任务完成了;agent B 还在执行。
缓解:
- 带乐观并发的版本化共享状态。
- 对关键消息显式确认(重试到被 ack 为止)。
- 周期性状态同步检查点;尽早检测漂移。
验证缺口(21.30%)。 对输出没有独立检查。
例子:
- 一个 agent 声称成功;没人验证。
- 一链 agent 各自信任前一个的输出。
- 对涌现的组合行为缺少测试覆盖。
缓解:
- 独立的 verifier agent(第 13 课)。只读、有独立来源访问。
- 显式 handoff 契约:「A 的输出必须先过检查器 C,B 才能开始。」
- 结果日志,供事后分析。
群体思维家族(arXiv:2508.05687)
agent 趋同或互相模仿时的五个相关失败:
单一栽培塌缩。 同一基础模型或训练数据 → 相关误差。当三个 agent 共享一个 LLM 时,它们共享它的幻觉。
从众偏差。 agent 朝最响或最自信的同伴调整,哪怕错了。
ToM 不足。 agent 无法建模彼此的信念;协调散架(第 18 课)。
动机混合的动态。 激励部分对齐的 agent 漂向折中的中间,谁都不满意。
级联可靠性失败。 一个组件的错误模式触发依赖组件的错误模式。
级联例子 —— 重试风暴
一个经典的 2026 事故模式:
支付服务有 10% 的请求失败
↓
订单 agent 重试支付(指数退避,但很朴素)
↓
每次重试都是一次新的「订单-库存」检查
↓
库存服务看到 2 倍正常负载
↓
库存服务开始超时
↓
每个订单都重试库存检查
↓
库存服务看到 10 倍正常负载
↓
集群挂掉修法是经典的:断路器(circuit breaker)。当下游错误率超过阈值,用缓存或默认结果短路。外加每个请求有上限的重试预算。
断路器是少数几个你能不加修改地直接从分布式系统借来的多 agent 故障缓解之一。
记忆投毒(再访)
来自第 13 课:一个 agent 的幻觉成了共享内存事实;下游 agent 在被投毒的事实上推理。用 MAST 的话说,这是共享内存层的验证缺口。
逐渐的准确率衰减是症状。你不会得到一次崩溃;你得到的是难以根因定位的缓慢漂移。
缓解:只追加日志、溯源、不可写 verifier。第 13 课已覆盖。
STRATUS —— 用于故障检测的专精 agent
STRATUS(NeurIPS 2025)报告,当你部署以下三者时,缓解成功率提升 1.5 倍:
- 检测 agent。 盯着症状模式(高分歧、重试激增、准确率漂移)。
- 诊断 agent。 给定症状,从 MAST 分类法推断可能的根因。
- 校验 agent。 在缓解被应用后,检查症状是否消除。
这是把 SRE 风格的事故响应应用到 agent 系统上。这三个角色都可以是带专精 prompt 的 LLM agent。
故障模式审计
2026 年的最佳实践是做年度(或每个大版本)故障模式审计:
- 采样轨迹。 收集约 1000 条真实执行轨迹。
- 归类。 对每条轨迹的失败,映射到 MAST + 群体思维类别。
- 算分类失败率。 哪些类别在你系统里占主导?
- 给缓解排序。 哪个修复能消除最多失败?
- 挑 2-3 个缓解。 实现;下个季度重新审计。
纪律比具体选择更重要。没有审计,失败会融进噪声、永远得不到系统性处理。
当系统悄悄失败
最危险的失败类别是无声的正确性失败。一个大声失败(崩溃、异常、告警)的系统可以被监控。一个产出「像样但错误」输出的系统没法靠异常日志检测。这就是为什么验证缺口虽然按数量只占 21.30%,却是单次失败最贵的类别。
投资于:
- 基于采样的人工评审。
- 黄金数据集回归测试。
- 对重要输出做跨 agent 交叉核查。
失败对慢失败
有些失败是即时的;有些是缓慢的。即时失败(超时、schema 不匹配、auth 错误)检测起来便宜。慢失败(记忆投毒、单一栽培漂移、角色含糊)检测和防范起来昂贵。
2026 年的工程动作:埋点慢失败的代理指标,好让你在漂移变成可见错误之前抓住它。一致率、重试率、输出长度分布、以及相邻 agent 版本之间的编辑距离,都是有用的代理。
a5-retry-cascade动手构建
code/main.py 实现:
FailureTaxonomy—— 把模拟事故归类到 MAST + 群体思维类别。CircuitBreaker—— 经典模式;错误率超阈值时打开。RetryStormSimulator—— 展示级联失败;切换断路器开/关。DetectionAgent—— 脚本化的 STRATUS 式症状匹配器。
运行:
python3 code/main.py预期输出:
- 没有断路器的重试风暴:库存错误爆炸(模拟)。
- 有断路器:在阈值处封顶;提供降级模式响应。
- 检测 agent 标出该模式并说出 MAST 类别。
实际使用
outputs/skill-mast-auditor.md 对一个多 agent 系统跑一次 MAST 式故障模式审计。轨迹 → 归类 → 缓解排序。
拿去用
生产里的故障模式纪律:
- 每季度做一次 MAST 审计。 不是每年。随着你系统增长,类别会变。
- 到处放断路器。 每个对任何依赖服务的出站调用。默认打开阈值设在 5-10% 错误率。
- 黄金数据集。 小、高质量、手工审过。每周对照它们做回归测试。
- STRATUS 三件套。 检测 + 诊断 + 校验 agent 监控生产。先只上检测 agent;症状嘈杂时再加诊断。
- 失败预算。 按类别为失败率设显式 SLO。超预算就触发一次「停止发布」的对话。
练习
- 跑
code/main.py。确认断路器封住了重试风暴。改变失败阈值,观察取舍。 - 实现一个慢失败代理:3 个并行 agent 之间的一致率。它急剧下降时触发告警。通过逐渐让 agent 输出相关来模拟单一栽培漂移。
- 读 Cemri 等人(arXiv:2503.13657)。挑他们 7 个 MAS 系统里的一个,映射它前 3 名失败类别。这些跟 MAST 预测的相比怎样?
- 读群体思维论文(arXiv:2508.05687)。指出五个模式里哪个在生产里最难检测。提出一个代理指标。
- 为你熟悉的某个具体多 agent 系统设计一套 STRATUS 式的检测-诊断-校验三件套。检测盯哪些症状?诊断推荐什么缓解?校验如何确认它们生效?
关键术语
| 术语 | 大家嘴上怎么说 | 它实际是什么意思 |
|---|---|---|
| MAST | 「2026 年的分类法」 | Cemri 2025;3 个根类别 + 14 个故障子类型。 |
| Specification Problem | 「角色含糊」 | 任务或角色定义不足;agent 不知道该做什么。 |
| Coordination Failure | 「状态漂移」 | agent 之间的通信或同步崩溃。 |
| Verification Gap | 「没人检查」 | 输出没经独立校验就被接受。 |
| Groupthink family | 「同质化失败」 | 单一栽培、从众、ToM 不足、动机混合、级联。 |
| Monoculture collapse | 「同一模型,同样的幻觉」 | 来自共享基础模型或训练数据的相关误差。 |
| Retry storm | 「级联错误放大」 | 一次失败触发重试,重试在下游放大负载。 |
| Circuit breaker | 「按错误率快速失败」 | 错误率超阈值时打开;用默认值短路。 |
| STRATUS | 「事故响应三件套」 | 检测 + 诊断 + 校验 agent。缓解成功率 1.5 倍。 |
| Memory poisoning | 「幻觉传播」 | 共享内存事实被污染;下游 agent 在毒上推理。 |
延伸阅读
- Cemri et al. — Why Do Multi-Agent LLM Systems Fail? —— MAST 分类法,NeurIPS 2025
- Groupthink failures in multi-agent LLMs —— 单一栽培、从众、以及五家族分类法
- STRATUS — specialized agents for MAS incident response —— NeurIPS 2025 会议录条目(检测 + 诊断 + 校验)
- Release It! — stability patterns (Nygard) —— 断路器的标准参考
- Anthropic — Multi-agent research system —— 生产故障模式笔记