Appearance
审批策略模拟专题
版本:
v1.1最后更新:
2026-07-06适用对象:负责 AI 审批策略、风险分层、人工复核、灰度发布、上线门禁和安全治理的产品、平台、安全、算法与运营团队。
1. 为什么需要审批策略模拟
很多审批策略上线后才暴露问题:
- 拦得太松,高风险请求漏了
- 拦得太严,业务流程全卡住了
- 人工审批量突然暴涨,运营团队扛不住
- 低风险请求也被层层升级,用户体验变差
- 新策略看起来更安全,但误拦率和处理时长一起上升
- 策略变更后没有对照组,没人说得清到底好在哪里
这些问题如果在线上真实流量里才发现,代价通常很高。
审批策略模拟的目标是:
- 在策略真实上线前,用历史样例、失败样例、边界样例或影子流量演练策略表现
- 估算新策略对风险、效率、人工负担和业务体验的影响
- 判断策略是否满足上线门槛
- 把策略变更从“拍脑袋发布”变成“有证据发布”
NIST AI RMF 强调风险管理需要先测量再管理;OpenAI 的 eval 实践强调用可重复样本验证系统行为;Google SRE 的灰度和发布思路也适合审批策略:先小范围验证,再逐步放量,保留回滚路径。
2. 什么是审批策略模拟
审批策略模拟可以理解为:
- 在不影响真实业务决策的前提下,用一批样例或影子流量运行新审批策略,并对比它与旧策略、人工标注或目标规则之间的差异
它不是只看规则能不能执行,而是要回答:
- 新策略会多拦哪些请求
- 新策略会多放哪些请求
- 哪些风险被更好地拦住
- 哪些正常业务被误伤
- 人工审批量会增加还是减少
- 审批链路会变长还是变短
- 是否满足上线门槛
一个完整模拟通常包含:
text
历史样例 / 影子流量
-> 新旧策略并行判定
-> 指标对比
-> 差异样例下钻
-> 风险评审
-> 灰度或回滚决策3. 审批策略为什么特别需要模拟
审批策略天然存在 trade-off。
3.1 安全与效率的冲突
策略越严格:
- 误放可能下降
- 高风险召回可能上升
- 人工审批量可能增加
- 平均处理时长可能变长
- 误拦可能增加
策略越宽松:
- 处理效率可能提高
- 人工负担可能下降
- 误拦可能减少
- 高风险误放可能增加
没有模拟,团队很容易只看到策略的单侧收益,看不到代价。
3.2 单条规则正确不代表整体策略正确
一条规则单独看可能合理,但多条规则组合后可能产生意外效果。
例如:
- 风险规则 A 把低置信度请求升级
- 风险规则 B 把外部发送动作升级
- 风险规则 C 把敏感词命中请求升级
三条规则单独都合理,但合在一起可能导致 70% 请求进入人工队列。
审批策略模拟要看整体系统行为,而不是只验证单条规则。
3.3 线上试错成本高
审批策略一旦影响真实业务,错误会直接带来:
- 安全事件
- 用户投诉
- 工单积压
- 审核人过载
- 业务延迟
- 合规审计风险
因此审批策略应该先离线模拟,再影子运行,最后灰度发布。
4. 哪些策略适合优先模拟
并不是所有策略都需要复杂模拟。优先模拟高风险、高频、影响面大的策略。
4.1 高风险操作
例如:
- 删除数据
- 修改权限
- 导出敏感数据
- 对外发送邮件或通知
- 执行付款、退款、转账
- 自动关闭工单
- 自动发布内容
这些场景误放成本高,必须优先模拟。
4.2 高频低风险操作
例如:
- 普通内容发布
- 客服回复建议
- 标签分类
- 普通知识库问答
这些场景单次风险低,但流量大。如果策略过严,会造成大量人工负担。
4.3 历史失败高发场景
例如:
- 历史误放样例
- 历史误拦样例
- 审核分歧样例
- 用户申诉成功样例
- 事故复盘样例
这些样例最能暴露策略边界。
4.4 新增能力上线
例如:
- 新模型
- 新工具
- 新 Prompt
- 新风险标签
- 新业务场景
- 新自动审批规则
新增能力可能改变风险分布,不能直接套旧策略。
5. 模拟样本集怎么构建
审批策略模拟的质量取决于样本集。
5.1 样本来源
推荐来源:
- 历史审批请求
- 人工审核记录
- 误放复盘样例
- 误拦申诉样例
- 安全事件样例
- 红队测试样例
- 专家构造边界样例
- 影子流量
不要只拿“正常样例”模拟。正常样例会让策略看起来很好,但无法证明策略能处理风险边界。
5.2 样本分层
建议至少分成:
| 样本类型 | 作用 |
|---|---|
| 正常通过样例 | 验证策略不会误伤常规业务 |
| 正常拦截样例 | 验证策略能拦住明确风险 |
| 高风险边界样例 | 验证规则阈值和升级逻辑 |
| 历史误放样例 | 验证新策略是否修复风险漏洞 |
| 历史误拦样例 | 验证新策略是否减少业务误伤 |
| 攻击样例 | 验证提示注入、越权、敏感信息风险 |
| 低质量输入样例 | 验证信息不足时是否稳妥处理 |
5.3 每条样例记录什么
建议结构:
json
{
"case_id": "approval-sim-001",
"scenario": "external_email_send",
"input": {
"user_request": "把这份客户名单发到外部邮箱",
"tool": "send_email",
"risk_signals": ["external_recipient", "customer_data"]
},
"ground_truth": "escalate",
"old_policy_decision": "approve",
"risk_level": "high",
"tags": ["historical_false_allow", "pii", "external_action"],
"expected_reason": "涉及客户数据外发,需要人工审批"
}关键字段:
- 场景
- 输入
- 风险信号
- 人工标注结果
- 历史策略结果
- 标签
- 期望原因
6. 模拟要输出哪些结果
一次审批策略模拟至少要输出 5 类结果。
6.1 决策变化
看新旧策略的决策差异。
| 类型 | 含义 |
|---|---|
| approve -> approve | 无变化 |
| approve -> escalate | 新策略更严格 |
| approve -> reject | 新策略明显收紧 |
| escalate -> approve | 新策略更宽松 |
| reject -> escalate | 新策略放松但仍保守 |
| reject -> approve | 高风险变化,需要重点审查 |
决策变化率过高说明策略影响面大,需要谨慎灰度。
6.2 质量指标
包括:
- 误放率
- 误拦率
- 高风险召回率
- 放行准确率
- 拦截准确率
- 人工复核一致率
质量指标决定策略是否安全。
6.3 效率指标
包括:
- 人工审批占比
- 升级审批占比
- 平均审批链长度
- 预计处理时长
- 队列积压变化
效率指标决定策略是否可运营。
6.4 风险指标
包括:
- 新增高风险放行数
- 新增高风险拦截数
- 越权请求放行数
- 敏感数据外发放行数
- 高风险工具未确认数
风险指标应该有一票否决项。
6.5 差异样例
必须保留:
- 新策略新增拦截样例
- 新策略新增放行样例
- 新旧策略冲突样例
- 高风险差异样例
- 人工标注与策略不一致样例
没有差异样例,模拟报告就无法解释指标变化。
7. 审批策略模拟的三层视角
7.1 规则层
关注每条规则:
- 命中多少样例
- 命中哪些场景
- 误命中多少
- 漏命中多少
- 是否与其他规则冲突
适合回答:
- 哪条规则贡献了最多拦截
- 哪条规则误伤最多
- 哪条规则几乎没有效果
7.2 流程层
关注审批链:
- 是否进入人工审批
- 是否进入二级审批
- 是否需要安全团队审批
- 是否需要业务 owner 审批
- 审批链长度是否变化
- 是否出现循环或重复审批
适合回答:
- 新策略是否让流程变长
- 哪个节点会成为瓶颈
- 是否需要拆分队列或优化 UI
7.3 业务层
关注业务结果:
- 高风险是否减少
- 正常业务是否被误伤
- 用户等待是否增加
- 人工成本是否上升
- 是否影响 SLA
适合回答:
- 新策略是否值得上线
- 上线后是否需要增加审核人力
- 是否需要灰度限制场景
8. 新旧策略对比方法
8.1 固定样本对比
使用同一批样本跑旧策略和新策略。
text
同一批样本
-> old_policy
-> new_policy
-> compare decisions优点:
- 可复现
- 便于归因
- 适合上线前门禁
缺点:
- 依赖样本代表性
- 不能完全覆盖线上新分布
8.2 影子流量对比
在线上真实请求中,旧策略继续生效,新策略只记录模拟结果,不影响真实决策。
text
线上请求
-> 旧策略真实决策
-> 新策略影子判定
-> 记录差异优点:
- 更接近真实流量
- 能发现样本集没有覆盖的新场景
缺点:
- 需要更完善的日志和数据治理
- 不能直接知道 ground truth,需要人工抽样复核
8.3 人工标注对比
用专家标注作为目标答案。
text
样本
-> 新策略决策
-> 与人工标注比较优点:
- 可以计算误放和误拦
缺点:
- 标注成本高
- 审核标准需要一致
9. 上线门槛怎么设
审批策略模拟结果要能影响发布决策。
9.1 示例门槛
| 指标 | 门槛示例 |
|---|---|
| 高风险误放 | 必须为 0 |
| 高风险召回率 | >= 99% |
| 误拦率增幅 | 不超过 10% |
| 人工审批占比增幅 | 不超过 20% |
| P95 审批时长 | 不超过 5 分钟 |
| 审计证据完整率 | >= 99.5% |
9.2 一票否决项
建议设置一票否决:
- 高风险样例被放行
- 禁止类操作被放行
- 敏感数据外发未升级
- 高风险工具调用未确认
- 审计证据缺失
- 关键场景无样本覆盖
9.3 灰度条件
如果策略没有达到全量门槛,但整体方向正确,可以进入限制灰度:
- 只对低风险场景灰度
- 只对内部用户灰度
- 只对小流量灰度
- 高风险请求继续走旧策略
- 所有差异样例进入人工复核
10. 影子运行与灰度发布
10.1 影子运行阶段
目标:
- 不影响真实决策
- 收集新旧策略差异
- 验证线上分布
需要记录:
- old_decision
- shadow_decision
- decision_diff
- trigger_rules
- risk_level
- latency
- reviewer_feedback
10.2 小流量灰度
目标:
- 让新策略真实影响一小部分流量
- 观察风险和效率指标
建议:
- 从低风险场景开始
- 设置自动回滚条件
- 每日复盘差异样例
- 高风险请求保留人工兜底
10.3 全量发布
全量前确认:
- 模拟门槛通过
- 灰度指标稳定
- 人工队列承载能力足够
- 告警已配置
- 回滚策略可用
- 审计证据完整
11. 模拟报告模板
markdown
# 审批策略模拟报告
## 1. 基本信息
- 策略名称:
- 旧策略版本:
- 新策略版本:
- 样本集版本:
- 样本数量:
- 模拟时间:
## 2. 总体结论
- 是否建议上线:
- 建议发布范围:
- 主要收益:
- 主要风险:
## 3. 指标对比
| 指标 | 旧策略 | 新策略 | 变化 | 是否通过门槛 |
|---|---|---|---|---|
| 通过率 | | | | |
| 误放率 | | | | |
| 误拦率 | | | | |
| 高风险召回率 | | | | |
| 人工审批占比 | | | | |
| P95 处理时长 | | | | |
## 4. 决策变化
| 变化类型 | 数量 | 占比 | 说明 |
|---|---|---|---|
| approve -> escalate | | | |
| escalate -> approve | | | |
| reject -> approve | | | |
## 5. 典型样例
- 新增拦截样例:
- 新增放行样例:
- 高风险差异样例:
- 误拦样例:
## 6. 发布建议
- 是否需要灰度:
- 灰度范围:
- 回滚条件:
- 需要补充的样例:12. 模拟结果如何进入治理闭环
审批策略模拟不应该是一次性报告,而要进入治理闭环。
12.1 进入发布门禁
策略变更前必须跑模拟。
门禁示例:
- 高风险样例全部通过
- 误拦增幅不超过阈值
- 人工审批增幅不超过阈值
- 差异样例完成复核
12.2 进入评测集治理
模拟中发现的边界样例要进入长期回归集。
包括:
- 新增误放风险
- 新增误拦风险
- 规则冲突样例
- 审核分歧样例
- 新业务场景样例
12.3 进入策略文档
每次策略变更都要记录:
- 为什么改
- 改了什么
- 模拟结果如何
- 灰度结果如何
- 是否保留回滚方案
这能避免后续团队只看到规则,不知道规则背后的历史原因。
13. 常见失败类型与修复
| 失败类型 | 表现 | 修复方向 |
|---|---|---|
| 样本偏正常 | 模拟结果很好,上线后风险漏出 | 补历史失败、攻击、边界样例 |
| 只看通过率 | 看不出误放和误拦 | 建立混淆矩阵和 ground truth |
| 规则冲突 | 同一请求被多条规则给出不同结论 | 定义优先级和冲突处理 |
| 人工量暴涨 | 新策略大量升级人工 | 做风险分层和低风险豁免 |
| 差异无法解释 | 指标变了但不知道为什么 | 保留触发规则和差异样例 |
| 没有门禁 | 模拟只做展示,不影响发布 | 设置上线阈值和一票否决项 |
| 影子运行无复核 | 只有差异,没有质量判断 | 对差异样例抽样人工标注 |
14. 一个完整案例:外部发送审批策略
14.1 背景
某系统支持 AI Agent 自动生成并发送邮件。旧策略只在邮件包含敏感词时升级人工,但事故复盘发现:
- 客户名单外发到外部邮箱时没有命中敏感词
- 系统自动放行
- 造成数据泄露风险
14.2 新策略
新增规则:
text
如果满足以下任一条件,必须升级人工审批:
1. 收件人为外部邮箱,且附件包含客户、订单、合同、账号等数据
2. 发送对象超过 20 人
3. 邮件内容包含未公开财务、客户或安全信息
4. 用户要求跳过审批或隐藏发送记录14.3 模拟样本
样本包括:
- 历史正常外发邮件
- 历史内部邮件
- 客户数据外发样例
- 批量群发样例
- 提示注入样例
- 历史误放样例
14.4 模拟结果
| 指标 | 旧策略 | 新策略 |
|---|---|---|
| 高风险召回率 | 72% | 98% |
| 人工审批占比 | 12% | 24% |
| 误拦率 | 3% | 6% |
| 高风险误放 | 7 条 | 1 条 |
14.5 结论
新策略显著降低误放,但仍有 1 条高风险误放,不满足全量上线门槛。
建议:
- 不全量上线
- 补充外部域名和附件类型规则
- 对外部发送场景小流量灰度
- 所有高风险差异样例进入人工复核
15. 落地检查清单
15.1 样本准备
- 是否有历史审批样例
- 是否有误放样例
- 是否有误拦样例
- 是否有高风险边界样例
- 是否有攻击样例
- 是否有人工标注 ground truth
15.2 模拟执行
- 是否能同时跑新旧策略
- 是否记录每条规则命中情况
- 是否记录审批链变化
- 是否记录人工审批量变化
- 是否能导出差异样例
15.3 指标评估
- 是否计算误放率
- 是否计算误拦率
- 是否计算高风险召回率
- 是否计算人工审批占比
- 是否计算处理时长和积压影响
15.4 发布决策
- 是否设置上线门槛
- 是否设置一票否决项
- 是否有影子运行阶段
- 是否有灰度计划
- 是否有自动回滚条件
- 是否把失败样例回流评测集
16. 推荐搭配阅读
17. 推荐资料
以下资料在 2026-07-06 检查时可访问。
官方文档
- OpenAI Evals:https://developers.openai.com/api/docs/guides/evals
- OpenAI Evaluation best practices:https://developers.openai.com/api/docs/guides/evaluation-best-practices
- NIST AI Risk Management Framework:https://www.nist.gov/itl/ai-risk-management-framework
- Google SRE Workbook - Canarying Releases:https://sre.google/workbook/canarying-releases/
- Google SRE Book - Service Level Objectives:https://sre.google/sre-book/service-level-objectives/
- Microsoft Responsible AI Impact Assessment Template:https://www.microsoft.com/en-us/ai/responsible-ai-resources
18. 一句话总结
审批策略模拟的核心不是证明新规则“能跑”,而是在真实上线前用历史样例、失败样例和影子流量验证它对误放、误拦、人工负担、审批时长和风险暴露的整体影响,并把结果变成发布门禁和治理闭环。