5.8 KiB
5.8 KiB
title, description, keywords
| title | description | keywords | |||||
|---|---|---|---|---|---|---|---|
| GrowthBook A/B 测试体系 - 运行时功能发布 | 揭秘 Claude Code 如何通过 GrowthBook 实现运行时 A/B 测试:用户定向、tengu 命名文化和渐进式功能发布策略。 |
|
{/* 本章目标:深入运行时 A/B 测试层——GrowthBook 的集成架构、用户定向、tengu 命名文化 */}
为什么需要运行时 A/B 测试
构建时 feature() 是"全有或全无"的——要么所有用户都有,要么所有用户都没有。但产品团队需要更精细的控制:
- 只对 5% 的用户灰度发布新功能
- 按订阅类型(Free / Pro / Team)差异化体验
- 对特定组织静默开启实验性能力
- 随时远程关闭出问题的功能,无需发版
这就是 GrowthBook 的用武之地——一个运行时的、基于用户属性的功能门控和 A/B 测试系统。
集成架构
GrowthBook 的完整实现位于 src/services/analytics/growthbook.ts(1258 行),工作流程如下:
用户定向属性
GrowthBook 根据以下用户属性决定实验分组:
| 属性 | 类型 | 来源 | 用途 |
|---|---|---|---|
id |
string | 会话 ID | 按会话粒度分组 |
deviceID |
string | 持久化设备标识 | 跨会话一致性 |
sessionId |
string | 当前会话 ID | 会话级实验 |
platform |
enum | process.platform |
按操作系统差异化 |
organizationUUID |
string | API 认证信息 | 按组织灰度 |
accountUUID |
string | API 认证信息 | 按个人账户灰度 |
subscriptionType |
string | API 认证信息 | Free / Pro / Team 差异化 |
rateLimitTier |
string | API 认证信息 | 按速率限制层级 |
email |
string | API 认证信息 | 精确定向特定用户 |
appVersion |
string | MACRO.VERSION |
按版本号灰度 |
github |
object | GitHub Actions 元数据 | CI 环境特殊处理 |
代号文化:tengu_* 的世界
所有运行时 flag 都以 tengu_ 为前缀——"Tengu"(天狗)是 Claude Code 的内部项目代号。flag 名采用动物/植物/矿物 + 形容词的命名约定,刻意保持不透明。
Ant-Only 覆盖机制
Anthropic 员工拥有两种方式绕过 GrowthBook 的远程求值:
环境变量覆盖
# 仅在 USER_TYPE=ant 的构建中生效
CLAUDE_INTERNAL_FC_OVERRIDES='{"tengu_kairos": true}' claude
通过 CLAUDE_INTERNAL_FC_OVERRIDES 环境变量传入 JSON 对象,直接覆盖任意 flag 的值。
Config 界面覆盖
在内部构建中,/config 命令的 Gates 标签页提供了图形化的 flag 管理界面,可以实时切换任意 GrowthBook flag。
实验追踪
GrowthBook 集成了完整的实验曝光追踪:
- 每次查询 flag 时记录实验曝光事件
- 通过 protobuf 格式的
GrowthbookExperimentEvent上报 - 包含
variation_id(0=对照组,1+=实验组)和in_experiment标记 - 数据用于分析功能对用户行为的因果影响