9.6 故障模式与韧性设计
本节只讨论一类问题:系统已经进入运行态之后,如何发现故障、诊断故障并恢复服务。这与下一节的“架构陷阱与反模式”不同。9.6(本节)关注的是运行时症状、告警、熔断与修复;9.7 关注的是设计阶段就埋下的错误决策。
对智能体系统而言,真正昂贵的事故通常不是进程崩溃,而是系统继续“正常运行”,却在错误方向上稳定放大:死循环烧钱、幻觉触发错误动作、上游异常被下游当成事实继续传播。因此,韧性设计的核心不是“尽量不报错”,而是在错误不可避免时,尽快发现、限制爆炸半径并恢复到安全状态。
9.6.1 运行时故障的四种类型
从排障视角看,生产环境中的智能体故障通常可归为四类:
控制流故障:陷入死循环、异常重试、过早终止、长时间卡住。
认知故障:上下文漂移、目标遗忘、幻觉、错误的工具选择。
依赖与执行故障:外部 API 超时、Schema 变更、工具返回不完整数据、权限异常。
级联故障:一个智能体或一个步骤的错误输出,被下游链路当成可信输入继续放大。
这四类问题并不互斥。实际事故往往是“依赖故障 + 认知故障 + 级联传播”的组合:例如上游工具返回半截 JSON,主智能体误判任务未完成,随后反复重试并触发成本雪崩。
9.6.2 故障诊断的标准流程
面对异常链路,建议按下面的顺序排查,而不是直接改 Prompt:
先止血:暂停高风险动作,必要时触发
kill switch、熔断器或只读降级。再定位症状:确认是成本激增、延迟异常、成功率下降、格式错误,还是事实性错误。
回放链路:查看完整 trace,确认错误发生在规划、检索、工具执行、评审还是输出阶段。
识别首个异常点:不是看“最后一句错在哪”,而是找出第一个偏离预期的跨度。
分类根因:归入控制流、认知、依赖或级联问题,避免把所有问题都归咎为“模型不稳定”。
验证恢复策略:确认重试、回滚、人工接管、降级路由是否真的生效。
一个成熟团队的目标不是“完全没有事故”,而是把平均诊断时间(MTTD)和平均恢复时间(MTTR)压到足够低。
9.6.3 案例一:死循环与成本雪崩
类型:控制流故障
事故描述: 某金融智能体在夜间批处理窗口中突然发起数万次 API 调用,短时间内打满数据库连接并触发异常账单。
故障还原:
图 9-17:死循环故障模式
根因并不复杂:工具返回了格式错误,但系统没有把它标记成“不可恢复错误”。主智能体把它误解为“尚未完成”,于是继续重复同一动作。
运行时修复策略:
步数预算:设置
MAX_ITERATIONS、MAX_TOOL_CALLS、MAX_WALL_CLOCK_TIME三种硬限制,而不只是一种。错误去重:连续出现相同工具、相同参数、相同报错时,立即判定为循环。
成本熔断:一旦单条链路成本超过预算阈值,自动终止并标记为
budget_exceeded。策略降级:从“自主重试”切换到“结构化错误返回”或“人工接管”。
9.6.4 案例二:上下文漂移与目标遗忘
类型:认知故障
事故描述: 客服机器人在长对话后逐渐偏离“客服”角色,开始闲聊、编造政策,甚至暴露内部指令摘要。
故障还原:
图 9-18:上下文遗忘与目标漂移
这类故障常被误判为“模型胡说八道”,但更常见的根因是上下文管理策略错误:系统提示、任务目标、已确认事实与用户历史被同等看待,导致关键约束被冲掉。
运行时修复策略:
系统提示与任务目标固定置顶:不参与 FIFO 轮转。
状态分层:把“系统约束、任务目标、事实摘要、最近对话”拆成不同槽位,而不是放进一条消息流。
记忆摘要而非硬截断:上下文接近上限时,先压缩旧对话为结构化摘要。
目标心跳检查:每经过若干步,让评审器检查“当前动作是否仍服务于初始目标”。
9.6.5 案例三:幻觉输出与错误执行
类型:认知故障
事故描述: 运维辅助智能体在“清理无用文件”任务中,把关键配置目录误判为垃圾目录并执行删除。
这里最危险的不是“答错一道题”,而是幻觉进入执行面。一旦模型把未验证的判断当成事实,再配合写权限,事故就从内容错误升级为系统破坏。
最新的幻觉检测与抑制方法
在 2026 年的生产实践中,仅靠“让模型更谨慎一些”已经不够。更可靠的做法通常是多层组合:
证据绑定输出:要求结论显式引用检索证据,而不是自由生成。
Graph-RAG:对实体、关系和来源做图结构约束,降低跨文档拼接时的事实漂移。
实时信任评分:综合检索覆盖率、来源一致性、工具成功率、校验器得分,计算
trust_score。多智能体交叉验证:生成器、验证器、事实核查器彼此独立,避免单点幻觉直接落地。
不确定时拒答或升级:当证据不足、冲突过高或置信度过低时,优先返回“不足以执行”。
一个可执行的信任评分思路
把上述信号加权合成一个 0~1 的信任分,就可以据此决定是直接返回,还是转人工复核。
运行时修复策略:
默认只读:高风险工具默认不可写。
高风险动作双重确认:
rm、drop、delete、transfer、publish等动作必须经过 HITL。先校验后执行:把“生成计划”和“真正执行”拆成两个阶段。
执行后验证:不仅校验输出文本,也校验环境状态是否符合预期。
9.6.6 案例四:多智能体级联故障
类型:级联故障
事故描述: 一个数据分析流水线由数据采集智能体、分析智能体、报告智能体组成。采集智能体因 API 超时返回了不完整数据,但未显式标记异常;后续两个智能体都把不完整结果视为事实,最终生成并发送错误报告。
这类事故说明,多智能体系统的核心风险不是“每个 Agent 单独出错”,而是错误被包装成结构化结果后更容易被信任。
运行时修复策略:
输出必须带元数据:如
completeness、confidence、source_count、requires_review。下游设置前置断言:不满足条件时拒绝继续,而不是“勉强生成”。
链路级熔断:上游异常时暂停整条流水线。
检查点与可恢复重放:允许从最近的稳定节点重跑,而不是全链路重试。
9.6.7 韧性设计清单
如果只保留一页运行手册,建议至少覆盖下面这些机制:
预算限制
防止成本与时长失控
限制步数、时间、工具调用次数、单请求预算
结构化错误
避免模型误解异常
工具层返回标准错误码与可读错误信息
幂等与补偿
避免重复写入和半成功状态
写操作带幂等键,失败后有补偿事务
熔断与降级
快速止血
失败率超阈值时切换只读模式或规则模式
检查点
提升恢复效率
关键状态可快照,可从中间节点恢复
人工接管
防止高风险误操作
低信任分数或高风险动作自动升级
回放能力
支持复盘与再现
保留 trace、输入输出、工具结果和版本号
9.6.8 事故响应与复盘
当事故已经发生时,目标不是“解释为什么模型这么笨”,而是把事故转化为新的工程约束。一个可执行的 SOP 通常包括:
熔断止损:暂停写操作、限制预算、冻结异常版本。
影响面评估:确认受影响用户、数据范围、下游系统与时间窗口。
恢复服务:切换到降级路径、回滚版本或启用人工流程。
根因归档:记录首个异常点,而不是只记录最终症状。
测试固化:把事故样本沉淀为数据集、回归测试和告警规则。
本节的关键结论是:运行时韧性不是某一个 Prompt 技巧,而是一组强制性的系统护栏。下一节将进一步讨论,如果在架构设计阶段就做错了决策,会如何把这些运行时故障系统性地放大。
下一节: 9.7 架构陷阱与反模式
最后更新于
