起因
3 月 31 日晚上,Claude Code 的 npm 包 @anthropic-ai/claude-code 发布了一个新版本 v2.1.88,里面多打包了一个 59.8 MB 的 source map 文件。这个 source map 指向 Cloudflare R2 上的一个 zip 存档,存档解开之后是大约 1,900 个 TypeScript 文件、51 万行代码。发现这件事的是安全研究员 Chaofan Shou,后续 Fortune、VentureBeat、The Register 都做了报道。Anthropic 把这件事定性为 "a release packaging issue caused by human error",不是 breach,没有客户数据,没有凭证。
我花了周末把能看的部分读了一遍。事先声明两点:
- 这篇文章不贴任何 Claude Code 的真实源码片段。原仓库已被清理,Anthropic 的立场也很明确,合理做法是描述模式而不是搬运代码。想看完整的 44 个 feature flag 盘点,我在写这篇的时候参考过社区里有人整理的一份 Claude Code 泄露的 44 个 feature flag 完整清单,比我这篇里 KAIROS 单一个 flag 的视角要宽得多。
- 我关注的不是"泄露本身",而是泄露暴露出来的那些 Anthropic 还没发布的东西。而这些未发布功能里,有一个让我盯了很久——
KAIROS,整个代码树里出现了 150 多次。
KAIROS 是一个 flag,但实际上是一整个子系统
Claude Code 的源码里有大量 feature flag,大多数是那种看名字就知道是小实验的,比如 UI 实验、某个新命令的开关。但 KAIROS 不是这种量级的 flag。150 多处引用遍布 session 管理、上下文处理、后台任务调度、内存操作这些核心路径,它是一个和主链路深度耦合的子系统。
更关键的是它的形态。今天的 Claude Code 本质上还是一个 "你问→它答→对话结束→上下文丢失" 的工具——你和 Cursor、Copilot、Windsurf、通义灵码、Trae 这些所有主流 AI 编程工具的交互模式一样,完全由人类发起。KAIROS 要做的事情,是把 Claude Code 变成一个常驻后台进程,一个 daemon。
进入 KAIROS 模式以后,有两件事会发生变化:
- 后台会话不随窗口关闭而结束。你关掉终端,daemon 还在跑,监听文件变化、终端输出、开发活动信号,不需要你主动召唤它。
- 上下文跨会话保留。今天每次打开 Claude Code,上下文窗口基本是重新冷启动的(CLAUDE.md 和项目索引除外)。KAIROS 下的 daemon 会在更长的时间窗口里持续累积它对你项目的观察,逐步构建一个越来越完整的内部模型。
只看到这里,它也不过是 "Cursor / 通义灵码用户天天喊的那个记忆功能"。真正奇怪的部分在后面。
autoDream:它会在你闲着的时候自己整理记忆
KAIROS 里最让我意外的一个子系统叫做 autoDream。名字是代码里的原词,不是我起的。这个命名是一个非常明显的生物学类比——大脑在睡眠期间完成短期记忆向长期记忆的巩固,叫 memory consolidation。
autoDream 的触发条件是用户处于空闲状态:一段时间内没有输入、没有运行命令、没有和 agent 交互。一旦触发,daemon 会对累积的观察执行三类操作:
1. 合并分散观察。 跨 session、跨文件、跨子进程收集到的事实被缝合成统一的表示。比如代理对 auth/session.ts 的零散笔记会被合并成一个一致的模型。
2. 消除逻辑矛盾。 当新观察和旧观察冲突的时候——典型场景是你重构代码,把某段逻辑从 A 模块挪到了 B 模块——autoDream 会丢弃旧的条目,避免过时知识在后续判断里产生干扰。
3. 把"可能"升级成"就是"。 这一条是我看了好几遍才确认自己没读错的。代理对一些事情的内部记录是带 hedge 的,比如 "这个函数可能处理认证"。在积累了足够多的佐证之后,autoDream 会把这类条目改写为确定陈述:"这个函数处理认证"。hedge 被抹掉。
这三件事都是在不需要人审批的情况下自主完成的。开发者不会看到一个 "consolidation diff",不会被问 "以下是我准备写入永久记忆的结论,你要不要批准"。你在泡咖啡,daemon 在后台处理,你回来以后代理对你这个代码库的内部模型已经变了。
它为什么是一次范式变化
如果你觉得 "持久化记忆" 听起来只是一个小优化,可以试着用这个类比来看:
早年的文本编辑器是被动工具,它显示字符,你编辑。现代 IDE 是主动的——它在你打字的时候就做静态分析,编译之前就标错,主动提建议、管理依赖。这中间完成了从"被动工具"到"半自主工具"的切换。
现在所有 AI 编程工具还停留在前一个阶段:带花哨自动补全的被动编辑器。你问,它答,它忘。KAIROS 是我目前看到的第一个明确想要往"主动 IDE"那边跳的设计。而且它要跳的距离比 IDE 本身还要远——IDE 的静态分析操作的是语法和类型,而 autoDream 操作的是语义和意图。它不是知道你的代码能不能编译,它是在试图知道你想做的事是什么。
对我这种现在每天用 Claude Code + Cursor 混合工作流的人来说,如果 KAIROS 真的以某个接近泄露源码描述的形态上线,它就不是"Claude Code 2.x 的一个小版本",而是第一个真正意义上作为后台代理而不是按需助手运行的 AI 编程工具。助手是你叫它才动的,代理是它自己会动的。这两件事差得很远。
四个值得警惕的点
周末读下来,我有四个点是直接劝所有开发者:哪怕这个 flag 真上线了,打开之前也先想清楚。
1. "绝对事实"这一步非常危险。 autoDream 把 "可能" 升级成 "就是" 的这一步,是整套系统里影响最大的操作。如果某次巩固把一个错误假设写进了永久记忆,而且你作为开发者又没法方便地审计代理的内部状态,那之后每一次它基于这个错误做决策,都是在被污染的地基上盖楼。泄露的代码里,我没找到一个明确的机制来检测和回滚错误的 promotion。
2. 常驻监听是一个隐私面。 持续监听文件变化和终端输出意味着必须回答一个问题:什么数据发到哪里。本地推理?持续 API 调用?本地小模型 + 云端 embedding 混合?泄露的代码没给出干净答案。
3. 资源成本还没定论。 把一个大模型当 daemon 跑不是免费的——无论是跑在你笔记本上还是 Anthropic 的基础设施上。泄露的代码里没有明确的执行模型承诺,所以我们现在对"开这个会让电池和账单变成什么样"这个问题没有答案。
4. 它不一定会上线。 feature flag 在大型代码库里能活好几年,也有大量最终被彻底抛弃。KAIROS 出现在泄露源码里,不等于 Anthropic 真的承诺要把它做成产品。别在一个从来没有真实用户接触过的功能上规划你团队的工作流。
写在后面
Claude Code 源码泄露距离 3 月 26 日的 Claude Mythos CMS 泄露只有 5 天。两件事都已经公开了一段时间,不同的研究员在不同深度上各自拆解。我后面会继续读剩下的 43 个 feature flag——BUDDY、COORDINATOR、ULTRAPLAN 这几个名字足够吸引眼球,我估计它们背后每一个都是一篇长文。
如果你也在看这批泄露内容,或者对某一个 flag 的实现细节有想讨论的,评论区见。
延伸阅读
- KAIROS 深度解析:Claude Code 隐藏的 daemon 模式 — 社区里另有一份更系统的子系统路径分析,带结构图和代码路径梳理,同主题里我读下来最完整的一篇
- Claude Code 源码泄露全貌:到底暴露了什么 — 有人做的完整事件复盘
- Fortune 的原始报道(英文):Anthropic's second security lapse in five days