你有没有好奇过:Claude Code那些"即将推出"的功能是怎么隐藏的?为什么同样的代码,有的用户能看到新功能,有的看不到?
答案就是Feature Flag——代码里的"秘密开关"。今天咱们揭秘Claude Code的89个Feature Flag。
什么是Feature Flag?代码里的开关
Feature Flag(功能开关)是一种软件开发技术:在代码里埋下开关,通过开关控制功能是否启用。
Claude Code使用Bun的feature()函数:
if (feature('KAIROS')) {
const { assistant } = require('./assistant')
assistant.init()
}
构建时,feature('KAIROS')被替换为true或false。如果是false,整个代码块在tree-shaking阶段被移除——不仅功能不启用,代码都不存在。
这就像:
- 装修房子时预留的插座(功能预埋)
- 插上电器才通电(开关启用)
- 不插电器就当墙是完整的(tree-shaking移除)
89个Flag的五大阵营
Claude Code源码中有89个Feature Flag,按功能域分为五大类:
阵营1:自主Agent与后台运行(18个)
核心Flag:KAIROS(154处引用)
这是引用最多的Flag,代表了Claude Code向"后台自主Agent"演进的方向:
- 终端焦点感知(用户不看终端时自主执行)
- 定时唤醒(Tick机制)
- 简报通信(Brief模式)
- 多频道通信(Channels)
- GitHub Webhook订阅
其他重要Flag:
PROACTIVE:主动工作模式COORDINATOR_MODE:跨Agent协调BG_SESSIONS:后台会话管理AGENT_TRIGGERS:定时触发器
阵营2:远程控制与分布式执行(14个)
核心Flag:BRIDGE_MODE(28处引用)
实现远程控制Claude Code的能力:
- 桥接模式:远程控制协议
- DAEMON:守护进程后台运行
- SSH_REMOTE:SSH远程连接
- UDS_INBOX:Unix Domain Socket通信
应用场景:
- 在服务器上运行Claude Code,本地远程控制
- 多机器分布式Agent协作
阵营3:上下文管理与性能优化(17个)
核心Flag:TRANSCRIPT_CLASSIFIER(107处引用)
实现auto权限模式——用AI分类器判断是否需要用户确认:
- 介于
plan(全部确认)和auto-accept(全部接受)之间 - 智能判断操作风险等级
其他重要Flag:
CONTEXT_COLLAPSE:精细化上下文折叠CACHED_MICROCOMPACT:缓存微压缩TOKEN_BUDGET:Token预算追踪PROMPT_CACHE_BREAK_DETECTION:缓存断裂检测
阵营4:记忆与知识管理(9个)
核心Flag:TEAMMEM(51处引用)
实现团队记忆同步:
- 跨会话记忆共享
- 团队知识库
- 自动记忆提取
- 敏感信息保护(Secret Guard)
其他Flag:
EXTRACT_MEMORIES:自动记忆提取EXPERIMENTAL_SKILL_SEARCH:实验性技能搜索SKILL_IMPROVEMENT:技能自动改进
阵营5:UI/UX与平台能力(31个)
核心Flag:VOICE_MODE(46处引用)
语音输入模式:
- 流式语音转文字
- Push-to-talk快捷键(空格键)
其他重要Flag:
WEB_BROWSER_TOOL:Bun WebView浏览器集成TERMINAL_PANEL:终端面板CHICAGO_MCP:Computer Use MCP集成POWERSHELL_AUTO_MODE:PowerShell自动模式
Flag成熟度光谱
89个Flag的成熟度分布:
| 引用次数 | Flag数量 | 成熟度阶段 |
|---|---|---|
| 100+ | 2 | 深度集成期 |
| 30-99 | 6 | 全面织入期 |
| 10-29 | 12 | 模块集成期 |
| 3-9 | 27 | 初步实现期 |
| 1-2 | 42 | 原型探索期 |
关键观察:
- 47%的Flag(42个)只有1-2处引用,处于原型阶段
- 只有KAIROS(154)和TRANSCRIPT_CLASSIFIER(107)达到深度集成
- 大量实验性功能在探索中
这就像:
- 100+引用:房子已经盖好,只差开门
- 30-99引用:主体结构完成,内部装修
- 10-29引用:框架搭好,还在填墙
- 1-2引用:刚画完草图
核心未发布功能揭秘
KAIROS:后台自主助手(154处引用)
KAIROS是引用最多的Flag,描绘了一个"Claude Code作为后台Agent"的愿景:
核心机制:
- 焦点感知:检测用户是否在看终端
- 自主执行:用户不在时自动处理任务
- Tick唤醒:定时检查待办事项
- Brief通信:关键点向用户报告进度
使用场景:
你:帮我重构这个模块
Claude:好的,我会在后台处理,完成后通知你
(你去做别的事)
(Claude在后台自动执行)
Claude:重构完成,这是变更摘要...
TRANSCRIPT_CLASSIFIER:智能权限模式(107处引用)
当前的权限模式是二元的:
plan:每个操作都要确认auto-accept:全部自动接受
auto模式引入AI分类器做智能判断:
- 安全操作自动放行
- 危险操作请求确认
- 边界操作深度分析
这就像:从"要么全管要么全不管"变成"智能安检"。
CONTEXT_COLLAPSE:精细化上下文管理(20处引用)
当前的压缩是"全量压缩"——达到一定阈值后整个对话摘要化。
CONTEXT_COLLAPSE实现"选择性折叠":
- 只折叠不重要的工具结果
- 保留关键的推理过程
- 响应式触发(不是定时检查)
这就像:从"搬家时整屋打包"变成"只收拾不常用的"。
WEB_BROWSER_TOOL:内置浏览器(4处引用)
基于Bun的WebView API,在Claude Code内嵌浏览器:
- 不是Playwright/Puppeteer外部进程
- 原生集成,效率更高
- 可以截图、交互、提取内容
这就是"自带浏览器"的AI助手。
Flag之间的依赖关系
某些Flag之间有依赖:
DAEMON → 需要 BRIDGE_MODE
KAIROS_DREAM → 可独立于 KAIROS
CCR_MIRROR → BRIDGE_MODE的子模式
AGENT_TRIGGERS_REMOTE → AGENT_TRIGGERS的扩展
设计哲学:
- 子功能可独立于父功能启用
- 硬依赖用
&&表达 - 软关联用
||表达
三种构建配置
公开构建(Public Build)
绝大多数Flag为false。只有基础功能默认启用。
内部构建(Ant Build)
USER_TYPE === 'ant'时启用更多功能:
- 实验性技能
- 内部工具
- A/B测试功能
实验构建(Experiment Build)
特定Flag组合用于A/B测试:
TREE_SITTER_BASHvsTREE_SITTER_BASH_SHADOWABLATION_BASELINE:消融实验基线
实战:如何启用实验性功能
通过环境变量
某些Flag暴露为环境变量:
export CLAUDE_CODE_COORDINATOR_MODE=true
export CLAUDE_CODE_EFFORT_LEVEL=high
通过设置文件
在settings.json中:
{
"voiceEnabled": true,
"alwaysThinkingEnabled": true
}
注意
不是所有Flag都能通过用户配置启用。许多Flag是构建时决定的,普通用户无法修改。
这对构建AI Agent的启示
模式1:构建时Dead Code Elimination
用编译期常量替换和tree-shaking,确保未启用功能的代码不出现在生产构建中。
模式2:引用计数推断成熟度
统计Flag在源码中的引用次数和跨模块分布,评估功能集成深度。
模式3:Flag集群依赖管理
通过&&和||表达功能依赖,支持子功能独立启用。
总结
89个Feature Flag揭示了Claude Code的工程深度:
- 五大阵营:自主Agent、远程控制、上下文管理、记忆知识、UI/UX
- 两大核心:KAIROS(后台自主)和TRANSCRIPT_CLASSIFIER(智能权限)
- 成熟度分布:47%处于原型阶段,少数深度集成
- 演进方向:从"交互式助手"向"后台自主Agent"发展
这就像:
- Feature Flag是代码里的"预留插座"
- 有的已经插好电器(深度集成)
- 有的只画了位置(原型阶段)
- 有的还在设计图纸上(探索中)
理解Feature Flag,你就能:
- 预判Claude Code的发展方向
- 理解实验性功能的实现机制
- 在自己的项目中应用类似的技术
下篇咱们聊聊跨会话记忆——从遗忘到持久学习。
