Skip to content

Commit 35bc4f3

Browse files
Merge pull request #153 from amDosion/feat/growthbook-enablement
feat: enable GrowthBook local gate defaults for P0/P1 features
2 parents 379e40f + 1b47333 commit 35bc4f3

7 files changed

Lines changed: 675 additions & 18 deletions

File tree

DEV-LOG.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,103 @@
11
# DEV-LOG
22

3+
## GrowthBook Local Gate Defaults + P0/P1 Feature Enablement (2026-04-06)
4+
5+
**分支**: `feat/growthbook-enablement`
6+
7+
### 背景
8+
9+
Claude Code 使用 GrowthBook(Anthropic 自建 proxy at api.anthropic.com)进行远程功能开关控制,代码中使用 `tengu_*` 前缀命名。在反编译版本中 GrowthBook 不启动(analytics 空实现),导致 70+ 个功能被 gate 拦截。
10+
11+
经 4 个并行研究代理深度分析,确认**所有被 gate 控制的功能代码都是真实现**(非 stub)。
12+
13+
### 实现方案
14+
15+
**Commit 1** (`feat`): 在 `growthbook.ts` 中添加 `LOCAL_GATE_DEFAULTS` 映射表(25+ boolean gates + 2 object config gates),修改 4 个 getter 函数在 `isGrowthBookEnabled() === false` 时查找本地默认值。
16+
17+
**Commit 2** (`fix`): 发现 `LOCAL_GATE_DEFAULTS` 在有 API key 的用户环境下无效——因为 `isGrowthBookEnabled()` 返回 `true`(analytics 未禁用),代码走 GrowthBook 路径但缓存为空,直接返回 `defaultValue` 跳过了本地默认值。修复:在 3 个 getter 函数的缓存 miss 路径中插入 `LOCAL_GATE_DEFAULTS` 查找。同时修复 `tengu_onyx_plover` 值类型(`JSON.stringify` → 直接对象)和新增 `tengu_kairos_brief_config` 对象型 gate。
18+
19+
修复后的 fallback 链:
20+
```
21+
env overrides → config overrides → [GrowthBook 启用?]
22+
→ 内存缓存 → 磁盘缓存 → LOCAL_GATE_DEFAULTS → defaultValue
23+
```
24+
25+
可通过 `CLAUDE_CODE_DISABLE_LOCAL_GATES=1` 环境变量一键禁用。
26+
27+
### 启用的功能
28+
29+
**P0 — 纯本地功能(7 个 gate):**
30+
31+
| Gate | 功能 |
32+
|------|------|
33+
| `tengu_keybinding_customization_release` | 自定义快捷键(~/.claude/keybindings.json) |
34+
| `tengu_streaming_tool_execution2` | 流式工具执行(边收边执行) |
35+
| `tengu_kairos_cron` | 定时任务系统 |
36+
| `tengu_amber_json_tools` | Token 高效 JSON 工具格式(省 ~4.5%) |
37+
| `tengu_immediate_model_command` | 运行中即时切换模型 |
38+
| `tengu_basalt_3kr` | MCP 指令增量传输 |
39+
| `tengu_pebble_leaf_prune` | 会话存储叶剪枝优化 |
40+
41+
**P1 — API 依赖功能(8 个 gate):**
42+
43+
| Gate | 功能 |
44+
|------|------|
45+
| `tengu_session_memory` | 会话记忆(跨会话上下文持久化) |
46+
| `tengu_passport_quail` | 自动记忆提取 |
47+
| `tengu_chomp_inflection` | 提示建议 |
48+
| `tengu_hive_evidence` | 验证代理(对抗性验证) |
49+
| `tengu_kairos_brief` | Brief 精简输出模式 |
50+
| `tengu_sedge_lantern` | 离开摘要 |
51+
| `tengu_onyx_plover` | 自动梦境(记忆巩固) |
52+
| `tengu_willow_mode` | 空闲返回提示 |
53+
54+
**Kill Switch(10 个 gate 保持 true):**
55+
56+
`tengu_turtle_carbon``tengu_amber_stoat``tengu_amber_flint``tengu_slim_subagent_claudemd``tengu_birch_trellis``tengu_collage_kaleidoscope``tengu_compact_cache_prefix``tengu_kairos_cron_durable``tengu_attribution_header``tengu_slate_prism`
57+
58+
**新增编译 flag:**
59+
60+
| Flag | build.ts | dev.ts | 用途 |
61+
|------|:--------:|:------:|------|
62+
| `AGENT_TRIGGERS` | ON | ON | 定时任务系统 |
63+
| `EXTRACT_MEMORIES` | ON | ON | 自动记忆提取 |
64+
| `VERIFICATION_AGENT` | ON | ON | 对抗性验证代理 |
65+
| `KAIROS_BRIEF` | ON | ON | Brief 精简模式 |
66+
| `AWAY_SUMMARY` | ON | ON | 离开摘要 |
67+
| `ULTRATHINK` | ON | ON | Ultrathink 扩展思考(双重门控修复) |
68+
| `BUILTIN_EXPLORE_PLAN_AGENTS` | ON | ON | 内置 Explore/Plan agents(双重门控修复) |
69+
| `LODESTONE` | ON | ON | Deep link 协议注册(双重门控修复) |
70+
71+
**排除的编译 flag:**
72+
- `KAIROS` — 拉入 `useProactive.js`(缺失文件),`KAIROS_BRIEF` 足够
73+
- `TERMINAL_PANEL` — 拉入 `TerminalCaptureTool`(缺失文件)
74+
75+
**双重门控修复说明:**
76+
部分功能同时被编译 flag 和 GrowthBook gate 控制(双重门控),仅开 GrowthBook gate 不够。
77+
审计发现 3 个被卡住的:`ULTRATHINK``BUILTIN_EXPLORE_PLAN_AGENTS``LODESTONE`
78+
79+
### 修改文件
80+
81+
| 文件 | 变更 |
82+
|------|------|
83+
| `build.ts` | `DEFAULT_BUILD_FEATURES` 新增 8 个编译 flag |
84+
| `scripts/dev.ts` | `DEFAULT_FEATURES` 新增 8 个编译 flag |
85+
| `src/services/analytics/growthbook.ts` | 新增 `LOCAL_GATE_DEFAULTS` 映射(27 gates)+ `getLocalGateDefault()` + 修改 4 个 getter 的 fallback 链 |
86+
| `scripts/verify-gates.ts` | 新增 gate 验证脚本(30 gates) |
87+
| `docs/features/growthbook-enablement-plan.md` | 完整研究报告和启用计划 |
88+
| `docs/features/feature-flags-audit-complete.md` | 更新启用状态表 |
89+
90+
### 验证
91+
92+
| 项目 | 结果 |
93+
|------|------|
94+
| `bun run build` | ✅ 成功 (481 files) |
95+
| `bun test` | ✅ 2106 pass / 23 fail(均为已有问题)/ 0 新增失败 |
96+
| `verify-gates.ts` | ✅ 30/30 PASS |
97+
| `/brief` 手动测试 | ✅ 可用(fallback 修复后) |
98+
99+
---
100+
3101
## Enable SHOT_STATS, TOKEN_BUDGET, PROMPT_CACHE_BREAK_DETECTION (2026-04-05)
4102

