AI 学习笔记(六十三):LLM 治理平台 change safety 最小实践

上一篇把治理平台的可观测性往前推了一步:不再只看运维仪表盘,而是让 dashboard 和 alerting 能支撑治理决策。

但仪表盘做得再全,也挡不住另一个老问题:治理平台自己也在持续变更。

规则阈值要调,团队 overlay 要改,默认 baseline 要升级,例外策略要收敛。如果这些改动没有单独的 change safety 设计,平台很容易陷入一种尴尬状态:

  1. 治理能力本来是为了压风险,结果某次策略改动反而把正常流量拦住了
  2. baseline 升级想统一规则,结果把团队已验证过的本地补丁一起冲掉
  3. 配置调优只看单条规则,没看联动副作用,最后误伤面比预期大很多

这篇继续沿着生产运维主线往下写,聚焦三件事:

  1. 治理平台的变更怎样做风险分级,避免所有改动都走同一条流水线
  2. 策略、配置和 baseline 升级怎样做评审、灰度和回退
  3. 治理系统怎样证明“这次改动本身是安全的”,而不是把风险留给业务侧去兜

1. 治理变更最怕的,不是慢,而是误把自己当成低风险系统

很多团队对业务发布会做 canary、做回滚、做 freeze,但一到治理平台自己,心态就容易松下来。

原因也简单:治理系统常常不直接处理用户主链路,它更像一个“规则系统”或“门禁系统”,于是人会本能觉得这里改坏了最多就是拦截偏一点,不至于像业务代码那样出大事故。

这个判断经常错。

因为治理改动的影响面通常有两个特点:

  1. 它跨团队、跨场景、跨环境扩散得很快
  2. 它一旦判断错,误伤的是“谁能发布、谁能放量、谁能用某类能力”

也就是说,治理平台虽然不一定直接返回给终端用户页面,但它会直接改写很多团队的运行路径。

所以我更愿意把治理平台当成一种“控制面系统”。
控制面变更如果没有自己的 change safety,后果往往不是单个功能挂掉,而是很多团队同时被带偏。

2. 先把变更分成三类,不要所有东西都叫“配置调整”

治理改动最常见的问题,是变更单里只写一句“更新策略配置”。

这类描述太粗了。真正落地时,至少要把改动拆成三类:

1) strategy_tuning

规则还在,但阈值、动作级别、命中条件在调。

典型例子:

  1. warn -> soft_block
  2. 0.82 -> 0.88
  3. 增减某类 pattern、例外白名单或优先级顺序

2) overlay_adjustment

平台 baseline 不动,只改某个团队或某组租户的覆盖层。

典型例子:

  1. 某团队提高 PII threshold
  2. 某租户加临时 override
  3. 某业务线补一个本地 domain filter

3) baseline_upgrade

这类是最重的。不是改一条参数,而是改默认继承逻辑、策略包版本或规则集合本身。

典型例子:

  1. 默认策略包从 2.2.x 升到 2.3.x
  2. 旧的 risk score 模型被新的判断逻辑替换
  3. 平台把多个局部规则收敛进统一 baseline

这三类改动,评审深度、灰度范围和回退方案都不该一样。

3. 风险分级要看“误伤面”和“放风险面”两条线

治理变更不是只有“拦多了”一种风险,也不是只有“放松了”一种风险。
真正要同时看的是两条线:

  1. 误伤面扩大了多少
  2. 放风险面的概率抬高了多少

一个实用的最小分级可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
governance_change_risk:
dimensions:
blast_radius:
- single_team
- multi_team
- global
effect_type:
- stricter
- looser
- logic_replacement
runtime_path:
- review_only
- release_gate
- runtime_enforcement
levels:
low:
example: single_team overlay threshold tune
medium:
example: multi_team release gate rule strength change
high:
example: global baseline upgrade or runtime logic replacement

这里我最看重的不是字段是否完整,而是它强迫团队正面回答两个问题:

  1. 这次变更会影响几个人、几个团队、几条链路
  2. 它是在让系统更严、更松,还是直接换了一套判断逻辑

只要这两个问题答不清,后面的评审基本都会失真。

4. 评审时不要只看“规则对不对”,还要看联动副作用

治理平台评审最容易偷懒的地方,是把注意力只放在目标规则上。

比如有人把某条 high_risk_tool_gate 调得更严,看起来理由很充分:最近有真实误调用,规则当然应该收紧。
但真正上线前,你还得追问:

  1. 这条规则会不会把原本在别的队列里通过的请求全部挡回人工审核
  2. 它会不会逼团队转去申请更多临时例外
  3. 它和已有的 fallback / freeze / override 规则叠起来以后,会不会形成新的死角

所以评审记录里,最好把“联动副作用”单独拉出来写:

1
2
3
4
5
6
7
8
9
10
11
change_review:
change_id: GOV-CHG-2026-0515-03
type: strategy_tuning
target_rule: high_risk_tool_gate
expected_gain:
- lower risky write pass-through
linked_side_effects:
- possible manual review queue growth
- possible temporary exception rebound
- possible release wait-time increase
reviewer_decision: approve_with_canary

只要副作用没写出来,这次评审大概率只是“规则局部正确”,不是“系统整体安全”。

5. 灰度别只做按流量切,还要按治理作用域切

业务系统常见的 canary 是按流量切 1%、5%、20%。
治理平台不完全一样。很多时候更有价值的切法是按治理作用域切:

  1. 先单团队
  2. 再同类团队
  3. 再全局 baseline

因为治理改动是否安全,和流量量级有关,但和“业务差异是否被覆盖”更有关。

