When Errors Become Narratives: A Longitudinal Taxonomy of Silent Failures in a Production LLM Agent Runtime
错误变为叙事:生产LLM Agent运行时的无声故障纵向分类
🧭 Agent系统可靠性 · 无声故障分类与防御
Independent researcher
提出五类机制导向的无声故障分类,揭示LLM系统特有的“fail-plausible”故障模式并给出工程防御框架
📌 工作参考价值
- 上下文卫生是防止幻觉污染的第一关:在 Agent 或生成式推荐流水线中,必须将错误输出(如 stderr)与数据通道严格隔离,避免命令替换捕获错误日志并注入下游 LLM 导致虚构输出。可借鉴文中“一行 >&2 切断整条幻觉链”的思路。
- 分层反捏造守卫:对高风险生成场景(推荐理由、商品卖点、工作总结),建立来源可信度标注、禁止短语黑名单(从实际故障中抽取),并采用风险分级的提示守卫模块,共享给所有 LLM 调用任务,防止单点 copy-paste 式维护。
- 声明式状态收敛 + 机器同步:在多组件 Agent 系统中,建立声明式注册机与运行时真实状态的自动 diff 与同步(如定时任务登记 vs crontab、模型注册 vs 实际路由),避免人工遗漏导致的长期无声错误。可设计分级收敛策略:告警 → 预执行 → 自动同步。
- 将人工审阅纳为可观测性第一信号:无论自动测试与治理检查多密集,定期人工阅读最终推送给用户的消息(如推荐摘要、通知),这是发现 fail-plausible 等高阶语义故障最有效的手段。可进一步用 LLM-as-judge 做日常输出评分,但该评判器本身也需纳入同样的治理框架。
动机
LLM Agent 系统在长期自主运行时,常出现完全不会触发告警的无声故障,尤其当 LLM 将错误上下文转化为流畅却虚构的叙述(fail-plausible)时,危害极大。现有研究多关注基准测试下的任务失败,缺乏对生产环境下故障潜伏、发现渠道、防御演进的纵向观察。本文基于一个已持续运行的个人助理 Agent 系统的 22 起完整事后剖析,建立机制导向的无声故障分类,并量化防御效果。
方法关键点
- 系统背景:三层架构的 Agent 运行时(控制平面、能力平面、记忆平面),包含 ~40 个定时任务、8 个 LLM 提供商、4286 项单元测试、827 条声明式治理检查。
- 事件库与协议:22 起生产沉默事件,每起均按强制协议记录因果链、三层根因(触发/放大/隐藏)、精确时间线,并反馈进治理本体。
- 分类方法:按故障机制而非代码位置迭代聚类,得到五类:A. 环境/平台怪异;B. 设计假设与部署现实不匹配;C. 错误吞没或稀释;D. 链式幻觉与捏造(fail-plausible);E. 操作遗漏与取证盲点。其中 D 类为 LLM 系统特有,错误被模型“叙述”为可信输出。
- 防御框架:声明式治理引擎(90 条不变式/每日审计)、破坏验证(刻意注入违规以证明守卫有效)、声明状态收敛引擎(注册声明与 crontab/路由等运行时状态自动同步)、上下文卫生层(强制 stderr 分离、告警信息剥离、反捏造六层提示守卫)。
关键结果
- 无声故障潜伏期从 13 小时到 60 天,约 70% 最终由人工阅读系统输出发现,单元测试与治理检查事前预防率为 0%。
- 事后审计对本已出现过的故障模式可阻止 87% 复发,但对全新机制类故障无法预防,体现审计是回归引擎而非预测引擎。
- D 类 fail-plausible 故障中,LLM 将 HTTP 400 错误页渲染成“平台危机分析”、将系统告警融入对话并编造修复指令,本质是污染上下文进入模型后产生的连贯谎言。
- 防御成熟路径:点修复 → 元规则 → 机械化扫描器,只有达到扫描器层面的规则才能杜绝同类复发。
核心洞见
“你的 Agent 系统最值得警惕的故障不是崩溃,而是准时送达、语法完美的段落,描述一场并不存在的危机。”