Skip to content

特性标志系统

概述

Claude Code 使用 feature() 函数实现特性标志,控制实验性功能的开关。在正式构建中,这些标志由 bun:bundle构建时决定;在反编译版本中,全部返回 false

feature() 函数

typescript
// Source: src/entrypoints/cli.tsx:2
const feature = (_name: string) => false;

构建时 vs 运行时

在正式构建中,Bun 打包器会在构建时将 feature() 调用替换为常量 true/false,然后通过 Dead Code Elimination (DCE) 移除未启用的代码分支。

在反编译版本中,polyfill 使所有标志返回 false,相关代码变成死代码但仍存在于源码中。

已知特性标志

标志名功能状态
BRIDGE_MODE远程桥接模式(Always-On)禁用
DAEMON后台守护进程禁用
BG_SESSIONS后台会话管理 (ps/logs/attach)禁用
TEMPLATES模板任务 (new/list/reply)禁用
KAIROS助手模式禁用
SSH_REMOTESSH 远程执行禁用
LODESTONE深度链接 URI (cc://)禁用
ABLATION_BASELINEA/B 测试基线禁用
COORDINATOR_MODE协调器/编排器模式禁用
PROACTIVE主动建议禁用
WEB_BROWSER_TOOL浏览器自动化工具禁用
CHICAGO_MCPComputer Use MCP禁用
TOKEN_BUDGETToken 预算管理禁用
HISTORY_SNIP历史消息裁剪禁用
VOICE_MODE语音模式禁用
SELF_HOSTED_RUNNER自托管运行器禁用
BYOC_ENVIRONMENT_RUNNERBYOC 环境运行器禁用

使用模式

条件工具加载

typescript
// Source: src/tools.ts
if (feature('WEB_BROWSER_TOOL')) {
  tools.push(WebBrowserTool);  // 永远不会执行
}

if (feature('PROACTIVE')) {
  tools.push(REPLTool);  // 永远不会执行
}

快速路径分支

typescript
// Source: src/entrypoints/cli.tsx
if (feature('BRIDGE_MODE')) {
  // 远程桥接逻辑 — 死代码
  await bridgeMain(args);
}

if (feature('DAEMON')) {
  // 守护进程逻辑 — 死代码
  await daemonMain(args);
}

条件导入

typescript
// Source: src/bootstrap/state.ts
if (feature('VOICE_MODE')) {
  const { VoiceProvider } = await import('./voice.js');
  // 永远不会执行
}

与 GrowthBook 的关系

在正式版本中,部分特性标志通过 GrowthBook(远程特性管理平台)控制:

typescript
// Source: src/entrypoints/init.ts:94-106
const { refreshGrowthBook } = await import('./growthbook.js');
// GrowthBook 可以远程开关特性

在反编译版本中,GrowthBook 是空实现,不影响任何标志。

对代码理解的启示

当你看到 feature() 调用时:

  1. 它控制的代码是死代码 — 在反编译版本中永远不会执行
  2. 但代码仍然存在 — 可以阅读了解 Anthropic 的功能规划
  3. 不要试图启用它 — 可能依赖未包含的服务/基础设施

下一步