ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI 时代的应急响应:服务没问题,但业务已经挂了

AI 时代的应急响应:服务没问题,但业务已经挂了 最近遇到一次让人印象深刻的线上事故一个客服问答机器人突然开始“答非所问”用户反馈像潮水一样涌进来但监控面板上的 CPU、内存、错误率全部正常请求也一直返回 200。值班同事盯着屏幕看了半天最后说了一句“服务没挂但业务已经挂了。”这不是个例。在讨论 “Incident Response in the Age of AI” 的时候我最想表达的一个判断是AI 并不会让应急响应这件事消失也不只是“用 AI 来辅助应急响应”。真正被改变的是故障本身的面貌。故障不再只是进程崩溃、端口不通、数据库连接失败而是 HTTP 200 背后藏着语义错误、行为漂移、上下文污染和不可解释的输出。传统的监控体系好比一直在测“水管有没有漏水”但 AI 系统真正需要关心的是“流出来的水是不是干净的”。所以AI 时代的应急响应不是把原有流程推倒重来也不是买一个 AI 工具就能万事大吉而是要把“AI 应用本身”当作一个需要被感知、被记录、被排查的事件源重新设计检测、遏制、根因分析和复盘的方式。整篇文章我会围绕这个主判断展开AI 辅助 人做决策才是这个阶段最务实的响应体系。1. AI 时代的故障边界已经不再停留在“服务挂了”1.1 传统故障与 AI 故障到底差在哪里过去我们处理的大部分线上事故都有相对明确的边界。网络抖动、磁盘写满、数据库连接池耗尽、缓存穿透、代码发布引入语法错误这些问题可以通过带外监控、日志、错误率曲线快速定位。某个指标异常基本就能映射到某个组件然后按图索骥。AI 应用把这套“因果链”打散了。模型服务本身的可用性可能很高返回状态码也正常但业务侧接收到的内容完全不可用。比如模型对某个群体的提问产生了系统性偏见而对另一群体正常提示词里被注入了恶意指令模型开始输出和业务无关的内容上下文窗口被某次异常会话填满导致后续输出质量骤降向量数据库里被写入了一条脏数据检索结果带偏了生成内容模型服务升级一个小版本后对长文本的截断策略发生了变化。这些问题的共同点是基础设施没问题服务进程没问题但输出质量已经不符合业务预期。传统监控能捕捉“服务不可用”却很难捕捉“服务在一个错误的方向上可用”。1.2 责任边界变得模糊传统微服务架构里一个接口报错可以先定位到调用链上的某个服务再看日志、看依赖、看数据。AI 系统把这条链路变成了“非线性”的同样的输入在不同时间、不同模型版本、不同上下文状态下可能得到完全不同的结果。这意味着发生事故时很难先入为主地判断责任方。问题可能出在用户输入本身异常格式、长度、恶意内容前置数据处理逻辑出错脱敏、截断、分词、向量化提示词模板被改坏或提示词版本与当前模型版本不匹配模型服务本身行为漂移下游业务逻辑没有处理好模型输出缓存或记忆模块返回了过期信息。过去排查一个故障最常问的一句话是“最后一次变更是什么”。现在这句话依然重要但还要加上另外几个问题“模型版本是什么”“提示词版本是什么”“数据版本是什么”“输入样本是什么”。这四个变量交叉在一起才构成一个 AI 事故的完整上下文。这也是为什么传统的“看板式应急响应”会在 AI 场景里失灵不是流程没用而是需要被收集和判断的信息维度更多了。如果把 AI 事故当成普通服务故障来查大概率会在“一切指标正常”的迷雾里转很久。2. 应急响应的目标没有变但流程里的每个环节都需要升级2.1 核心目标没有变不管事故是由进程崩溃引起还是由模型行为漂移引起应急响应的目标都是一样的快速遏制影响、尽快恢复服务、找到根因、避免复发。MTTR、影响范围、用户信心、事后复盘这些概念依然适用。但需要重新定义“服务恢复”。过去只要接口恢复 200、错误率下降就算恢复AI 场景里恢复还要包含“输出质量回到可接受水平”。这个标准很难用单一指标衡量但必须有人定义否则就会出现“系统明明已经恢复用户却还在继续投诉”的情况。实际操作中我会先用“用户可感知的业务指标”来判断恢复状态。比如客服机器人的转人工率、回答采纳率、负面反馈率。技术指标是参考业务指标才是恢复的最终判断依据。2.2 五个阶段在 AI 场景下的新要求把应急响应的五个常见阶段拆开来看每个阶段在 AI 场景下都有新的动作阶段传统动作示例AI 场景下的新动作检测错误率告警、资源监控增加输出质量采样、用户反馈信号、语义级异常检测遏制重启服务、切流量、回滚发布回滚模型版本、切换提示词版本、增加输入校验、关闭特定功能根因查日志、调用链、代码 diff综合模型版本、提示词版本、数据版本、输入样本、变更记录恢复服务重启、数据修复清理缓存中的污染数据、修正向量库脏数据、重置异常会话复盘写报告、定改进项把事故输入输出沉淀为回归测试集防止模型升级后复发这个过程里最容易被忽视的是“遏制”。传统遏制动作很直接把流量切走、把服务停掉。AI 应用里面如果问题出在模型输出上你不可能直接把模型服务整个停掉否则业务完全不可用。更务实的遏制方式通常是切换到上一版本模型或提示词配置在入口层增加对异常输入的拦截规则对低置信度输出走人工兜底或默认回复关闭受影响的功能入口保留其他正常功能。这意味着团队需要提前准备“降级方案”而不是等事故发生时再临时想。AI 系统不是黑盒但它的输出有概率性因此降级方案不能只看系统可用性还要看业务是否还能继续运转。3. 用 AI 辅助应急响应真正值得做的是这三件事3.1 告警降噪从几百条到几条AI 运维团队最容易遇到的一个问题是告警轰炸。模型推理延迟抖动、个别用户超时、某类输入触发异常这些都会生成大量告警。传统做法是把阈值调高结果真正严重的事件也被掩盖了。AI 在这里能做的事情是“聚类”和“预分组”。把相似格式的错误日志、相似堆栈、相似输入特征的事件自动聚合到一起让值班人员先看“这一波告警大概属于哪一类”而不是逐条阅读。比如一条提示词注入攻击可能导致上千个请求异常AI 可以通过语义相似度把它们聚成一类并在告警备注里给出共同特征。但这里要控制预期。AI 聚类只能做预分组不能替代人工判断是否删除告警。聚类结果也可能误判所以最好保留原始日志入口让应急人员可以点进去看完整内容。3.2 根因分析辅助AI 生成假设人做验证AI 在根因分析里最有价值的角色不是直接给出“就是因为 XX”而是快速生成一组候选假设并给出相关的证据链。比如 AI 客服服务突然变慢AI 可以基于历史事件、日志、配置变更记录给出几个候选方向向量数据库连接池是否饱和、模型推理服务是否出现慢请求、上游业务接口是否限流、最近是否有提示词模板变更。这些假设看起来不复杂但在海量日志和多个版本变量面前靠人逐个排查效率很低。我把这叫作“假设优先”的排查方式。AI 负责把可能性最高的方向排到前面人负责验证。验证的时候不要只看 AI 给出的结论而要回到原始证据确认日志时间戳、确认版本号、确认请求样本。如果 AI 给出的假设和证据对不上就继续看下一步。3.3 事件时间线自动生成让响应人员更快进入状态应急响应里最消耗精力的部分是“拼故事”。事故发生前发生了什么变更哪条告警先出现用户反馈从什么时候开始变多模型版本是什么时候切换的这些信息散落在不同系统里新手往往需要一两个小时才能理清。AI 可以把这些信息按时间线聚合生成一个可阅读的事件摘要几点几分出现第一条异常日志、几点几分触发告警、几点几分有人提交变更、几点几分用户反馈激增。摘要可以用大模型生成但必须保留每条信息的原始链接和证据来源。这样做的价值不只是快而是让所有参与响应的人能在同一个信息基础上协作。尤其当应急群里有开发、算法、运维、产品多个角色时一条统一的事件时间线能避免大量“我看到的是另一个版本”的争论。4. 从零搭建一套 AI 时代的 Incident Response 实战流程4.1 最小可用闭环先记录一切很多 AI 团队在事故发生时才发现自己根本没有足够的日志来复盘。模型输入输出没有记录提示词版本没有保存模型版本没有标记数据更新时间不确定。这种情况下任何应急响应方法论都是空谈。所以第一步不是上 AI 分析工具而是先把最基础的信息记下来。一个 AI 服务的最小日志记录至少要包含这些字段字段说明时间戳请求到达和返回的时间请求 ID用于串联日志、追踪和用户反馈会话 ID关联上下文状态输入内容经过脱敏后的用户输入或业务输入模型输出原始输出或截断后的输出模型名称/版本具体部署版本提示词版本提示词模板或配置版本响应时间端到端响应耗时Token 数输入输出 Token 数量下游结果是否被业务逻辑接受、是否触发兜底需要特别提醒的是数据合规。输入输出往往包含用户信息存储前必须做脱敏、加密、访问控制。这是一个容易踩坑的环节不要在事故复盘时才发现日志不能查。4.2 设计事件分级和响应动作没有分级应急响应就会变成“所有问题都是最紧急的问题”。AI 服务的分级可以根据业务影响和可恢复性来定。一个可以参考的框架P0模型输出涉及隐私泄露、违法违规内容或核心业务全量不可用。响应动作立即切换备用模型或关闭该功能同时启动事件群。P1核心场景输出质量严重下降比如客服机器人大量答非所问。响应动作回滚模型版本或提示词版本启用降级方案。P2部分用户、部分场景异常但核心链路基本可用。响应动作定位影响范围24 小时内完成初步排查。P3内部测试或少量反馈发现问题没有对外造成明显影响。响应动作记录问题排期修复。分级之后最好提前把每个级别的“响应动作清单”写出来。比如 P1 事件要联系谁、谁有权回滚模型、降级方案在哪里配置。不要等到事故发生时再翻文档。4.3 人与 AI 的协作分工在应急响应中引入 AI 辅助最大的风险不是 AI 不够聪明而是人过度依赖 AI 的结论或者在 AI 还没准备好时就让它直接执行变更操作。我建议初期采用这样的分工AI 负责信息聚合、日志摘要、告警聚类、候选根因生成、事件时间线整理。人负责确认事件级别、决定是否回滚、审核 AI 给出的假设、执行变更操作、对外沟通。一句话总结AI 是情报官人是决策者。至少要等到团队对 AI 辅助的输出质量有了稳定评估之后再考虑让 AI 自动执行一些低风险操作比如自动创建事件单、自动发出通知。自动变更永远是最后一步不要一上来就追求全自动。5. 排查链路AI 服务异常时按这个顺序查5.1 从现象到范围AI 服务异常时最忌讳的是直接打开代码开始看。正确做法是先确认影响范围和现象特征把“一个模糊的问题”转成“一组可验证的问题”。先问四个问题是全量用户异常还是部分用户异常是输出内容错误还是响应超时还是直接报错是从某个时间点开始还是从一开始就存在是固定输入触发还是随机出现全量异常通常指向服务端配置、模型版本、依赖组件部分异常则需要关注输入特征、上下文状态、用户画像和特定功能模块。现象决定排查方向这一点在 AI 场景里更加重要因为输出是否“异常”本身就需要定义。5.2 按五层排查我一般把 AI 服务异常排查分成五层按检查成本从低到高排列层级检查内容常见方法示例问题1. 现象层错误率、延迟、输出样例、业务指标查看监控和日志抽取失败/异常样本所有长文本输出都被截断2. 输入层请求格式、上下文长度、输入内容、数据预处理回放请求检查日志中的输入记录某个 prompt 超过上下文窗口3. 模型配置层模型版本、提示词版本、采样参数、部署实例数对比版本号检查发布记录回滚前的提示词模板版本不一致4. 依赖资源层模型服务、向量库、缓存、限流、GPU 资源检查依赖组件指标和调用链向量数据库连接池被打满5. 数据与业务层最近数据更新、脏数据、用户特征、下游解析逻辑对比数据版本检查数据质量向量库写入了脏数据导致检索偏差为什么要按这个顺序因为现象层的检查成本最低看一眼监控和日志就能获得大量信息。输入层则可以通过回放请求快速验证。模型配置层通常是 AI 系统“最后一次变更”的高发区。依赖资源层需要看更多系统指标。数据与业务层往往要联合算法和业务同事才能定位。如果一开始就扎进数据层很容易在复杂变量里迷失。5.3 一个实际排查示例假设线上 AI 翻译服务突然对长文本输出截断返回内容只保留前面一部分监控显示一切正常。按上面的链路走现象层确认只有长文本受影响短文本正常从反馈来看是从最近一次模型更新之后开始出现。输入层检查输入长度发现触发阈值和模型上下文窗口限制接近。历史上限是 4096 token但模型更新后输入输出共享上下文窗口的机制变了。模型配置层对比新旧模型配置发现新模型默认设置了max_tokens且该值比以前小。依赖资源层查看服务实例和 GPU 利用率没有明显瓶颈。数据与业务层取样确认是模型配置问题与最近数据更新无关。最终根因是模型更新后的max_tokens参数默认值发生了变化导致长文本被截断。解决办法是在模型调用时显式传参不依赖默认值。这类问题在传统服务里很难出现但在 AI 场景中非常典型服务完全正常但模型行为和配置的边界变了。6. 最后想提醒的事AI 应急响应的长期价值在“可复盘”6.1 每一次事故都是 AI 系统的回归测试素材AI 系统的行为不会因为一次修复就永远稳定。模型升级、提示词改版、数据更新都可能让同类型问题复发。如果把事故现场保存下来变成输入输出样本加入回归测试集后续任何版本变更都可以先用这些样本做冒烟验证。具体做法是事件复盘后从事故日志中抽出一批代表性输入和预期输出标记为“回归样例”。下次模型升级或提示词调整时先跑一遍这些样例看是否出现类似问题。这比单纯看指标变化更直观因为 AI 系统的质量最终还是要落在具体输出上。这一步看起来繁琐但它是避免“每次踩同一个坑”最有效的方式。没有复盘动作AI 系统的可靠性就永远建立在运气上。6.2 变更管理和风险意识传统发布里有代码 Review、灰度发布、回滚方案。AI 系统里模型版本和提示词版本同样要纳入变更管理。模型升级不能只是把新模型部署上去而要经历一个验证过程先用历史样本评估再做影子模式或小流量灰度观察输出质量稳定后再逐步扩大。提示词模板的修改也是一样哪怕只改一个词也要像代码变更一样记录版本、责任人、时间。这里想强调一个容易被忽略的点AI 系统的行为变化往往是非线性的。一个看起来很小的版本变化可能在特定输入上产生完全不同的输出。如果不用变更管理守住入口应急响应就只能一直做“事后扑火”。6.3 适用边界AI 辅助不等于全自动最后说几句边界感。AI 辅助应急响应并不适合所有团队。如果团队连最基本的日志、监控、版本记录都没有直接引入 AI 分析工具只会让排查过程增加一个新的黑盒制造更多噪音。适合先做 AI 辅助的团队通常已经有比较完整的调用日志、版本管理和事件记录基础AI 的价值是帮他们更快整合信息。不适合的团队我最建议的做法是先补基础建设再谈 AI 辅助。从长期看AI 不会让事故消失它只是把事故的形态改变了。应急响应里最值钱的始终是人对业务的判断、对证据的审查和对变更的敬畏。AI 能把信息整理得更快但“现在发生了什么、我们做了什么、怎么避免再发生”这个闭环必须由人来完成。下一次 AI 事故来的时候你不会希望自己在群聊里翻聊天记录试图回忆上周改了哪个提示词。你希望的是监控面板已经给出了时间线日志系统保留了完整上下文版本记录明确标注了模型和提示词变化而 AI 助手已经帮你排出了三个候选假设等你验证。到那个时候你才能真正把注意力放在决策上而不是浪费在找证据上。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进