翻遍Claude Code泄露的50万行代码,我终于发现了它好用的秘密
6 小时前 / 阅读约12分钟
来源:36kr
Anthropic发布Claude Code时误将调试文件打包进npm包,致50万行代码泄漏。泄漏代码揭示了KAIROS、autoDream等功能,以及subagent的fork模式共享prompt cache等创新设计,还包含未发布功能和隐藏指令。

Claude Code 不是一个套了终端界面的 AI 聊天工具。 

这件事,Anthropic 的工程师用一个失误证明了。 

3 月 31 日,他们在发布 Claude Code v2.1.88 的时候,把一个本该留在内部的调试文件,打包进了公开的 npm 安装包。那个文件有 59.8 MB,里面是完整的、从未混淆过的 TypeScript 源代码,约 50 万行,将近 1900 个文件。 

最早发现 Claude Code 源代码泄漏的工程师个人主页截图,https://scf.so/ 

凌晨 4 点多,一位在 Solayer Labs 实习的工程师在 X 上发出发现,附上了直接可以下载的存档链接。这条帖子最终获得了近 1000 万次浏览。 

Anthropic 当天就把那个版本从 npm 下架,但已经来不及了,代码被镜像到 GitHub,相关仓库在一天内积累了近 3 万颗星。 

往全球最大的开源平台上这么一放,还立马收获了 8 万多个 Star,「Anthropic 是不是要比 OpenAI 更 Open 了」;马斯克也在线吃瓜,转发了这一观点,并表示劲爆。 

Claude Code 的负责人在 X 上回应:「这不是 Bun 相关的安全漏洞,没有用户数据泄漏,只是开发者的错误而已。」 

这个解释没有问题。但他们没提到的是:这次泄漏让我们第一次看清楚,Claude Code 的底层到底是什么结构,以及为什么它在大多数用户群体里的口碑远超其他同类工具。 

你在睡觉,模型也在做梦 

这是这次代码泄漏事件里被讨论最多的内容之一。KAIROS,一个源代码里出现了超过 150 次的词,古希腊语,意思是「恰好的时机」。 

KAIROS 是一个还没有正式发布的功能,但从代码的完成度来看,可能马上就会全量发布。其负责人在 X 上回复网友询问时,提到这项功能还在犹豫要不要发布。 

它代表的是一种「后台守护进程模式」,Claude Code 在我们不用它的时候,自动在后台运行,处理任务,整合记忆。 

其中有一个叫 autoDream 的逻辑:当用户处于空闲状态时,agent 会执行「记忆整合」,合并分散的观察,清除相互矛盾的信息,把模糊的推断转化成确定的知识。

通俗来讲,当我们在睡眠的时候,大脑并不是完全休息下来,它会自动编排我们的记忆,保留那些重要的,丢掉可以忘记的。而如果睡眠不足,大脑就会记不住事情,不知道什么该记住,工作效率也会下降。 

放在 Claude Code 上,对话太多, 上下文长度溢出,就增大出错概率。包括 OpenClaw 在内,这种命令行工具采用的方式都是 compact 压缩,但 compact 效率不够高,autodream 的优化就同时解决了上下文长度有限,和压缩会丢失信息两方面的问题。 

这和今天大多数 AI 工具的运作方式完全不同。今天的 AI 工具大多是被动的,我们问它才答,不问它就沉默。 

KAIROS 想做的是主动的,在我们离开的这段时间里,它把之前的任务状态捋清楚,自动更新用户角色、具体项目的记忆、工具偏好的记忆,以及主记忆文件,等我们再回来时直接生成一个整洁的起点。 

在这次的泄漏事件之前,已经有网友在 Claude Code 能体验到。Claude 会在各个会话中记录每日对话日志,然后在夜间「做梦」,自动将我们的记忆整理成有用的笔记。 

Claude Code 睡醒一觉后,回顾梦里做了些什么,更新了用户角色、主记忆等内容 

5 个 Agent,成本约等于 1 个 

另一个让网友们讨论最多的设计是,subagent 的 fork 模式共享 prompt cache。 

当 Claude Code 派生出一个子 agent,它会创建一份和父 agent 完全字节相同的上下文副本。Anthropic 的 API 会缓存这份上下文。所以派生 5 个 agent 并行工作,消耗的 token 成本接近于 1 个 agent 顺序工作,因为 5 个副本都命中了同一份缓存。 

源代码里有三种子 agent 的运行模式:fork(继承父 agent 上下文,适合同一任务的并行分支)、teammate(在独立的终端窗格里运行,通过文件通信)、worktree(给每个 agent 一个独立的 git 工作树,互不干扰)。 

这意味着我们可以让 Claude Code 同时跑:一个做安全审计,一个重构认证模块,一个写测试,一个更新文档,而由于 Claude Code 内部的缓存命中机制,所需要的费用,可能和按照顺序做一件事差不多。 

大多数人觉得 Claude Code 不好用,大概是只把它当成单线程工具在用,而不是一个 Agent 调度平台。 

这就像你雇了一个团队,却让他们排队一个一个干活,员工的能力没有被充分释放。 

那些藏在代码里的细节 

这种按照顺序的一来一回的任务模式,除了无法发挥多个 Agent 处理的能力和节约 Token 成本外,Claude Code 的效果还大打折扣。 

