跳到主要内容

禁用开关才是真正的产品:设计非 AI 回退路径

· 阅读需 11 分钟
Tian Pan
Software Engineer

每一个 AI 功能在发布时,都伴随着一个团队未曾预料到的时刻:必须将其关闭的时刻。在早会上,模型效果突然出现回归(Regression);一场没人告知工程团队的营销活动导致成本飙升,在 12 小时内让账单翻倍;隐私审查发现提示词上下文泄露;供应商宕机 90 分钟;合规团队在中午发出了警告,该功能必须在下班前消失。

大多数团队为此准备的“禁用开关”只是让“功能返回错误” —— 一个永远无法加载的旋转图标,或者是显示“AI 助手不可用,请稍后重试”的横幅。这比 AI 出现之前的现状要糟糕得多,而当 AI 表现下降时,用户恰恰会拿现状与你对比。以前的方案至少有一个按钮。而现在,用户只得到了一句道歉。

禁用开关不是工程师的控制面板。它是一个产品界面 —— 甚至可能是最重要的一个 —— 如果团队只是把它当作一个 YAML 切换开关,那么他们构建的功能在最糟糕的那天将变得毫无用处。而那最糟糕的一天,正是用户决定 AI 是否真正值得信赖的一天,因为信任建立在事物崩溃之时,而非正常运作之日。

关闭状态是一个独立的产品,拥有自己的路线图

区分成熟 AI 团队的首要行动是:将“禁用路径”视作一个真实的产品,配备 PM、设计负责人和评估套件(Eval suite)。它不应该是一个埋在控制器里的 try/catch 分支,而是一个连贯的体验,能够处理 AI 所覆盖的原始用例,并在不破坏信任的情况下说明发生了什么变化。

具体而言,这意味着大多数团队都会忽略的三项承诺:

  • 一条处理 70% 情况的确定性路径。 AI 通常只是对更简单事物的封装 —— 比如搜索框、模板、规则引擎或人工队列。这些底层能力仍然存在于你的代码库中,或者应当存在。关闭状态正是这些能力发挥作用的时候。
  • 一段优雅的叙述,说明差距所在。 “在我们调查问题期间,我们暂时禁用了智能建议。你仍然可以在此处手动创建报告。” 这种说法具体、清晰且诚实。而不是简单的 “出错了”。用户应该知道是该等待还是寻找替代方案。
  • 一个负责人。 当 AI 版本发布后,确定性路径几乎总是会失去其产品负责人。它会逐渐过时。六个月后,当禁用开关开启时,回退方案提供的体验是针对 2024 年的流量形态构建的,而非 2026 年。

做得好的团队会先写回退方案的设计文档。他们将 AI 功能定义为在一条他们已经愿意发布的路径之上的增强。而做得差的团队则将 AI 功能视为唯一的路径,然后在发布前一周才惊慌失措地构建回退方案。

失败并不罕见 —— 它只是普通的周二

反对投资于“关闭状态”的论点通常是 “我们是在针对边缘情况进行优化”。这种论点过去就不成立,现在更是被证明是错误的。主要的模型供应商发布的各种状态页看起来就像机场延误公告板。在撰写本文时,ChatGPT 在过去 90 天内发生了 61 起事件 —— 1 起重大故障和 60 起轻微故障,中位持续时间接近两小时。2026 年 3 月 2 日,Claude 全球宕机,原因是同日发布新功能引发了前所未有的需求。Grok 在 2026 年的大部分时间里都在吃力地应对它无法完全满足的需求增长。

而这仅仅是供应商端的宕机。其他的失败模式更频繁且更隐蔽:

  • 模型更新默默地改变了拒绝行为,导致你的客户服务助手开始拒绝处理最常见的工单类型。
  • 成本仪表盘在周五下午发出警报,因为一个新租户加入后的负载模式超出了你的单位经济效益预测。
  • 针对特定地区的数据驻留法规出台,你必须在 48 小时内关闭三个国家的相关功能。
  • 红队报告显示,在特定提示词下模型会泄露之前的对话上下文,法务要求该界面在明天之前下线。

对于任何以适度规模运行生产环境 AI 的团队来说,这些都是“周二”会发生的平常事。为之设计并非偏执,而是基准要求。发布后的八周运营问题序列 —— 成本飙升、幻觉升级、评估漂移、延迟长尾、供应商服务条款的悄然变更 —— 无论你是否计划,它们都会发生。选择在于你是带着运行手册(Runbook)去应对,还是通过一系列全体会议紧急抢修。

粒度:按能力划分,而非按功能划分

在设计禁用开关时,最常见的架构错误是“功能级粒度”。AI 助手功能只有一个开关。关掉它,所有东西都会变黑,包括那些运行良好的部分。这种决定是在冲刺计划为了方便而做出的,却要在凌晨两点的事故处理中付出代价。

正确的单元应该是“能力”(Capability) —— 即 AI 在功能内部执行的有界任务。一个像 AI 辅助文档编辑器这样的单一产品界面,可能拥有十种能力:自动补全建议、语法纠正、语气改写、表格生成、图像生成、摘要、翻译、引用查找、格式转换和模板选择。每一个能力都有其对应的:

  • 失败模式(幻觉 vs 成本 vs 延迟 vs 政策违规);
  • 依赖项(哪个模型、哪个检索流水线、哪个工具);
  • 回退方案(静态模板、确定性 Linter、预构建组件,或者仅仅是“隐藏按钮”)。

