事故先说:周五下午一位工程师在控制台改了一句 system prompt 上线;周一发现一类用例的拒答率翻倍——但没有版本记录,不知道改了什么,也没法一键回滚;同时供应商在周末把浮动别名指向了新快照,两个变化叠在一起,分不清谁造成的。另一个:模型供应商宕机 40 分钟,AI 功能全部报错,没有 fallback、没有降级、没有 runbook,值班的人不知道该做什么。

这一篇把 《Prompt 与上下文工程(06):prompt 当代码管——版本、评测、A/B,以及上下文 vs 检索》(prompt 当代码管)与 《评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测》(门禁、影子、灰度)合成一个发布体系:什么算发布、特性开关与 kill switch、钉版本、依赖变更的纳入、五本 runbook、质量与成本 SLO、值班。

本篇要回答的核心问题是:

AI 功能的发布体系由什么组成,什么算发布?1 kill switch、钉版本、依赖变更怎么做?2 五本 runbook 各写什么,质量与成本 SLO 怎么定,谁值班?3

一、总览

1. 发布体系

%%{init: {"flowchart": {"wrappingWidth": 270}}}%%
%% 图:改动 = 发布:版本 → 门禁 → 灰度 → 生产 / 回滚,钉快照与 kill switch
flowchart TB
    C["<b>任何会改变模型行为的改动</b><br/>prompt · 模型快照 · effort · schema · 工具集 · 检索配置 · harness 版本"] -- "改动 = 发布" --> V["<b>不可变版本 + 标签</b><br/>staging / canary / production"]
    V --> G["门禁:评测集(《[评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测](/regression-gates-silent-model-updates-ab-and-online-evaluation.html)》)"]
    G -- "过" --> CN["灰度:特性开关按租户 / 比例放量"]
    CN -- "在线指标正常" --> PR["production"]
    CN -- "回归" --> RB["一键回滚到上一个版本"]
    PR -. "供应商别名指向新快照:钉住快照 + 依赖变更单独发布,<br/>两个变化不叠在一起" .-> V
    K["kill switch:供应商宕机 40 分钟 → 关掉 AI 功能走降级路径<br/>runbook 写清谁在什么信号下按"] -.-> PR

2. 本文的章节安排

第二章什么算发布与版本化;第三章特性开关与 kill switch;第四章钉版本与依赖变更;第五章回滚;第六章五本 runbook;第七章 SLO 与值班;第八章实践建议。

二、什么算发布

1. 清单

任何会改变模型行为或系统对模型输出的处理的东西:

算作发布的改动清单
类 例
prompt 系统提示文本与结构、few-shot、模板变量、分区标记
模型 模型 id / 快照、effort、temperature、max_tokens
输出契约 schema、解析与校验逻辑、出口定义
工具 工具集、工具描述、参数 schema、MCP server 及其版本 / 描述
检索 分块、embedding 模型、混合权重、rerank、k、过滤规则、索引重建
上下文管理 卸载 / 清理 / 压缩阈值、压缩 prompt、复述机制
权限与安全 权限档、执行策略、沙箱配置、guardrails 规则
harness 运行时版本、卫士阈值、预算
评测 judge 模型 / rubric、评测集版本(改尺子要重量基线)
路由 网关的路由表、fallback 链、级联分流器

原则:改动 = 发布,全部版本化、全部过门禁(《评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测》)、全部可回滚。”在控制台改一句”必须变成”提一个版本”。

2. 版本化

《Prompt 与上下文工程(06):prompt 当代码管——版本、评测、A/B,以及上下文 vs 检索》:不可变版本 + 标签(staging / canary / production);每次发布记六元组(评测集 × prompt × 模型快照 × 工具集 × 检索配置 × judge)+ 门禁结果 + 批准人(第五篇的责任矩阵)+ 时间。配置即代码(《评测、可观测与可追溯(06):可追溯——录制回放、决策点日志、失败分类与反馈绑定》):版本库或注册表,不在某人的控制台点击里。

