AI 学习笔记(二十七):LLM 例外正式化、退出标准与策略收敛最小实践
上一篇我们把“到期复盘”和“例外债清理”落地了。
但线上继续跑几周之后,团队通常会遇到第三层问题:
有些例外并不是该续期或关闭,而是已经变成长期能力候选。
常见场景很典型:
- 一个高风险工具白名单连续续期 3 次,业务仍强依赖
- 某条降级路由本是临时应急,后来成了常态流量路径
- 某个 prompt guard bypass 原本只给事故窗口,最后被多个团队默认复用
这时如果还只用 renew / close 二分法,治理会越来越僵。
因为你缺的是中间地带:
- 什么时候应该把“例外”升级成“正式策略”
- 什么时候必须定义硬退出标准(sunset criteria)
- 多条例外并存时,怎么收敛成一套可维护策略
这篇继续沿着生产运维主线,给一套最小可执行框架:
用 formalize + sunset + convergence 三步,把例外治理从“审批动作”变成“策略演进”。
1. 例外治理最容易卡住的三种状态
做到到期复盘后,很多团队会进入下面三种反复状态。
状态 A:可续可不续,长期拖延
复盘会上大家都承认风险还在,但也说不清什么时候能关。
最后通常是“再续一周”。
状态 B:明明是长期刚需,却不敢正式化
团队担心一旦正式化就“失去谨慎”,于是一直挂在临时例外名下。
结果是长期能力没有配套审计、权限模型和发布约束。
状态 C:例外越来越多,策略逐渐碎片化
每次事故、每次紧急变更都多一条例外。
半年后已经没人能完整回答:
- 默认策略到底是什么
- 哪些分支是临时,哪些分支是长期
- 不同团队对同一风险的处理是否一致
所以仅靠到期复盘还不够。
要稳定运行,需要再加两条强约束:
- 例外要么走向退出,要么走向正式化
- 多条例外必须周期性收敛回统一策略
2. 什么时候该 formalize,不要再“伪临时”
“正式化”不是放松治理,而是把已经事实长期存在的路径拉回可控系统。
一个例外满足下面 4 条中的 3 条,就应该优先进入 formalize 评估:
- 连续续期次数高(例如
renew_count >= 2) - 覆盖范围持续扩大(从单租户到多租户,或从只读到写路径)
- 业务流程对该例外形成明确依赖
- 关闭成本显著高于补齐治理成本
formalize 的最小落地,不是“改个字段”。
至少要补齐这 5 件事:
- 把临时规则写入正式 policy 文档与配置源
- 为该能力补充权限边界和审计事件
- 接入发布闸门和回滚校验
- 明确 owner、SLO 影响与观测指标
- 关闭旧例外记录,防止“双轨并行”
关键点在于:
如果团队已经长期依赖这条路径,就不该再让它以“特批残留”身份存在。
3. Sunset Criteria:退出标准必须可验证、可执行
很多团队会写“条件成熟后关闭”。
这不算 sunset criteria,这只是愿望。
可执行的退出标准,建议至少覆盖 4 层。
1) 业务层(Business)
- 哪类流量可迁回默认路径
- 哪些租户已完成迁移
- 是否存在不可替代场景
2) 技术层(Technical)
- 替代方案是否上线并稳定一段观察窗
- 关键指标是否达到阈值(错误率、延迟、成本)
- 回滚路径是否演练通过
3) 治理层(Governance)
- 例外所需临时权限是否可回收
- 相关 runbook / on-call 手册是否更新
- 审计字段是否完整归档
4) 时间层(Time-bound)
- 明确最晚退出日(hard deadline)
- 超期后的强制动作(冻结新增、限制发布、升级审批)
只有这四层同时成立,close 才不是口头承诺。
4. Policy Convergence:把“很多例外”收回“一套策略”
例外数量增长不可怕,可怕的是不收敛。
策略收敛建议做成固定节奏,比如双周一次。
每次收敛只做三件事:
- 聚类:按风险类型、影响面、触发条件聚合同类例外
- 归并:把可复用的处理逻辑沉淀为统一 policy 条目
- 清理:关闭被新 policy 覆盖的历史例外
一个实用判据是:
- 当同类例外数量 >= 3
- 且适用条件 70% 以上重叠
- 且持续出现超过一个迭代
就应触发 convergence review,而不是继续新增独立例外单。
这一步能直接降低两类长期成本:
- 决策成本:值班和审批不再每次“从零判断”
- 维护成本:策略逻辑集中后,变更风险更可预测
5. 一个最小可落地的数据模型与决策函数
下面给一个服务层最小示例,核心是把 renew / close / formalize 判定显式化,并把 sunset 检查独立成函数。
1 | type Disposition = 'close' | 'renew' | 'downgrade' | 'formalize'; |
这里的重点不是分值本身,而是三条工程约束:
formalize需要明确触发条件,不靠会议感觉close必须绑定 sunset 通过,而不是只看“风险似乎变小”- 高影响例外默认先
downgrade缩范围,再谈续期
6. 接进现有发布与事故治理链路
把 formalize / sunset / convergence 接回你已有流程,才能避免它再次沦为文档。
发布闸门
- 存在超期例外且未通过 sunset:阻断高风险发布
- 存在高依赖高续期例外:要求补 formalize 决策记录
事故关闭
- 事故关联例外必须声明最终去向:
close / renew / downgrade / formalize - 无去向记录,incident 不允许直接 closeout
值班节奏
- 在 on-call 周会固定过一遍 “T-72h 即将到期例外”
- 对连续续期项强制创建 action item,指定拆除 owner
策略评审
- 双周做一次 convergence review
- 输出“新增正式策略”和“可关闭历史例外”清单
把这几处打通后,例外治理会从“单点审批”升级为“持续工程动作”。
7. 一周最小落地顺序
如果你希望在不改大架构的前提下快速落地,可以按这个顺序推进:
Day 1:在现有例外单里补renew_count与disposition字段Day 2:定义统一 sunset 模板(业务/技术/治理/时间四层)Day 3:给renew_count >= 2的例外强制触发 formalize 评审Day 4:把超期未通过 sunset 的例外接入发布阻断条件Day 5:执行一次 convergence review,关闭一批已覆盖旧例外
你不需要一开始就上完整平台。
只要先把“何时正式化、何时退出、何时收敛”三件事写成硬规则,例外治理质量就会明显提升。
总结
风险接受治理做到后半段,真正的分水岭不是审批做得多细,而是能不能回答三个问题:
- 哪些例外应该正式化
- 哪些例外必须按退出标准关闭
- 多条临时策略如何收敛成统一 policy
当这三件事可执行、可验证、可追踪时,系统才不会长期依赖“临时特批路径”运行。