功能开关是什么
功能开关把发布与上线解耦:代码与提示先发布、开关默认关闭,需要时再按比例打开,出问题直接关掉而不是回滚发版。开关同时承担灰度、实验分流与应急回退三种角色,因此要分级管理、默认值明确、实验结束设清理期限,否则开关组合会变成没人敢动的隐性技术债。
基本信息
| 分级 | 发布开关、实验开关、运维开关分开管理,职责不同 |
|---|---|
| 默认值 | 生产默认关闭,开启必须是显式操作 |
| 粒度 | 支持按租户、用户、百分比分流,避免只能全开全关 |
| 清理 | 实验结束设清理期限,定期盘点开关清单 |
| 回退 | 关闭开关即恢复旧行为,不依赖重新发版 |
典型使用场景
- 提示版本灰度:新版本先放 5% 流量,指标不劣化再逐步放大
- 模型路由实验:按百分比把请求分到两个模型,对比成本与质量
- 新功能试运行:面向内部或白名单租户先开,收集反馈再放开
- 应急回退:线上质量骤降时关开关止损,比等回滚发版快得多
- 节流保护:高峰期关闭非关键增强功能,保住主链路
开关配置示例
开关配置示例
flags:
prompt.summarize.version: 1.3.0 # 发布开关:锁版本
experiment.summarize.json_output:
enabled: true
rollout: 10 # 实验开关:按百分比分流
default: false
cleanup_by: 2026-11-01 # 清理期限,到期必须处理
ops.disable_enhancements: false # 运维开关:应急用,默认关开关类型与生命周期
| 类型 | 生命周期 | 到期处理 |
|---|---|---|
| 发布开关 | 从灰度到全量,几天到几周 | 全量后删除,避免永久保留 |
| 实验开关 | 实验期固定,有清理期限 | 实验结束即删或转正式配置 |
| 运维开关 | 长期保留 | 定期演练,确认真的能用 |
| 租户开关 | 按合同或服务等级 | 随客户状态同步更新 |
开关默认值设为开启是常见事故来源:出问题时最需要的是“默认安全”,而不是“默认生效”。
开关清单要定期盘点:每一项都应能回答谁负责、何时清理。答不上来的开关,多半已没人记得它的存在,却仍在影响线上行为。