5103
**PR**: [claude-code-best/claude-code#140](https://github.com/claude-code-best/claude-code/pull/140)

build.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ const DEFAULT_BUILD_FEATURES = [
1717
'SHOT_STATS',
1818
'PROMPT_CACHE_BREAK_DETECTION',
1919
'TOKEN_BUDGET',
20+
// P0: local features
21+
'AGENT_TRIGGERS',
22+
'ULTRATHINK',
23+
'BUILTIN_EXPLORE_PLAN_AGENTS',
24+
'LODESTONE',
25+
// P1: API-dependent features
26+
'EXTRACT_MEMORIES',
27+
'VERIFICATION_AGENT',
28+
'KAIROS_BRIEF',
29+
'AWAY_SUMMARY',
2030
]
2131

2232
// Collect FEATURE_* env vars → Bun.build features

docs/features/feature-flags-audit-complete.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,24 @@ Claude Code 使用三层门控系统:
3838

3939
---
4040

41-
## 当前启用状态 (2026-04-05)
41+
## 当前启用状态 (2026-04-06)
4242

4343
> 经 Codex CLI 独立复核验证,详见 `feature-flags-codex-review.md`
44+
> GrowthBook gate 启用详见 `growthbook-enablement-plan.md`
4445
4546
| 标志 | build.ts | dev.ts | 实际验证状态 | 备注 |
4647
|------|:--------:|:------:|:----------:|------|
4748
| AGENT_TRIGGERS_REMOTE | **ON** | **ON** | compile-only | 环境标记,原始即启用 |
4849
| CHICAGO_MCP | **ON** | **ON** | compile-only | Computer Use,原始即启用 |
4950
| VOICE_MODE | **ON** | **ON** | compile-only | 语音模式,原始即启用 |
50-
| SHOT_STATS | **ON** | **ON** | compile-only, 已验证 | 本轮新增,纯本地统计 |
51-
| PROMPT_CACHE_BREAK_DETECTION | **ON** | **ON** | compile-only, 已验证 | 本轮新增,内部诊断 |
52-
| TOKEN_BUDGET | **ON** | **ON** | compile-only, 已验证 | 本轮新增,支持 `+500k` 语法 |
51+
| SHOT_STATS | **ON** | **ON** | compile-only, 已验证 | 纯本地统计 |
52+
| PROMPT_CACHE_BREAK_DETECTION | **ON** | **ON** | compile-only, 已验证 | 内部诊断 |
53+
| TOKEN_BUDGET | **ON** | **ON** | compile-only, 已验证 | 支持 `+500k` 语法 |
54+
| AGENT_TRIGGERS | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,定时任务系统 |
55+
| EXTRACT_MEMORIES | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,自动记忆提取 |
56+
| VERIFICATION_AGENT | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,对抗性验证代理 |
57+
| KAIROS_BRIEF | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,Brief 精简模式 |
58+
| AWAY_SUMMARY | **ON** | **ON** | compile+GB gate, 已验证 | 本轮新增,离开摘要 |
5359
| BUDDY | off | **ON** | compile+GrowthBook | 仅 dev 模式 |
5460
| TRANSCRIPT_CLASSIFIER | off | **ON** | compile+GrowthBook | 仅 dev 模式 |
5561
| BRIDGE_MODE | off | **ON** | compile+remote | 仅 dev 模式,需 claude.ai 订阅 |

0 commit comments

Comments
 (0)