AI 学习笔记(六十三):LLM 治理平台 change safety 最小实践
上一篇把治理平台的可观测性往前推了一步:不再只看运维仪表盘,而是让 dashboard 和 alerting 能支撑治理决策。
但仪表盘做得再全,也挡不住另一个老问题:治理平台自己也在持续变更。
规则阈值要调,团队 overlay 要改,默认 baseline 要升级,例外策略要收敛。如果这些改动没有单独的 change safety 设计,平台很容易陷入一种尴尬状态:
- 治理能力本来是为了压风险,结果某次策略改动反而把正常流量拦住了
- baseline 升级想统一规则,结果把团队已验证过的本地补丁一起冲掉
- 配置调优只看单条规则,没看联动副作用,最后误伤面比预期大很多
这篇继续沿着生产运维主线往下写,聚焦三件事:
- 治理平台的变更怎样做风险分级,避免所有改动都走同一条流水线
- 策略、配置和 baseline 升级怎样做评审、灰度和回退
- 治理系统怎样证明“这次改动本身是安全的”,而不是把风险留给业务侧去兜
1. 治理变更最怕的,不是慢,而是误把自己当成低风险系统
很多团队对业务发布会做 canary、做回滚、做 freeze,但一到治理平台自己,心态就容易松下来。
原因也简单:治理系统常常不直接处理用户主链路,它更像一个“规则系统”或“门禁系统”,于是人会本能觉得这里改坏了最多就是拦截偏一点,不至于像业务代码那样出大事故。
这个判断经常错。
因为治理改动的影响面通常有两个特点:
- 它跨团队、跨场景、跨环境扩散得很快
- 它一旦判断错,误伤的是“谁能发布、谁能放量、谁能用某类能力”
也就是说,治理平台虽然不一定直接返回给终端用户页面,但它会直接改写很多团队的运行路径。
所以我更愿意把治理平台当成一种“控制面系统”。
控制面变更如果没有自己的 change safety,后果往往不是单个功能挂掉,而是很多团队同时被带偏。
2. 先把变更分成三类,不要所有东西都叫“配置调整”
治理改动最常见的问题,是变更单里只写一句“更新策略配置”。
这类描述太粗了。真正落地时,至少要把改动拆成三类:
1) strategy_tuning
规则还在,但阈值、动作级别、命中条件在调。
典型例子:
warn -> soft_block0.82 -> 0.88- 增减某类 pattern、例外白名单或优先级顺序
2) overlay_adjustment
平台 baseline 不动,只改某个团队或某组租户的覆盖层。
典型例子:
- 某团队提高 PII threshold
- 某租户加临时 override
- 某业务线补一个本地 domain filter
3) baseline_upgrade
这类是最重的。不是改一条参数,而是改默认继承逻辑、策略包版本或规则集合本身。
典型例子:
- 默认策略包从
2.2.x升到2.3.x - 旧的 risk score 模型被新的判断逻辑替换
- 平台把多个局部规则收敛进统一 baseline
这三类改动,评审深度、灰度范围和回退方案都不该一样。
3. 风险分级要看“误伤面”和“放风险面”两条线
治理变更不是只有“拦多了”一种风险,也不是只有“放松了”一种风险。
真正要同时看的是两条线:
- 误伤面扩大了多少
- 放风险面的概率抬高了多少
一个实用的最小分级可以这样做:
1 | governance_change_risk: |
这里我最看重的不是字段是否完整,而是它强迫团队正面回答两个问题:
- 这次变更会影响几个人、几个团队、几条链路
- 它是在让系统更严、更松,还是直接换了一套判断逻辑
只要这两个问题答不清,后面的评审基本都会失真。
4. 评审时不要只看“规则对不对”,还要看联动副作用
治理平台评审最容易偷懒的地方,是把注意力只放在目标规则上。
比如有人把某条 high_risk_tool_gate 调得更严,看起来理由很充分:最近有真实误调用,规则当然应该收紧。
但真正上线前,你还得追问:
- 这条规则会不会把原本在别的队列里通过的请求全部挡回人工审核
- 它会不会逼团队转去申请更多临时例外
- 它和已有的 fallback / freeze / override 规则叠起来以后,会不会形成新的死角
所以评审记录里,最好把“联动副作用”单独拉出来写:
1 | change_review: |
只要副作用没写出来,这次评审大概率只是“规则局部正确”,不是“系统整体安全”。
5. 灰度别只做按流量切,还要按治理作用域切
业务系统常见的 canary 是按流量切 1%、5%、20%。
治理平台不完全一样。很多时候更有价值的切法是按治理作用域切:
- 先单团队
- 再同类团队
- 再全局 baseline
因为治理改动是否安全,和流量量级有关,但和“业务差异是否被覆盖”更有关。
一个更像样的灰度顺序通常是:
1 | governance_canary: |
这个顺序的价值在于:先验证局部真实语境,再放大,不要一上来就把 baseline 扔给所有团队。
6. 治理变更的回退对象,不只是配置,还包括继承关系和例外状态
很多人说自己有回退,其实只准备了“把配置文件改回去”。
这在治理平台里往往不够。
因为真正会出问题的,不只是某条值本身,而是下面这些东西:
- baseline 和 overlay 的继承关系是不是被改了
- 某些临时例外是不是因为新规则被自动关闭或自动迁移了
- 某个团队是不是已经根据新规则补了本地 patch
也就是说,治理回退至少要能恢复三类对象:
policy_versioninheritance_mappingexception_state
一个最小回退记录可以长这样:
1 | rollback_bundle: |
顺序也很关键。
如果先回滚 policy,再把例外状态硬套回去,经常会出现“规则回去了,但例外状态已经不兼容”的问题。
7. baseline upgrade 最好先做兼容演练,再做正式切换
baseline_upgrade 是最值得单独拿出来讲的一类,因为它最像“平台版本升级”,而不是普通配置调优。
我一般会要求它在正式切换前先跑一轮兼容演练,至少回答四件事:
- 哪些团队 overlay 会直接继承新 baseline
- 哪些团队 overlay 会因为字段变化、优先级变化或语义变化发生冲突
- 哪些旧例外在新 baseline 下应该自动收敛,哪些必须手工续留
- 如果切换失败,怎么按团队批次撤回,而不是全局一键回退
这轮演练最好别停在静态 diff。
更实用的做法是拿近期真实请求样本,做一次“旧 baseline 判定”和“新 baseline 判定”的并行比对。
1 | baseline_upgrade_rehearsal: |
治理升级如果不先做这种演练,就很容易把“版本升级”做成“现场试错”。
8. 证明改动安全,不是只看没报警,而是要有 post-change 验证集
很多变更上线后,只要 dashboard 没大红、告警没炸,就被默认当成安全了。
这条标准太低。
治理平台更稳的做法,是为每类高风险改动准备一组固定的 post-change 验证:
- 命中率有没有异常偏移
- 误杀率有没有在关键团队跳高
- 临时例外、人工审核、回退申请有没有反弹
- 原本重点盯防的真实风险有没有漏出来
我更愿意把它叫“变更后验证集”,而不是泛泛的 smoke check。
1 | post_change_verification: |
这一步的核心不是追求零波动,而是让“是否安全”有一组稳定证据,不用每次靠感觉拍板。
9. 一周最小落地顺序
Day 1
把治理改动拆成strategy_tuning / overlay_adjustment / baseline_upgradeDay 2
给三类改动补 blast radius、effect type 和 runtime path 三个风险字段Day 3
固化评审模板,把联动副作用写成必填项Day 4
为高风险改动接入按作用域推进的 canary,而不是只按流量切Day 5
为 baseline upgrade 增加回放式兼容演练Day 6 - Day 7
固化 rollback bundle 和 post-change verification,至少覆盖版本、继承关系和例外状态
做到这一步,治理平台就不再只是“能改规则”,而是开始具备“改规则也有自己的安全边界”。
小结
治理平台真正危险的地方,不是它有很多规则,而是大家很容易把它当成低风险配置系统。
一旦平台开始服务多个团队、多个租户、多个风险场景,策略变更、overlay 调整和 baseline 升级都应该被当成控制面变更来处理。
如果这周只能先做最小版本,我会优先抓三件事:
- 任何治理改动先分类型和分风险,不再笼统叫“配置调整”
- 高风险改动必须按治理作用域做 canary,不直接全局切换
- 回退要覆盖 policy、继承关系和例外状态,不只回滚一份配置文件
这样治理平台才不会在“压业务风险”的同时,自己悄悄变成新的风险源。
下一篇可以继续写:LLM 治理 baseline 升级兼容矩阵、策略迁移账本与跨团队 cutover 节奏。