三、特性开关与 kill switch

1. 每个 AI 功能一个开关

三种状态:开(正常)、降级(走非模型路径——规则回答、缓存答案、”稍后再试”、转人工;或走更便宜 / 更保守的配置)、关(功能不可用,有提示)。开关按租户 / 用户比例 / 环境生效——灰度就是把开关对 1% 用户打开新版本。

2. kill switch

秒级把一个功能切到降级或关——不经发布流程、不改代码、有权限的人(值班)能操作。用途:供应商宕机(切降级)、成本暴涨(关非核心)、注入 / 越权事件(关涉事功能)、质量骤降(切回旧版本或降级)。它是 《评测、可观测与可追溯(07):运行时可靠性与物理世界的仿真》 fallback 的最后一级、第二篇降级梯子的第五级——必须在上线前就存在并演练过。

3. 开关的层次

功能级(整个 AI 功能)、能力级(agent 的某个工具、检索的某路、judge 抽样)、版本级(prompt / 模型的 canary 与 production 标签)。层次让降级可以精细:关掉多查询检索省成本而不关功能,关掉某个 MCP server 而不关 agent。

%% 图:开关的三个层次与三种状态——功能级(整个 AI 功能:开 / 降级 / 关,按租户与比例),能力级(agent 的某个工具、检索的某一路、judge 抽样各自可关),版本级(prompt / 模型的 canary 与 production 标签);kill switch 是值班在秒级把任一层切到降级或关的权限,不经发布流程,上线前就要存在并演练过
flowchart TB
    subgraph F["功能级:「AI 客服」"]
        direction LR
        F1["开:正常"] --> F2["降级:规则回答 · 缓存答案 · 转人工<br/>或更便宜 / 保守的配置"] --> F3["关:不可用,有提示"]
    end
    subgraph C["能力级:功能内部各自可关"]
        direction LR
        C1["多查询检索"] ~~~ C2["某个 MCP server"] ~~~ C3["judge 抽样"] ~~~ C4["agent 的 shell 工具"]
    end
    subgraph V["版本级:标签"]
        direction LR
        V1["canary → prompt v13 · 1%"] ~~~ V2["production → prompt v12 · 99%"]
    end
    F ~~~ C ~~~ V
    KS["kill switch:值班秒级操作,不改代码不经发布<br/>供应商宕机 → 降级 · 成本暴涨 → 关非核心 · 注入事件 → 关涉事工具 · 质量骤降 → 标签回旧版"] -.-> F
    KS -.-> C
    KS -.-> V
    classDef ok fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef warn fill:#fff3e0,stroke:#c98a00,color:#222
    classDef bad fill:#fdecea,stroke:#c0392b,color:#222
    classDef n fill:#fff7e0,stroke:#c98a00,color:#222
    classDef ks fill:#eef6ff,stroke:#5b8fd6,color:#222
    class F1,V2 ok
    class F2,V1 warn
    class F3 bad
    class C1,C2,C3,C4 n
    class KS ks

四、钉版本与依赖变更

1. 钉一切

要钉住的依赖与不钉的后果
依赖 钉法 不钉的后果
模型 带日期的快照 id,不用浮动别名 供应商静默升级(《评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测》)
prompt 版本号 / 哈希 不知道线上跑的是哪版
工具集 版本号;MCP server 的版本 + 描述 / schema 哈希 描述投毒、行为漂移(第四篇)
检索 embedding 模型版本(换了要全量重建——《检索与知识接入(04):索引、混合检索与 rerank》)、索引版本 新旧向量不可比
harness 运行时版本(两个开源 harness 都在快速迭代——《工具、Agent 与 harness(06):源码级对照——Codex、DeepSeek Harness、Claude Code 与 OpenHarness》) 行为变、日志格式变
judge 模型快照 + rubric 版本 尺子变了
价目表 带日期 成本算错

