参数取值与规则
每份云控配置每次请求都会返回一个值。这个值由 Setup → Rules 里一组按顺序求值的规则决定,最后由 Default Value 兜底。
四种取值类型
每份云控配置只有一种取值类型,决定了规则编辑器的样式与 SDK 拿到的数据形态。
| 类型 | 适合场景 | 编辑器形态 |
|---|---|---|
| Boolean | 功能开关、止损开关、显示 / 隐藏切换 | True / False 切换 |
| Number | 数值阈值、时长、重试次数、权重 | 数字输入框 |
| String | 文案、URL、单一枚举值 | 单行文本输入框 |
| JSON | 结构化负载(主题、关卡配置、广告位等需要多个字段一起下发) | 带类型校验的 JSON 编辑器 |
怎么选
简单决策路径:
- 答案是「是 / 否」 → Boolean
- 答案是单一数字 → Number(不要把单位塞进数值,用字段名说明单位)
- 答案是一段文本或 URL → String(不要塞 JSON,多字段就升级 JSON)
- 结构再复杂一点 → JSON(彼此关联的字段一起版本化)
⚠️ 切换类型是破坏性操作。 配置上线后改 Value Type,规则编辑器会重建,无法解析为新类型的旧值会被清掉。请在创建之初就把形状想清楚;真要改形状时,建议新建一份配置并迁移调用方,而不是原地改。
各类型补充说明
Boolean —— 适合最朴素的「这个功能对这个用户是否打开」。如果你已经在想「是开,但要带这些参数」,那大概率应该用 JSON(一个字段做开关、其它字段做参数),开关和参数能一起变更。
Number —— 接受整数和小数。带单位的数字(「30 秒」 vs 「30 分钟」)请把单位写到配置名或描述里,ABC 不存储单位。
String —— 文本里已经出现逗号或大括号、本质是「列表 / 映射」,请改用 JSON。
JSON —— 顶部提供 Format JSON 和 Compress JSON 工具。保存前会校验是否合法 JSON。客户端应当把 JSON 形状视为契约:新增字段附默认值,避免重命名旧字段,破坏性变更通过版本号区分配置(my_config_v2)。
规则求值机制
Rules 区域以 IF / ELSE IF / ELSE 列表呈现:


求值顺序
规则从上到下依次求值。对一次请求:
- 取第一条规则
- 检查用户是否满足受众,并落在流量百分比之内。两者都满足 → 返回该规则的值,结束
- 否则进入下一条规则
- 没有任何规则命中时 → 返回 Default Value
一个用户最多只会命中一条规则。 重新排序就是重新决定优先级——Add Rules 在末尾追加新规则,拖动可以调整顺序。
顺序比覆盖范围更重要。 两条受众有重叠的规则,最终只有排在前面的那条会触发。最具体的规则放上面,最宽的兜底放下面。
编辑模式
setup 页面提供两种编辑模式(Form / JSON 切换):
- Form(默认) —— 卡片式可视化编辑
- JSON —— 同一份规则用 JSON 表达,跨配置或跨环境复制粘贴一整套规则时使用
JSON 修改实时同步回 Form 视图。
一条规则里有什么
每条规则包含 4 个字段:
| 字段 | 含义 |
|---|---|
| Select Audience | 按名称选取已存在的受众 |
| Allowlist | 一组稳定的用户 ID,无论受众和流量百分比怎么写都直接命中本条规则。常用于 QA、内部用户 |
| Traffic Percentage | 在受众命中的用户里,本条规则实际服务多少比例 |
| Value | 命中时返回的值。编辑器形态随取值类型变化 |
关于 Traffic Percentage
流量百分比作用在受众命中之后。比如规则的受众是 vip_user、Traffic Percentage = 50,那么大约一半 VIP 用户命中这条规则;另一半流向下一条规则或默认值。
这让你可以不改受众就把分级发布铺开:
- Day 1 —— 流量设 5%,95% 命中受众继续看默认值
- Day 3 —— 指标健康,提到 25%
- Day 7 —— 提到 100%,全量上线
如果把这条规则升级成实验,实验也是把这部分流量再拆分到不同变体里。
受众选择器的工作方式
规则保存的是受众名称,不是条件副本。受众的属性条件以只读形式渲染在选择器下方,让评审者无需离开 setup 页就能看清完整过滤条件(如 os_platform equals "ios")。
因为存的是引用而非副本,修改一个受众会同时改变所有引用它的云控配置(以及实验)的目标人群。平台会在受众被活跃实验引用时锁定其规则编辑入口防止意外漂移。
默认值(Default Value)
ELSE → Default Value 是必填的。当所有规则都没命中(受众不匹配、或匹配但被流量百分比挡掉)时,SDK 返回的就是它。
默认值应当是对最大群体最安全的那个值,通常是上线前的旧值。 新行为通过「在默认值之上加规则」引入,而不是原地改默认值——这样回退到默认值的客户端不会突然行为改变。
规则顺序与重叠受众
当两条规则引用的受众有重叠时,重叠用户永远只会触发排在前面的那条。
按具体程度排序:最具体的受众放最上面,最宽泛的(或默认规则)放最下面。
一个常见组合:

如果把 1 和 2 的顺序颠倒,内部测试人员会先落入 new_installs_v1_8 的桶,导致无法被强制开启,因为更宽泛的受众先匹配上了。
Archive 归档
平台推荐的退场方式:
- 默认列表视图隐藏(用 Status 过滤器 + Archived 才可见)
- SDK 新请求里不再参与求值
- 已经 In Progress 的关联实验对已分流的用户继续解析;新流量不再进入这条配置
注意:试图归档一条正在驱动 Active 实验的配置时,平台会拒绝——请先结束或停止那个实验。
Unarchive 恢复
归档行的 ⋮ 菜单提供 Unarchive。恢复后状态变回 Active,进入新的 SDK 求值。
Log 审计历史
每次保存都会留下一条 log。详情页 Log 菜单打开历史视图,每行一次变更:谁、什么时候、改了哪些字段。 