另一个没有被重视的功能是,CLAUDE.md 文件。在这份源代码里,有网友看到 Claude Code 在处理我们的查询时,每一轮对话都会重新读取这份文件。 

CLAUDE.md 是给 Claude Code 写配置的地方。我们的代码风格偏好、项目架构决定、哪些操作「没有我的确认永远不要做」——这些都可以写进去。 

由于每轮对话都会被重新加载,所以它一般不用写得太长。我们可以给 CLAUDE.md 设置不同的层级。例如 ~/.claude/CLAUDE.md 是全局规则,./CLAUDE.md 是项目级规则,.claude/rules/*.md 是模块化的子规则,CLAUDE.local.md 是本地私有笔记。 

除了设计层面的发现,源代码里还有些意想不到的细节。 

有开发者注意到,代码里有一份相当庞大的正则表达式库,专门用来检测用户输入里的负面情绪,识别各种骂人的话、抱怨、沮丧的表达。这些会被捕捉下来,可能用于某种体验优化或者反馈分析。 

Claude Code 负责人回复这只是用来判断用户体验是否良好 

更有意思的是一个叫 ANTI_DISTILLATION_CC 的标志。开启之后,Claude Code 会在发给 API 的请求里加入一批假工具定义。这些工具并不存在,纯粹是用来污染流量。 

如果有竞争对手在抓 Claude Code 的 API 通信数据、试图用它来训练自己的模型,这些假数据就会混进去,让训练数据质量变差。 

而另一个叫「Undercover Mode」(潜伏模式)的功能,则是「实锤」了 Claude Code 现在快成为 Anthropic 内部的软件工程师。 

源代码里有一份系统提示,明确写着:「你正在以潜伏状态运行……你的提交信息里绝对不能包含任何 Anthropic 内部信息。不要暴露你的身份。」 

具体来说:提交信息不能出现「Claude Code」、不能有「Co-Authored-By: Claude」、不能有任何 AI 归因。同时,内部代号 Capybara、Tengu、Fennec 在外部代码仓库里必须只字不提。 

Anthropic 使用这个功能是为了让内部工程师能用 Claude Code 给开源项目贡献代码,而不在公开的提交历史里留下痕迹。 

这些 AI 生成的代码,在公开仓库里静默贡献,已经有了完整的工程实现,而且是从源代码级别,把这套逻辑明确写进系统提示。 

有网友把 Claude Code 此次代码泄漏事件中,所有的内容,包括未来 Claude Code 的更新、以及 Claude Code 架构设计和有意思的细节,专门做成了一个网站。 

网站地址:https://www.ccleaks.com/ 

网站里面提到 Claude Code 的完整代码里包含了 8 个未发布的功能,26 个隐藏指令以及大量的构建标志和环境变量等。 

这 8 项未发布的功能包括: 

1. Buddy:AI 的伴侣宠物 

2. Coordinator Mode:多 Agent 的协调者模式 

3. UDS Inbox:多个 Claude Code 对话的跨对话沟通 

4. KAIROS:会自动整理记忆的后台守护进程 

5. ULTRAPLAN:长达三十分钟的远程规划 

6. Daemon Mode:守护进程模式 

7. Auto-Dream:自动记忆整合 

8. Bridge:可以远程控制的桥接功能 

其中部分功能已经针对特定的用户开启了测试,而就在代码被泄漏之后,Claude 官方也是紧锣密鼓地推出了部分「未来待发布」的功能。 

例如 Buddy 这个小项目,原本计划是明天发布,但是被代码泄漏这件事一折腾,索性就直接推出了。 

输入 claude update,更新本地的 Claude Code 之后,再进入 Claude Code,输入 /buddy,我们就能随机得到一个小宠物。 

Claude 一共设计了鸭子、鹅、猫、章鱼、猫头鹰、企鹅、乌龟、蜗牛等 18 个电子宠物,就像抽卡一样,不同的宠物有不同的等级,例如我们抽到的是两颗星的 uncommon,还有 common、rare 稀有等不同品类。 

除了随机获取的概率不同,每个宠物也有不同的性格,包括像是 Chaos 混乱值代表随机、Snark 值表示性格比较毒舌,还有 Debugging 调试、Patience 耐心,以及 Wisdom 智慧等不同数值,来定义这些宠物。 

它们会在 Claude Code 的命令行终端页面,陪着我们一起处理工作。输入 /buddy pet 我们甚至还能抚摸自己的电子宠物,它会在头顶飘过几颗小爱心。 

和 Claude 之前举办的「模型葬礼」一样,他们大概认为产品可以不只靠功能,也靠陪伴感。 

这次代码泄漏事件,让我们看到了 Claude Code 在技术层面的诸多创新: 

1. autoDream 让 AI 像人一样主动整理记忆 

2. subagent fork 模式让并行工作的成本大幅降低 

3. CLAUDE.md 分层配置让工具真正理解你的工作习惯 

4. 反蒸馏机制和潜伏模式展示了对竞争和隐私的深思熟虑 

但更重要的是,我们从 Buddy 这样的愚人节彩蛋里,能感受到 Anthropic 对产品的理解:工具不只是效率的延伸,也可以是情感的连接。

毕竟这一波代码泄漏后,Claude Code 的各种功能可能被很快复制,但是和 Claude Code 这一个工具建立情绪连接很难。

当我们在深夜调试代码时,终端里那只赛博拓麻歌子,可能比任何一个技术参数都更能说明,为什么 Claude Code 好用。