2. 依赖变更是别人替你做的发布

供应商的模型更新、弃用(《模型作为组件(05):选型——榜单的失真、自己的评测集与供应商的弃用周期》的周期表)、价格变化、条款变化(第五篇)、API 变更(《模型作为组件(02):API 契约(一)——消息、工具调用、结构化输出与流式,四家 API 的共同骨架》的 2026 年变更清单)、MCP server 更新——都会改变系统行为,但不经你的流程。纳入的做法:探针集每日跑(《评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测》——模型指纹)、订阅通知(changelog、弃用邮件、状态页、MCP server 的 release)、登记与评估(第五篇的供应商变更治理)、决定(跟进 / 钉旧版 / 迁移 / 换 fallback 顺序),走同一套门禁与灰度。弃用是有截止日期的发布:日历上标出来,提前一个周期迁移。

%% 图:两种发布走同一条流程——你自己的改动(十类之一)提版本、过门禁、灰度、全量、监控;别人替你做的发布(供应商模型更新、弃用、价格、条款、API 变更、MCP server 更新)从探针漂移或通知进来,登记、影响评估后,同样决定跟进 / 钉旧版 / 迁移 / 换 fallback,走同一套门禁与灰度;弃用有截止日,日历上标出来提前一个周期迁移
flowchart TB
    subgraph MINE["你的发布:十类改动"]
        direction LR
        M1["提版本(不可变 + 标签)"] --> M2["门禁:评测集 × k · 逐条 diff · 成本 · 红队"]
    end
    subgraph THEIRS["别人替你做的发布"]
        direction LR
        T1["探针集每日:模型指纹漂移"] & T2["通知:changelog · 弃用邮件 · 条款 · MCP release"] --> T3["登记 + 影响评估(评测 · 成本 · 合规)"] --> T4["决定:跟进 / 钉旧版 / 迁移 / 换 fallback 顺序"]
    end
    M2 --> G["影子(高风险)→ 灰度 → 全量 → 监控(四类 SLO)→ 告警 → runbook → 回滚 / kill switch"]
    T4 --> M1
    CAL["弃用日历:关闭日前一个周期完成迁移"] -.-> T2
    classDef mine fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef theirs fill:#fff7e0,stroke:#c98a00,color:#222
    classDef g fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef cal fill:#fdecea,stroke:#c0392b,color:#222
    class M1,M2 mine
    class T1,T2,T3,T4 theirs
    class G g
    class CAL cal

3. 版本矩阵

线上同时存在的版本组合要可枚举:哪些租户在哪版 prompt × 哪个模型 × 哪版工具集。多租户 SaaS 里”给 A 客户钉旧模型”是常态,矩阵要能查、每个组合都在评测覆盖内。

五、回滚

1. 秒级

标签指回旧版本(prompt、路由表)或 kill switch 切降级——不重新部署代码。

2. 回滚前确认

3. 前向修复

有时回滚比修复更危险(回到有安全漏洞的旧版本)——用 kill switch 降级 + 前向修复。runbook 里写清每类事故回滚还是前向。

%% 图:回滚前的确认清单——标签指回旧版本是秒级的,但先确认:旧模型快照还在(弃用了就回不去,要走 fallback)、旧 prompt 与当前工具集 / schema 兼容、会话状态可读(加密压缩 item 不能跨模型、日志格式版本旧版能读)、检索配置与索引版本对齐;旧版本有安全漏洞时不回滚,用 kill switch 降级 + 前向修复;回滚本身也是一次发布要记录
flowchart TB
    E["事故:要回到上一版本"] --> Q1{"旧模型快照还在?"}
    Q1 -->|"已弃用"| FB["走 fallback,不是回滚"]
    Q1 -->|"在"| Q2{"旧 prompt 与当前工具集 / schema 兼容?"}
    Q2 -->|"否"| FIX["前向修复"]
    Q2 -->|"是"| Q3{"会话状态可读?<br/>加密压缩 item 跨模型?日志格式版本?"}
    Q3 -->|"否:会话中途的用户会断"| FIX
    Q3 -->|"是"| Q4{"旧版本有安全漏洞?"}
    Q4 -->|"是"| KS["kill switch 降级 + 前向修复"]
    Q4 -->|"否"| RB["回滚:标签指回(秒级)"]
    RB --> REC["记录 · 通知 · 事后分析(回滚也是发布)"]
    classDef dec fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef ok fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef alt fill:#fff7e0,stroke:#c98a00,color:#222
    classDef bad fill:#fdecea,stroke:#c0392b,color:#222
    class Q1,Q2,Q3,Q4 dec
    class RB,REC ok
    class FB,FIX alt
    class KS bad
    class E bad

