我翻了泄露的 Claude Code 源码,发现一个叫 KAIROS 的隐藏模式

0 阅读7分钟

1_ayEaLE5WEScMDNlsiPUvIg (1).webp

起因

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,后续 FortuneVentureBeatThe Register 都做了报道。Anthropic 把这件事定性为 "a release packaging issue caused by human error",不是 breach,没有客户数据,没有凭证。

我花了周末把能看的部分读了一遍。事先声明两点:

  1. 这篇文章不贴任何 Claude Code 的真实源码片段。原仓库已被清理,Anthropic 的立场也很明确,合理做法是描述模式而不是搬运代码。想看完整的 44 个 feature flag 盘点,我在写这篇的时候参考过社区里有人整理的一份 Claude Code 泄露的 44 个 feature flag 完整清单,比我这篇里 KAIROS 单一个 flag 的视角要宽得多。
  2. 我关注的不是"泄露本身",而是泄露暴露出来的那些 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 的实现细节有想讨论的,评论区见。

延伸阅读