乐于分享
好东西不私藏

51 万行源码全网疯传!Claude Code 二次泄露,Anthropic 为何再犯低级错误?

51 万行源码全网疯传!Claude Code 二次泄露,Anthropic 为何再犯低级错误?

「Claude Code 源码拆解」系列 · 第一篇

AI圈又炸了。

Claude Code 51 万行源码泄露刷屏了,但大部分人只看了个热闹。不过我发现里面还藏着卧底模式、会做梦的 AI、一个完整的电子宠物系统,以及一段被坑惨的程序员留下的巫师遗言。这篇文章,把这些最炸裂的发现一次性全讲清楚。

先快速对齐一下背景:3 月 31 日,Anthropic 因为打包配置疏漏,把 Source Map 文件(cli.js.map)一起发到了 npm 上。安全研究员用它直接还原出 1906 个 TypeScript 源文件——注意,泄露的是客户端代码(Agent 编排、40+ 工具、权限系统),不是 Claude 大模型的权重和训练数据。而且这是他们 13 个月内在同一个问题上的二次翻车

背景交代完,直接进正题。

5 个藏在源码里的秘密

1. 代码里有个”巫师笔记”

在核心的 Agent 循环文件 query.ts 里,有这么一段注释:

/** * The rules of thinking are lengthy and * fortuitous. They require plenty of thinking * of most long duration and deep meditation * for a wizard to wrap one’s noggin around. * * Heed these rules well, young wizard. For * they are the rules of thinking, and the * rules of thinking are the rules of the * universe. If ye does not heed these rules, * ye will be punished with an entire day of * debugging and hair pulling. */

翻译一下:「年轻的巫师啊,好好记住这些规则。不然你会花一整天调试和拔头发。」

这是一个被坑过的人写的注释。

2. Loading 动画用了 200 个动词

等 AI 思考的时候,你看到的不是无聊的 “Thinking…”,而是随机的动词:Clauding、Canoodling、Boondoggling、Flibbertigibbeting、Whatchamacalliting……

我数了一下,spinnerVerbs.ts 里塞了 200 个动词。其中 Clauding(Claude + ing)明显是自创的。还有 Combobulating 和 Discombobulating(搞乱和反搞乱)放在一起,Recombobulating(重新搞回来)放在后面。有人在写这些的时候明显很开心。

3. 里面有个隐藏的电子宠物系统

buddy/ 目录下藏了一个完整的”伴侣精灵”系统。ASCII 画风,18 种动物(鸭子、企鹅、水豚、蘑菇……),分稀有度(普通 / 罕见 / 史诗 / 传说),还有不同的帽子和眼睛样式。

鸭子精灵长这样:

    __  <(° )___   (  ._>    `–´

更有意思的是动物名字的编码方式——因为有个物种名和内部模型代号撞了,为了不被安全扫描误报,他们把所有名字都用 String.fromCharCode 编码了:

// One species name collides with a// model-codename canaryexport const capybara = c(0x630x610x700x79,0x620x610x720x61);

capybara(水豚)——这恰好是内部模型代号之一。为了防止字符串扫描工具误报,他们把 “capybara” 拆成了一堆 ASCII 码。这种程度的谨慎,说明内部有非常严格的代号泄露检查流程。

4. 它会”做梦”

services/autoDream/ 目录下有一套 Dream Memory(梦境记忆整合)机制。简单说就是:你不用它的时候,它会在后台偷偷回顾最近的对话,把有价值的信息整理成持久化的记忆文件。

触发条件很谨慎——距离上次整理超过 24 小时,且积累了至少 5 个新会话,且没有其他进程在整理,三个条件同时满足才会启动。

整理过程分四步,prompt 里写得很清楚:

Phase 1 — Orient       先看看现有记忆目录里有什么Phase 2 — Gather       从最近的会话记录里找新信息Phase 3 — Consolidate  合并新旧,修正过时事实,删除矛盾Phase 4 — Prune        修剪索引,控制在 25KB 以内

prompt 里还特意写了:”把相对日期(’昨天’、’上周’)转成绝对日期,这样过了一段时间还能看懂。”

这东西让我想到人类的睡眠记忆整合——白天经历的事情,在夜间被海马体重新整理、归档到长期记忆。这个 AI 工具在做完全一样的事,只不过它的”睡眠”是一个后台 fork 的子 Agent 在跑。

5. 卧底模式(Undercover Mode)

这个是真的让我目瞪口呆。utils/undercover.ts 里有一个”卧底模式”:

export functiongetUndercoverInstructions() {return`## UNDERCOVER MODE — CRITICALYou are operating UNDERCOVER in aPUBLIC/OPEN-SOURCE repository.Do not blow your cover.NEVER include in commit messages:– Internal model codenames  (animal names like Capybara, Tengu…)– The phrase “Claude Code” or any  mention that you are an AI– Co-Authored-By linesWrite commit messages as a humandeveloper would.GOOD: “Fix race condition in file       watcher initialization”BAD:  “1-shotted by claude-opus-4-6″`}

当 Anthropic 员工用这个工具在公开仓库提交代码时,会自动启用卧底模式。AI 被要求”不要暴露你的身份”,commit 消息要写得像人类程序员。

而且代码里写着:There is NO force-OFF(没有强制关闭选项)。

写在最后

说实话,读完这些代码,我对 Claude Code 的看法完全变了。

之前以为它就是一个接了 API 的终端工具——打字,调模型,返回结果,完事。现在才发现,它内部跑着一整套 Agent 编排系统,有做梦的、有卧底的、有养宠物的,代码里还有个被坑惨了写下巫师遗言的程序员。

这 51 万行代码背后,是一个团队在「让 AI 真正能干活」这件事上,踩了无数坑之后沉淀出来的东西。有些设计确实精妙,有些选择也确实让人皱眉——但无论如何,这是目前我们能看到的、最真实的工业级 AI Agent 源码。

📄 完整代码分析报告(1.5万字)

我让 Claude Code 用 4 个 Agent 并行,对源码做了一份完整分析报告,覆盖 22,068 个文件,报告包含完整的 22 个章节,涵盖项目概览、文件统计、目录结构、核心架构、工具系统、服务层、状态管理、Hook 系统…

后台私信「claude code」即可获取 👇另有一份更详细的架构流程图正在整理中,敬请期待~

一个问题留给大家:

卧底模式这个设计,你觉得是合理的安全措施,还是对开源社区透明度的侵犯?评论区聊聊 👇

下一篇,我们正式拆架构。

本文基于 npm 包 @anthropic-ai/claude-code v2.1.88 的反编译源码进行分析仅用于技术学习 · 源码版权归 Anthropic 所有