六、五本 runbook

每本:触发条件(告警)、第一步(止损)、诊断(看什么)、处置(做什么)、恢复条件、事后(《评测、可观测与可追溯(06):可追溯——录制回放、决策点日志、失败分类与反馈绑定》的五段事后分析)、联系人。

1. 模型供应商宕机 / 严重降级

触发:错误率 / 超时率骤升、供应商状态页。止损:fallback 链自动切(《模型作为组件(06):客户端工程——重试、超时、幂等、限流与流式解析》的方向性——有状态会话降档不跨供应商);不够则 kill switch 切降级路径;用户提示”AI 功能暂时降级”。诊断:是全供应商还是某区域 / 某模型;网关的熔断状态。处置:调整路由表;监控 fallback 模型的质量与成本(它们不同)。恢复:供应商恢复且探针通过 → 逐步切回。事后:fallback 覆盖率与质量差距。

2. 成本暴涨

触发:每小时消耗 > 3× 基线(第二篇)。止损:降级梯子(切便宜模型 → 关增强 → 限流 → 收紧 agent 预算 → kill switch)。诊断:自动归因到功能 / 租户 / 版本;版本 diff 看刚发布了什么;长尾画像(是 agent 跑飞还是流量涨);缓存命中率(前缀被破坏?)。处置:回滚肇事版本或修卫士;异常租户限流。恢复:消耗回落 → 逐级恢复。

3. 注入 / 数据外传事件

触发:异常动作检测(陌生域名外联、敏感文件读取 + 外发)、用户报告、红队发现。止损:kill switch 关涉事功能或关涉事工具 / MCP server;撤销相关凭据。诊断:从 trace 找注入来源(哪个文档 / 邮件 / server)、影响范围(哪些会话读到了它、外传了什么)、哪一层没拦住(第四篇的五层)。处置:补防御层(输出脱敏、数据流规则、deny)、把攻击样本进红队集与评测集、按第五篇的责任矩阵通知法务与客户。恢复:防御到位 + 红队用例通过。

4. 越权 / 误操作事件

触发:沙箱拒绝骤升、用户报告数据被改 / 删、审计发现。止损:kill switch;停止相关 agent 会话;回滚数据(备份、git、提案机制——《工具、Agent 与 harness(08):memory 与 human-in-the-loop》)。诊断:审计链——哪个会话、哪步、什么权限判定放行了、为什么(决策点日志);PocketOS 五环自检(《工具、Agent 与 harness(05):权限、沙箱与安全边界》)。处置:执行策略加规则(prompt / forbidden)、权限档收紧、Guardian 审查 prompt 加模式、确认门。事后:五段分析,产出评测用例。

5. 质量骤降

触发:在线 judge / 拒答率 / 格式失败率 / 负反馈率超 SLO 错误预算,或探针漂移。止损:回滚到上一版本(若有本地发布)或切旧快照(若是供应商变更)。诊断:版本 diff 时间线——有本地变更吗?没有 → 探针确认供应商变更;三个数字定位(《检索与知识接入(07):检索评测与运营》 / 《评测、可观测与可追溯(04):回归与门禁——CI、供应商静默升级、A/B 与在线评测》);失败分类分布哪类涨了。处置:修 + 门禁 + 灰度;供应商变更则钉旧快照或跟进评测。