当失败原因是“图像生成正在产生受版权保护的内容”时,你不需要禁用整个编辑器。你只需禁用图像生成能力,让其他九种能力保持运行。按能力的 flag 还允许你进行外科手术式的恢复:如果影响语气改写的模型回归修复了,但引用查找的检索流水线仍然处于降级状态,你可以只恢复其中一个,而不必在另一个上冒险。

这需要在发布时投入看起来有些过量的前期工作。但在事故发生时,它会显得至关重要。后期改造是痛苦的 —— 能力边界是代码结构的一种属性,而不是 YAML 配置的形状。

在用户感知到超时之前进行负载舍弃

即使没有任何东西“坏掉”,禁用开关也应该自动触发。供应商频率限制、队列饱和以及预算消耗都是持续的信号,而非二进制的。区分韧性 AI 功能与脆弱功能的模式是“主动”负载舍弃——在用户可见的页面开始超时之前就丢弃 AI 调用。

具体来说,这是请求处理器与模型调用之间的一个熔断器,基于三个信号进行参数化:

  • 滚动窗口内的供应商错误率。 当 429 和 5xx 错误跨越阈值(通常是 60 秒内达到 20%)时,熔断器跳闸打开,下一个请求将走确定性路径。在经过试用期的半开窗口后,熔断器才会关闭。
  • 模型调用的队列深度或 P95 延迟。 如果调用耗时过长,导致用户即将放弃,你不如现在就给他们确定性路径,让他们继续操作。
  • 分群成本预算消耗。 如果特定租户或查询类别的支出轨迹预计到周二就会超过其额度,那么该功能应针对该分群自动禁用,同时继续为其他所有人提供服务。

心智模型:模型可用性不是二进制的,它是系统配给的一种持续资源。禁用开关是配给曲线的底部,而不是一个独立的电路。当你以这种方式构建时,最坏情况下的事故是沿着团队已经在生产环境中以较小规模调试过的曲线进行平稳过渡,而不是让团队在全量流量下从悬崖坠落。

像评估启用路径一样仔细地评估禁用路径

区分在 AI 事故中幸存的团队与失败团队的最重要纪律是:他们测试禁用路径。持续地测试。使用与启用路径相同的评估严谨性。

大多数团队都有模型评估套件。但大多数团队没有“回退”评估套件。因此,当禁用开关切换时,已经好几个月没有人针对真实流量运行过确定性路径了。静态模板包含陈旧的字符串,规则引擎无法理解新的 Schema,“手动”表单中的字段尚未针对新的产品界面进行验证,离线状态的分析事件从未被植入,而值班工程师通过观察支持队列被填满才了解到这一切。

真正有效的评估纪律:

  1. 每周在确定性路径上运行合成流量。 运行一个针对 1% 用户的离线状态小型金丝雀——或者比较两者的影子运行——可以在事故发生前捕捉到漂移。
  2. 在设计评审中对离线状态的 UX 进行快照。 当 AI 功能发布新的子功能时,该子功能的禁用状态是设计交付的一部分,而不是事后才想到的。
  3. 故障演练。 安排禁用开关的计划。每季度一次,在受控窗口内的办公时间内切换它。团队了解什么会崩溃;运行手册得到更新;组织“在没有 AI 的情况下运行”的肌肉记忆保持活跃。
  4. 遥测一致性。 禁用路径发出与启用路径相同的观测信号。你可以通过查询而不是“考古项目”来回答“离线状态运行了多少次,是否健康?”。

运行这四项的团队可以在糟糕的日子里拨动开关并信任结果。跳过它们的团队则是在碰运气。

决定离线状态能否存续的组织模式

如果没有维护它们的组织纪律,上述技术建议就毫无用处。反复出现的失败模式既简单又几乎普遍:发布 AI 版本的产品经理和工程师因该功能而晋升,并投入下一个 AI 项目;确定性路径默默地转移到一个不了解其产品背景的“平台”团队;六个月后,回退方案无人负责,评估套件损坏,禁用开关触发后陷入一片虚无。

缓解措施不是增加流程。而是在产品生命周期文档中做出一个明确的承诺:AI 功能及其回退方案拥有相同的负责人,持续时间相同,且回退方案的健康状况是季度评审项,具有与 AI 评估分数相同的地位。如果一个团队无法承诺这一点,他们就不应该发布 AI 版本——他们发布的是一个披着风衣的单一产品,而这件风衣迟早会露馅。

究竟应该先构建什么

如果你现在正在上线一个 AI 功能,正确处理离线状态的操作顺序如下:

  1. 在写 AI 设计文档之前先写回退设计文档。 如果没有模型,这个功能会做什么?如果还没做,先发布那个。
  2. 定义功能边界,并为每个能力设置标志位。 而不是按整个大功能。
  3. 根据你实际拥有的信号连接熔断器。 供应商错误率、延迟、成本消耗——至少包含一个,并随着功能的成熟添加其他信号。
  4. 为离线状态构建评估体系。 合成流量、遥测一致性,以及下一次故障演练的日历项。
  5. 指定负责人。 单数。不是一个 Slack 频道,而是一个具体的人。

你发布的 AI 功能是两个披着同一件风衣的产品。用户在事故期间看到的那个,是大多数团队视为事后才想到的那个,而它才是决定你的 AI 功能能否度过第一个糟糕月份的关键。以构建启用状态相同的严谨性来构建离线状态。禁用开关不是基础设施。它是产品,在最关键的那一天,它就是产品本身。

References:Let's stay in touch and Follow me for more thoughts and updates