"上线"不是一次动作,而是一组开关
AI 功能出问题时,最贵的成本是**反应时间** ✗:定位要多久、能不能马上关掉 ✔。
所以上线前必须把"开关"设计好 ✔ —— 它决定了你能否在 5 分钟内止损 ✔。
一、该有哪些开关(六类)
| 开关 | 作用 | 粒度 |
|---|---|---|
| 总开关 | 一键关闭该功能 | 功能级 |
| 模型/版本切换 | 切回旧模型或旧提示词 | 功能级 |
| 降级开关 | 强制走小模型/缓存/规则兜底 | 功能级 |
| 流量比例 | 灰度放量(1% → 100%)| 功能级 |
| 租户/用户白名单 | 只对内部或指定租户开 | 租户级 |
| 单请求上限 | 输入长度/输出长度/超时 | 请求级 |
**前三个是止损用的** ✔,后三个是控制影响面的 ✔;缺一个都会在事故里付出代价 ✔。
二、开关的设计要求
1. **生效快** ✔(秒级,不要重新发布 ✗ —— 发布要几分钟,事故里等不起 ✗);
2. **可审计** ✔(谁在什么时候改了开关,记下来 ✔);
3. **有默认值** ✔(配置缺失时取安全值:例如默认关闭新版本 ✔);
4. **有演练** ✔(每季度真的关一次,确认能关掉 ✔ —— 没演练过的开关等于没有 ✗)。
三、谁有权关
四、常见反模式
五、上线前检查(可直接抄)
```
□ 总开关已就位且秒级生效 □ 演练过关闭流程
□ 可切回旧版本(模型+提示词) □ 降级链已配置
□ 灰度比例可调 □ 租户白名单可用
□ 单请求上限已设 □ 开关变更进审计日志
```
一条判据
> 值班人**不看代码、不问人** ✔,能否在 5 分钟内把功能关掉或降级 ✔?
> 不能,就别全量上线 ✗。