七、SLO 与值班

1. 四类 SLO

四类 SLO
类 指标 例
可用性 成功率(含 fallback 后的) 99.9%
延迟 TTFT p95、总时长 p95(第三篇) TTFT ≤ 1.5 s
质量 评测集分数、在线 judge 分、拒答率、格式失败率、负反馈率 在线 judge ≥ 4.0 / 5、格式失败 ≤ 0.5%、点踩率 ≤ 3%
成本 每任务成本 p95、每功能日消耗 p95 ≤ $0.50

质量与成本 SLO 是 AI 功能新增的两类;各有错误预算——预算耗尽时冻结非紧急发布、先修(SRE 的老规则)。

%% 图:四类 SLO 与错误预算——可用性(成功率含 fallback 后 99.9%)、延迟(TTFT p95 ≤ 1.5 s)、质量(在线 judge ≥ 4.0、格式失败 ≤ 0.5%、点踩率 ≤ 3%)、成本(每任务 p95 ≤ 0.50 美元);每类一个月度错误预算,消耗到 100% 就冻结非紧急发布先修;质量与成本是 AI 功能新增的两类,前两类是传统 SRE 的
flowchart LR
    subgraph SLO["四类 SLO(月度)"]
        direction TB
        A["<b>可用性:成功率 ≥ 99.9%</b><br/>(含 fallback 后)"] ~~~ L["延迟:TTFT p95 ≤ 1.5 s · 总时长 p95"] ~~~ Q["<b>质量:在线 judge ≥ 4.0 / 5</b><br/>格式失败 ≤ 0.5% · 点踩率 ≤ 3%"] ~~~ C["<b>成本:每任务 p95 ≤ 0.50 美元</b><br/>每功能日消耗"]
    end
    SLO --> EB["错误预算:每类允许的月度违约量"]
    EB -->|"消耗 < 100%"| GO["正常发布节奏"]
    EB -->|"耗尽"| FREEZE["<b>冻结非紧急发布 · 先修</b><br/>(SRE 的老规则)"]
    A -.- N1["传统 SRE 已有"]
    L -.- N1
    Q -.- N2["AI 功能新增"]
    C -.- N2
    classDef old fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef new fill:#fff7e0,stroke:#c98a00,color:#222
    classDef eb fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef bad fill:#fdecea,stroke:#c0392b,color:#222
    class A,L,N1 old
    class Q,C,N2 new
    class EB,GO eb
    class FREEZE bad

2. 告警

分级:页人的(可用性、安全事件、成本 > 3×、质量骤降)与看面板的(趋势、命中率、分流比)。告警带上下文:肇事的功能 / 租户 / 版本、最近的发布、对应的 runbook 链接。

3. 值班

AI 功能进值班轮转;值班手册 = 五本 runbook + kill switch 的操作权限与位置 + 联系人(安全、法务、供应商支持);定期演练(关一次 kill switch、切一次 fallback、回滚一次版本——在灰度环境)。

八、实践建议

  1. 列发布清单:第二章的十类全部版本化、过门禁;控制台改动禁止。
  2. 每个 AI 功能一个开关(开 / 降级 / 关,按租户与比例),kill switch 上线前存在并演练。
  3. 钉一切:模型快照、prompt、工具集与 MCP 哈希、embedding 版本、harness、judge、价目表;版本矩阵可查。
  4. 依赖变更纳入:探针每日、通知订阅、登记评估、弃用上日历。
  5. 回滚前确认清单;每类事故定回滚还是前向。
  6. 写五本 runbook,每本七段。
  7. 定四类 SLO 与错误预算;告警分级带上下文;AI 功能进值班;季度演练。

