有人从 npm 包里扒出了 Claude Code 的完整源码。
源码里藏着什么,它打算变成什么?
87个编译时feature flag,大部分处于关闭状态。每一个flag背后是一个还没上线的功能。翻完之后我发现,它们指向同一个方向。
Claude Code 的完整源码泄漏后有人说"44个隐藏feature flag"。
我翻完源码的实际数字是87个。
用正则跑一遍就能数出来:
// 从源码里 grep 出来的完整列表(87个)
ABLATION_BASELINE, AGENT_MEMORY_SNAPSHOT, AGENT_TRIGGERS,
BUDDY, BUILDING_CLAUDE_APPS, COORDINATOR_MODE,
DAEMON, DIRECT_CONNECT, EXTRACT_MEMORIES,
KAIROS, KAIROS_BRIEF, KAIROS_CHANNELS, KAIROS_DREAM,
KAIROS_GITHUB_WEBHOOKS, KAIROS_PUSH_NOTIFICATION,
PROACTIVE, SSH_REMOTE, TEAMMEM, TELEPORT,
UDS_INBOX, ULTRAPLAN, ULTRATHINK, VOICE_MODE,
VERIFICATION_AGENT, WEB_BROWSER_TOOL, WORKFLOW_scriptS
...
这不是完整列表——完整列表87个,上面只列了最有意思的那些。每个flag都是一个还没对外发布的功能开关,编译时决定是否包含在发行版里。
把这87个flag按功能归类,一条进化路线浮出来了:
工具 → 常驻助手 → 团队协作 → 跨设备 → 多感官
每一步都在去掉Agent身上的一个限制。下面一个一个说。
它不想下班了
现在的Claude Code,你问它答,你不问它就安静等着。
源码里有一个叫KAIROS的功能,彻底改变了这个模式。不是增量升级,是另一种运行方式。
Kairos的内部名字叫"assistant mode"(助理模式)。激活之后,Claude Code变成一个24小时在线的主动助手。它不再等你输入——系统给它发周期性的心跳信号(叫tick),每收到一个tick,它就评估一下"现在有没有什么有用的事可做"。有就做,没有就调Sleep工具休眠等下一个tick。
系统提示词里是这么写的:
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: constants/prompts.ts
You are running autonomously. You will receive "color:#ce9178">`` prompts
that keep you alive between turns — just treat them as
"you're awake, what now?"
If you have nothing useful to do on a tick, you MUST call Sleep.
Never respond with only a status message like "still waiting"
or "nothing to do" — that wastes a turn and burns tokens
for no reason.
"你正在自主运行。把每次tick当作'你醒了,现在干嘛?'"
更有意思的是这段:
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: constants/prompts.ts
Look for useful work. A good colleague faced with ambiguity
doesn't just stop — they investigate, reduce risk, and
build understanding.
they haven't responded, do not ask again.
"好的同事面对模糊性不会停下来——他们会调查、降低风险、加深理解。"
你看到了吧,提示词里用的词不是"tool",也不是"assistant",是"colleague"。它不再把自己定位成工具。
还有一个细节:系统会检测你的终端是否聚焦。终端失焦=你不在电脑前=Claude更大胆地自主行动。终端聚焦=你在看=它更多地跟你协商。
Kairos模式下有一套专属工具,正常模式下你根本看不到它们:
工具
干嘛的
SleepTool
休眠等待下一次tick
SendUserMessage
主动给你发消息
SendUserFile
主动给你发文件
PushNotification
给你手机推送通知
SubscribePR
订阅GitHub PR的webhook
CronCreate
创建定时任务
你没看错,它可以给你手机发推送。你可以在设置里开三种推送通知:任务完成通知、需要你输入通知、以及Claude"认为合适时"的主动通知。
Kairos目前被锁在tengu_kairos这个运行时gate后面,只有Anthropic内部员工能用。但代码已经完整了,不是原型,是可以随时打开开关的成品。
Daemon是Kairos的底座。
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: utils/concurrentSessions.ts
export type SessionKind = 'interactive' | 'bg' | 'daemon' | 'daemon-worker'
四种会话类型。interactive是你现在用的交互模式,daemon是后台守护进程——没有TUI界面,纯粹的headless执行者,像数据库服务或Web服务器那样常驻后台。
Daemon模式拥有cron调度器,支持标准5字段cron表达式,本地时区,支持循环任务(默认30天自动过期)和一次性任务,支持持久化(写到.claude/scheduled_tasks.json,进程重启后自动恢复)。有jitter机制防止全球用户的定时任务在同一秒触发。
还有一层是远程scheduled agents——不在你机器上跑,在Anthropic云端跑完全隔离的Claude Code实例。通过/schedule命令管理,最小间隔1小时,cron表达式用UTC时区。
从"你问它答"到"它自己找活干",再到"它按时间表自动干"。这不是增量升级,是换了个物种。
它开始做梦了
你不用Claude Code的时候,它在后台做一件事:整理记忆。
源码里真的管这个叫"dream"。
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: services/autoDream/autoDream.ts
const DEFAULTS: AutoDreamConfig = {
minHours: 24,
minSessions: 5,
}
触发条件:距上次整理超过24小时,且至少有5个新会话产生了对话记录。两个条件同时满足,加上当前没有其他进程在整理(有PID锁防并发),就会在后台悄悄启动一个子Agent开始"做梦"。
"做梦"的过程分四个阶段:
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: services/autoDream/consolidationPrompt.ts
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// Phase 1 — Orient
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// ls memory 目录,读 MEMORY.md 索引,了解已有记忆
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// Phase 2 — Gather recent signal
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 从日志、现有记忆、session transcripts 中收集新信号
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// Phase 3 — Consolidate
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 写入或更新记忆文件。合并重复,日期转绝对,删除已推翻的事实
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// Phase 4 — Prune and index
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 更新 MEMORY.md 索引,保持在 200 行 / 25KB 以内
定位→采集→整合→修剪。跟人类睡觉时大脑把工作记忆转化为长期记忆是一个逻辑。
你在底部状态栏能看到一个"dreaming"标签,可以点进去看它正在review多少个session、修改了哪些文件。如果你觉得它整理得不对,按x可以随时杀掉,锁会回滚,下次重试。
"做梦"的Agent被限制了权限——Bash只能执行只读命令(ls/find/grep/cat),Edit和Write只能操作memory目录内的文件。安全意识到位。
这个功能已经在灰度了。在设置里或/memory命令的界面里有一个Auto-dream: on/off开关。
Kairos模式下还有一个升级版:白天往日期日志里追加条目(logs/YYYY/MM/YYYY-MM-DD.md),夜间由定时任务调度/dream技能做深度整合。跟人类的"白天记笔记、晚上复盘"一模一样。
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: services/autoDream/autoDream.ts
function isGateOpen(): boolean {
if (getKairosActive()) return false #ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// Kairos用自己的定时dream
if (getIsRemoteMode()) return false
if (!isAutoMemoryEnabled()) return false
return isAutoDreamEnabled()
}
Kairos模式下auto-dream被禁用,因为Kairos有自己更精细的cron定时dream。普通模式用auto-dream。两条路线,同一个目标:让Claude Code拥有持续的、会自我整理的记忆。
工具不需要记忆。助手需要。这是从工具到助手最本质的跨越。
它不再是一个人了
一个Claude不够用,那就来一队。
Coordinator模式是一个完整的多Agent编排系统。一个Claude当协调者(CEO),只有三个权限:派活(Agent工具)、传话(SendMessage)、叫停(TaskStop)。其他Claude当worker,执行具体任务。
源码里定义了标准的四阶段工作流:
class="language-typescript">#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// 源码文件: coordinator/coordinatorMode.ts
#ce9178"="" style="margin: 0px; padding: 0px; box-sizing: border-box;">"color:#6a9955">#6a9955">// | Phase | Who | Purpose |