一个更像样的灰度顺序通常是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
governance_canary:
stage_1:
scope: single_team_overlay
duration: 3_days
success_signals:
- no abnormal false_block_spike
- no risky_escape_incident_increase
stage_2:
scope: same_domain_multi_team
duration: 7_days
success_signals:
- review_queue_growth_within_limit
- exception_rebound_not_significant
stage_3:
scope: global_baseline
duration: 14_days
success_signals:
- cross_team metrics stable
- no reopen signal triggered

这个顺序的价值在于:先验证局部真实语境,再放大,不要一上来就把 baseline 扔给所有团队。

6. 治理变更的回退对象,不只是配置,还包括继承关系和例外状态

很多人说自己有回退,其实只准备了“把配置文件改回去”。

这在治理平台里往往不够。

因为真正会出问题的,不只是某条值本身,而是下面这些东西:

  1. baseline 和 overlay 的继承关系是不是被改了
  2. 某些临时例外是不是因为新规则被自动关闭或自动迁移了
  3. 某个团队是不是已经根据新规则补了本地 patch

也就是说,治理回退至少要能恢复三类对象:

  1. policy_version
  2. inheritance_mapping
  3. exception_state

一个最小回退记录可以长这样:

1
2
3
4
5
6
7
8
rollback_bundle:
policy_version: 2.2.4
inheritance_mapping_snapshot: map-2026-0515-01
exception_state_snapshot: exc-state-2026-0515-01
restore_order:
- restore_policy_version
- restore_inheritance_mapping
- reconcile_exception_state

顺序也很关键。
如果先回滚 policy,再把例外状态硬套回去,经常会出现“规则回去了,但例外状态已经不兼容”的问题。

7. baseline upgrade 最好先做兼容演练,再做正式切换

baseline_upgrade 是最值得单独拿出来讲的一类,因为它最像“平台版本升级”,而不是普通配置调优。

我一般会要求它在正式切换前先跑一轮兼容演练,至少回答四件事:

  1. 哪些团队 overlay 会直接继承新 baseline
  2. 哪些团队 overlay 会因为字段变化、优先级变化或语义变化发生冲突
  3. 哪些旧例外在新 baseline 下应该自动收敛,哪些必须手工续留
  4. 如果切换失败,怎么按团队批次撤回,而不是全局一键回退

这轮演练最好别停在静态 diff。
更实用的做法是拿近期真实请求样本,做一次“旧 baseline 判定”和“新 baseline 判定”的并行比对。

1
2
3
4
5
6
7
8
9
10
11
12
baseline_upgrade_rehearsal:
old_version: 2.2.4
new_version: 2.3.0
replay_sample_size: 5000
compare:
- block_rate_delta
- false_positive_delta
- exception_dependency_delta
- manual_review_queue_delta
decision_gate:
- if false_positive_delta > threshold => hold_upgrade
- if exception_dependency_delta unexpected => investigate

治理升级如果不先做这种演练,就很容易把“版本升级”做成“现场试错”。

8. 证明改动安全,不是只看没报警,而是要有 post-change 验证集

很多变更上线后,只要 dashboard 没大红、告警没炸,就被默认当成安全了。
这条标准太低。

治理平台更稳的做法,是为每类高风险改动准备一组固定的 post-change 验证:

  1. 命中率有没有异常偏移
  2. 误杀率有没有在关键团队跳高
  3. 临时例外、人工审核、回退申请有没有反弹
  4. 原本重点盯防的真实风险有没有漏出来

我更愿意把它叫“变更后验证集”,而不是泛泛的 smoke check。

1
2
3
4
5
6
7
8
9
10
11
12
post_change_verification:
change_id: GOV-CHG-2026-0515-03
checks:
- name: false_block_rate_by_team
expectation: stable
- name: risky_escape_incident_count
expectation: not_up
- name: temporary_exception_rebound
expectation: not_up
- name: manual_review_queue_waiting_time
expectation: within_budget
final_status: pass_with_watch

这一步的核心不是追求零波动,而是让“是否安全”有一组稳定证据,不用每次靠感觉拍板。

9. 一周最小落地顺序

  1. Day 1
    把治理改动拆成 strategy_tuning / overlay_adjustment / baseline_upgrade
  2. Day 2
    给三类改动补 blast radius、effect type 和 runtime path 三个风险字段
  3. Day 3
    固化评审模板,把联动副作用写成必填项
  4. Day 4
    为高风险改动接入按作用域推进的 canary,而不是只按流量切
  5. Day 5
    为 baseline upgrade 增加回放式兼容演练
  6. Day 6 - Day 7
    固化 rollback bundle 和 post-change verification,至少覆盖版本、继承关系和例外状态

做到这一步,治理平台就不再只是“能改规则”,而是开始具备“改规则也有自己的安全边界”。

小结

治理平台真正危险的地方,不是它有很多规则,而是大家很容易把它当成低风险配置系统。

一旦平台开始服务多个团队、多个租户、多个风险场景,策略变更、overlay 调整和 baseline 升级都应该被当成控制面变更来处理。

如果这周只能先做最小版本,我会优先抓三件事:

  1. 任何治理改动先分类型和分风险,不再笼统叫“配置调整”
  2. 高风险改动必须按治理作用域做 canary,不直接全局切换
  3. 回退要覆盖 policy、继承关系和例外状态,不只回滚一份配置文件

这样治理平台才不会在“压业务风险”的同时,自己悄悄变成新的风险源。

下一篇可以继续写:LLM 治理 baseline 升级兼容矩阵、策略迁移账本与跨团队 cutover 节奏

本文永久链接: https://www.mulianju.com/learning-notes/ai-learning-notes-llm-governance-change-safety-strategy-config-baseline-upgrade-review-canary/