九、本文小结

  • 发布体系:什么算发布(十类,改动 = 发布)→ 版本化(不可变 + 六元组 + 批准人)→ 门禁 → 影子 → 灰度(开关按比例)→ 全量 → 监控 → runbook → 回滚 / kill switch;供应商与 MCP 变更是别人替你做的发布,经探针与通知进同一流程。
  • 开关三态(开 / 降级 / 关)按租户与比例;kill switch 秒级、上线前存在并演练;层次分功能 / 能力 / 版本。
  • 钉一切(模型快照、prompt、工具集与 MCP 哈希、embedding、harness、judge、价目表);版本矩阵可枚举;弃用是有截止日的发布。
  • 回滚秒级(移标签 / kill switch),前确认旧快照在、兼容、会话状态可读、索引对齐;有时前向修复更安全。
  • 五本 runbook(供应商宕机、成本暴涨、注入 / 外传、越权 / 误操作、质量骤降),每本七段。
  • 四类 SLO(可用性、延迟、质量、成本)与错误预算;告警分级带上下文;AI 功能进值班;演练。

十、自测

  1. 周五控制台改 prompt、周末供应商换快照、周一拒答率翻倍——按本文,哪几项缺失让它变成事故?

    答案

    (1)控制台改动没有版本化与门禁——不知道改了什么、不能回滚;(2)用浮动别名没钉快照——供应商变更未被察觉;(3)没有探针集——周末的变化没告警;(4)没有版本 diff 时间线——两个变化叠在一起分不清;(5)没有质量 SLO 告警——周一才靠人发现。修:十类全部版本化、钉快照、探针每日、版本 diff、质量 SLO 页人。详见第二章、第四章。

  2. kill switch 与回滚各在什么情形用?为什么 kill switch 必须在上线前就存在?

    答案

    回滚:本地发布造成的退化,且旧版本安全可用——指回旧版本。kill switch:供应商宕机、成本暴涨、安全事件、旧版本本身有问题(前向修复)——秒级切降级或关,不依赖旧版本。必须上线前存在:事故时没时间开发,且要有权限的人能立刻操作、演练过——它是 fallback 与降级梯子的最后一级。详见第三章、第五章。

  3. 供应商宣布某模型 90 天后弃用。按本文这是什么?要做什么?

    答案

    一次有截止日期的、别人替你做的发布。登记 → 评估(新模型在评测集上的表现、成本、tokenizer 与 API 差异——《模型作为组件(05):选型——榜单的失真、自己的评测集与供应商的弃用周期》)→ 排计划(提前一个周期,上日历)→ 新版本过门禁 → 影子 → 灰度 → 全量 → 更新 fallback 链与版本矩阵(给钉旧模型的租户单独迁移);弃用日前确认没有租户还在旧模型上。详见第四章。

  4. 一个越权事件:agent 删了客户数据。按第四本 runbook 写出前四步。

    答案

    (1)止损:kill switch 关涉事功能、停止相关 agent 会话、撤销该会话使用的凭据;(2)回滚数据:从备份 / git / 提案记录恢复;(3)诊断:审计链定位会话与步骤,决策点日志看哪条规则放行了、模型为什么决定删(是否”绕过障碍”)、PocketOS 五环自检哪环缺;(4)处置:执行策略加 forbidden / prompt、权限档收紧、Guardian 加模式、确认门;按责任矩阵通知法务与客户;五段事后分析产出评测用例。详见第六章。

  5. 质量 SLO 的错误预算耗尽了,团队有一个紧急的功能要发。怎么办?

    答案

    SRE 的老规则:错误预算耗尽冻结非紧急发布,先修质量(找失败分类里涨的那类、版本 diff、探针)直到预算恢复;真正紧急的功能走重流程(额外审批、影子 + 更小的灰度、更严的门禁)并记录例外。预算的意义就是让”质量”与”上新功能”有一个明确的取舍机制。详见第七章。

  1. 什么算发布:任何改变模型行为或对模型输出处理的东西——prompt(文本、结构、few-shot、模板)、模型(快照、effort、参数)、输出契约(schema、解析、出口)、工具(工具集、描述、schema、MCP server 版本与描述)、检索(分块、embedding、混合、rerank、k、过滤、索引)、上下文管理(阈值、压缩 prompt、复述)、权限与安全(权限档、执行策略、沙箱、guardrails)、harness(运行时版本、卫士、预算)、评测(judge、rubric、评测集——改尺子重量基线)、路由(路由表、fallback 链、分流器);改动 = 发布,控制台改动禁止。体系:版本化(不可变 + 标签 + 六元组 + 批准人 + 配置即代码)→ 门禁 → 影子(高风险)→ 灰度(开关按比例)→ 全量 → 监控四类 SLO → 告警 → runbook → 回滚 / kill switch;供应商与 MCP 的变更经探针与通知进同一流程。详见第一章、第二章。 ↩

  2. 开关:每个 AI 功能一个,三态(开 / 降级到非模型路径或保守配置 / 关有提示),按租户、用户比例、环境生效,灰度即对 1% 开新版本;层次分功能级、能力级(某工具、某检索路、judge 抽样)、版本级(标签)。kill switch:秒级切降级或关,不经发布流程、有权限的值班能操作,用于供应商宕机、成本暴涨、安全事件、质量骤降,是 fallback 与降级梯子的最后一级,上线前必须存在并演练。钉版本:模型用带日期快照不用浮动别名、prompt 版本 / 哈希、工具集版本与 MCP server 版本 + 描述 / schema 哈希、embedding 与索引版本、harness 版本、judge 快照 + rubric 版本、带日期价目表;版本矩阵(租户 × prompt × 模型 × 工具集)可枚举且在评测覆盖内。依赖变更是别人替你做的发布:探针集每日(模型指纹)、订阅 changelog / 弃用 / 状态页 / MCP release、登记与评估、决定(跟进 / 钉旧版 / 迁移 / 改 fallback),走同一门禁与灰度;弃用是有截止日的发布,上日历提前一周期迁。详见第三章、第四章。 ↩

  3. 五本 runbook 各七段(触发、止损、诊断、处置、恢复、事后、联系人):供应商宕机(fallback 链自动切、方向性、kill switch 降级、用户提示;诊断范围与熔断;恢复后逐步切回);成本暴涨(> 3× 基线;降级梯子;自动归因 + 版本 diff + 长尾画像 + 命中率;回滚或修卫士;逐级恢复);注入 / 外传(异常动作检测;kill switch 关涉事功能或 server + 撤销凭据;trace 找来源与影响范围与哪层没拦;补层、样本进红队集、按矩阵通知法务客户);越权 / 误操作(沙箱拒绝骤升或报告;kill switch + 停会话 + 回滚数据;审计链与决策点定位、五环自检;执行策略 / 权限档 / Guardian / 确认门);质量骤降(在线 judge / 拒答 / 格式 / 负反馈超预算或探针漂移;回滚或切旧快照;版本 diff、三个数字、失败分类;修 + 门禁 + 灰度)。SLO 四类:可用性(含 fallback 后成功率)、延迟(TTFT / 总时长 p95)、质量(评测分、在线 judge、拒答率、格式失败率、负反馈率)、成本(每任务 p95、每功能日消耗);各有错误预算,耗尽冻结非紧急发布。告警分页人 / 看面板,带功能 / 租户 / 版本 / 最近发布 / runbook 链接。AI 功能进值班轮转,值班手册 = runbook + kill switch 权限位置 + 联系人,季度演练(关开关、切 fallback、回滚)。详见第六章、第七章。 ↩

这篇对你有用?

本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/release-engineering-for-ai-features-switches-pinning-runbooks-and-slos.html)的前提下,欢迎各种形式的转载、翻译或商业引用。


COMMENTS

评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。

×