乐于分享
好东西不私藏

51 万行源码意外曝光!我扒完了 Claude Code 的全部家底

51 万行源码意外曝光!我扒完了 Claude Code 的全部家底

Anthropic 自己把自己扒光了

3 月 31 日凌晨,AI 圈炸了一颗核弹。

不是发新模型,不是融资消息——是 Anthropic 自己把 Claude Code 的完整源码泄漏了

事情是这样的:Anthropic 在 npm 发布 @anthropic-ai/claude-code@2.1.88 时,打包进了一个 59.8MB 的 JavaScript Source Map 文件。这个 .map 文件本来是内部调试用的,但它直接指向了 Anthropic 自家 Cloudflare R2 存储桶上的完整 TypeScript 源码压缩包

安全研究员 Chaofan Shou 第一个发现了这个链接,并在 X 上公开。

几小时内,1,900 个 TypeScript 文件、512,664 行代码被完整镜像到 GitHub 上。有人甚至在 2 小时内就用 Python 重写了核心逻辑,仓库星标飙到 5 万。

更讽刺的是,这已经是 Anthropic 第二次犯同样的错误——2025 年 2 月就出过一次几乎一模一样的 source map 泄漏。而就在几天前,他们还刚刚意外暴露了内部模型代号 “Mythos”。

Anthropic 官方的回应是:“This was a release packaging issue caused by human error, not a security breach.”(这是人为错误导致的发布打包问题,不是安全漏洞。)

但代码已经在互联网上了。DMCA 撤回通知能删仓库,删不掉已经下载到本地的 zip 包。

我花了一整天时间,把这 51 万行代码从头到尾扒了一遍。下面是我发现的全部内容。


一、这到底是个多大的工程?

先看硬核数据:

指标
数据
总代码量
512,664 行

 TypeScript
文件数
1,884 个 .ts/.tsx 文件
运行时
Bun(不是 Node.js)
终端 UI
自研 Ink 分支 + React + Yoga Layout
Schema 校验
Zod v4(所有工具输入、API 响应、配置文件)
实验平台
GrowthBook(所有开关都用 tengu_ 前缀)
最大单文件
print.ts

 — 5,594 行,单个函数 3,167 行,12 层嵌套

51 万行是什么概念?Linux 内核 0.01 版不到 1 万行,整个 VS Code 编辑器大约 30 万行。Claude Code 一个 CLI 工具,代码量比 VS Code 还多。

这不是一个”LLM 套壳”,这是一个完整的操作系统级智能体。


二、整体架构:五层洋葱

从源码来看,Claude Code 的架构像一颗洋葱,从外到内分五层:

我们一层一层拆。


三、启动流程:快到你感觉不到

你在终端敲下 claude 回车,背后发生了什么?

关键设计:入口文件只有 302 行。通过动态 import() 延迟加载 4,683 行的主模块,确保 claude --version 这种简单命令毫秒级响应。所有重依赖(MCP、GrowthBook、keychain)都是并行初始化,不互相等待。

这是一个对启动速度有执念的团队写出来的代码。


四、核心引擎:一个永不停歇的循环

Claude Code 的心脏是一个流式查询循环。你发一条消息,引擎就开始转:

几个精妙的设计:

1. 输出恢复机制:当模型因 max_output_tokens 截断时,自动续写,最多重试 3 次。你以为 Claude 一口气写了 2000 行代码?其实它可能分了 3 次才写完,但你看不出接缝。

2. 工具结果预算:工具返回的结果如果太大(比如 grep 搜到了 1 万行),不会直接塞进上下文窗口。而是存到磁盘,给模型一个文件路径 + 预览摘要。这就是为什么 Claude Code 处理大项目不容易爆上下文。

3. 自动压缩:当 token 数接近上下文窗口极限时(默认留 20,000 token 缓冲区),自动触发一轮”摘要”调用,把历史对话压缩成精简版。你聊了 100 轮,模型看到的可能只有最近 10 轮 + 前 90 轮的摘要。


五、工具系统:40+ 个武器库

Claude Code 注册了超过 40 个工具。但更有意思的是它们的分类和调度策略

完整工具清单

分类
工具
说明
文件操作
FileRead, FileWrite, FileEdit, Glob, Grep, NotebookEdit
读写搜索编辑
系统执行
Bash, PowerShell
Shell 命令
网络
WebFetch, WebSearch
抓网页、搜索
智能体
Agent, SendMessage, TeamCreate, TeamDelete
生成/管理子智能体
任务
TaskCreate/Get/Update/List/Stop/Output
后台任务管理
规划
EnterPlanMode, ExitPlanMode
只读规划模式
Git
EnterWorktree, ExitWorktree
Worktree 隔离
MCP
MCPTool, ListMcpResources, ReadMcpResource
MCP 协议
辅助
ToolSearch, Skill, AskUserQuestion, Config, Brief, LSP, TodoWrite
杂项
KAIROS 专属
Sleep, CronCreate/Delete/List, Monitor, PushNotification
自主守护模式

读写分离调度

每个工具都声明了自己是否”并发安全”(isConcurrencySafe)。读文件、搜索这类只读操作可以 10 个并发跑;改文件、执行命令这类写操作必须排队。

这就是为什么你让 Claude Code 探索一个大项目时速度特别快——它在后台同时搜 10 个文件。


六、权限系统:六种模式,层层过滤

这可能是 Claude Code 最严谨的模块,24 个文件专门负责权限控制。

六种安全模式

模式
行为
典型场景
default
每次新操作都问你
日常使用
plan
只能读,不能写
审查代码
acceptEdits
自动接受文件编辑
信任的项目
bypassPermissions
跳过所有检查
YOLO 模式
dontAsk
不问就拒绝
最严格
auto AI 自动判断安全性
Anthropic 内部专用

权限决策链

白名单支持 glob 模式:Bash(git *) 表示允许所有 git 开头的命令。连续被拒绝太多次后,系统会自动降级到手动确认模式,防止模型”硬闯”。


七、多智能体:一个包工头带一群工人

Claude Code 的多智能体系统分两层:协调器(包工头)和工作智能体(工人)。

协调器的系统提示词长达 300 多行,定义了四阶段工作流

  1. 1. Research — 先派人探索代码库
  2. 2. Synthesis — 汇总发现,制定方案
  3. 3. Implementation — 派多个工人并行修改
  4. 4. Verification — 跑测试,验收结果

最有意思的是,这套协调逻辑不是写在代码里的,而是写在 prompt 里的。协调器通过系统提示词被”教会”如何当领导:

“Do not rubber-stamp weak work”(不要草率通过低质量工作)
“You must understand findings before directing follow-up work”(必须理解发现后才能指导下一步)

用 prompt 而非代码来编排多智能体——这可能是目前最优雅的 Agent 编排方式。


八、记忆系统:文件驱动的长期记忆

Claude Code 的记忆不是什么花哨的向量数据库,而是最朴素的文件系统

每条记忆是一个独立的 Markdown 文件,带 frontmatter(标题、描述、类型)。MEMORY.md 是索引文件,限制 200 行 / 25KB,直接注入系统提示词。需要回忆时,通过语义搜索找到相关记忆文件再注入。

还有一个记忆老化机制(memoryAge.ts),会逐步淘汰过时的记忆。

简单、可靠、可调试。不需要起一个 Pinecone 实例。


九、系统提示词:分段缓存的精密工程

Claude Code 的系统提示词不是一个大字符串,而是分成静态段动态段,中间用一个缓存边界分隔:

静态段通过 Anthropic API 的 cache_control 参数跨会话缓存,动态段每次重新构建。这直接影响成本——缓存命中的 token 不计费

源码注释里有一句话让我印象深刻:

“在按 token 付费时,缓存失效不再是计算机科学笑话,而是会计问题。”

为此,他们写了一个 promptCacheBreakDetection.ts,追踪 12 个缓存破坏维度。一旦检测到缓存命中率异常下降,就触发报警。


十、隐藏彩蛋:源码里的”不能说的秘密”

这才是本次泄漏最劲爆的部分。源码里藏着大量从未公开的功能和机制

10.1 反蒸馏机制:给竞争对手下毒

// services/api/claude.ts (301-313)
if
 (feature('ANTI_DISTILLATION_CC')) {
  if
 (process.env.CLAUDE_CODE_ENTRYPOINT === 'cli' &&
      shouldIncludeFirstPartyOnlyBetas
()) {
    result.anti_distillation = ['fake_tools']
  }
}

当启用时,向 API 请求注入 anti_distillation: ['fake_tools']。效果:服务端会在工具调用中混入虚假的工具响应

什么意思?如果有竞争对手在录制 Claude Code 的 API 流量来训练自己的模型,这些虚假的工具数据就会污染他们的训练集

简单说:你抄我的作业?我给你塞几道错题。

不过分析者指出,这个机制其实很容易绕过——MITM 代理在请求到达 API 前就能剥离该字段。“真正的保护可能是法律而非技术。”

10.2 伪装模式:Anthropic 员工的”隐身衣”

utils/undercover.ts 大约 90 行,但信息量巨大。

当 Anthropic 内部员工用 Claude Code 在外部开源仓库工作时,这个模式自动启用。它会:

  • • 删除所有 “Co-Authored-By: Claude” 标识
  • • 禁止提及内部代码名(Capybara、Tengu 等)
  • • 隐藏内部 Slack 频道和仓库名
  • • 不暴露未发布的模型版本号

最关键的一行注释:

“There is NO force-OFF. This guards against model codename leaks.”

没有强制关闭开关。 这是一扇单向门——一旦检测到外部仓库就自动启用,谁也关不掉。

这说明什么?Anthropic 的员工一直在用 Claude Code 给开源项目提交代码,而且不想让任何人知道。

10.3 挫折感检测:它知道你在骂人

// utils/userPromptKeywords.ts
const
 negativePattern =
  /\b(wtf|wth|ffs|omfg|shit(ty|tiest)?|dumbass|horrible|awful|
  piss
(ed|ing)? off|piece of (shit|crap|junk)|what the (fuck|hell)|
  fucking? (broken|useless|terrible|awful|horrible)|fuck you|
  screw
 (this|you)|so frustrating|this sucks|damn it)\b/

这段正则表达式扫描你的每一条输入。一旦检测到你在骂 Claude,就会弹出一个分享对话记录的提示——方便 Anthropic 内部员工快速提交反馈。

为什么用正则而不是让 LLM 判断?注释写道:“正则比 LLM 推理更快更便宜”——用于简单的脏话检测,杀鸡不用牛刀。

放心,这个功能在外部版本中是被编译器完整删除的。你骂了也没人知道。

10.4 KAIROS:一直在线的 AI 守护者

KAIROS——古希腊语”恰当的时机”——是这次泄漏中最重磅的发现

它在源码中被提及超过 150 次,是一个完全已经开发好但尚未发布的功能:始终在线的后台智能体

当前的 Claude Code 是”你问我答”模式。但 KAIROS 模式下,Claude Code 变成了一个永不下线的守护进程

  • • autoDream:你不用 Claude Code 的时候,它在后台自动”做梦”——整理记忆、合并发现、消除矛盾
  • • Cron 任务:每 5 分钟刷新一次计划任务
  • • GitHub webhook:监听你仓库的 PR、Issue、CI 状态
  • • 推送通知:主动找你汇报发现

autoDream 的触发条件也在源码里:

  1. 1. 距离上次整合 ≥ 24 小时
  2. 2. 至少 5 个新会话
  3. 3. 同一时间只有一个进程执行整合(进程锁)

这不再是一个工具,这是一个 AI 同事。

10.5 Buddy 伴侣系统:愚人节彩蛋?认真的?

buddy/ 目录包含一个完整的 Tamagotchi 风格虚拟宠物系统

  • • 18 种物种:鸭子、龙、章鱼、水豚、幽灵、蘑菇……物种名用十六进制编码,因为其中一个物种名跟内部模型代号撞了
  • • 稀有度:普通(60%)、非凡(25%)、稀有(10%)、史诗(4%)、传说(1%)
  • • RPG 属性:DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK
  • • 防篡改:宠物数据从 hash(userId) 确定性生成,不存在本地配置里。你想改配置文件把自己的宠物变成传说级?不好意思,每次都是现算的

活跃窗口:2026 年 4 月 1-7 日。没错,就是今天开始。


十一、Bash 安全:23 道防线

Claude Code 让 AI 在你电脑上执行 Shell 命令。这意味着安全必须做到极致。

bashSecurity.ts 实现了 23 项编号安全检查

防御类别
具体内容
命令注入
拦截 $()${}、进程替换 <()>()
Zsh 危险命令
封禁 zmodloadsysopenztcp 等 18 个内置命令
绕过攻击
防御 Zsh 的 =curl 等号展开(能绕过 curl 权限检查)
Unicode 攻击
检测零宽空格注入、不可见 Unicode 字符
环境变量
防御 IFS 空字节注入
混淆手法
花括号展开、注释/引号边界错位
审计发现
HackerOne 报告的格式错误 token 绕过

每次触发都记录事件(tengu_bash_security_check_triggered + 检查编号),用于持续监控攻击模式。


十二、250,000 次 API 调用的浪费——三行代码修好

源码注释里有一段让人目瞪口呆的记录:

2026-03-10:BQ 分析显示 1,279 个会话在单次会话中有 50+ 连续自动压缩失败(最高达 3,272 次),全球每日浪费约 250,000 次 API 调用。

发生了什么?当上下文窗口接近极限时,Claude Code 会自动尝试压缩对话。但如果上下文已经太大,压缩也会失败。原来的代码没有失败上限,就一直重试、一直失败、一直烧钱

修复方案:

const MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3

三行代码,每天省 25 万次 API 调用。


十三、44 个特性开关:产品路线图全曝光

Claude Code 使用 Bun 的构建时特性开关系统。feature('FLAG_NAME') 在编译时被常量折叠——外部版本中,所有内部功能的代码直接物理删除,不是注释掉,是根本不存在于二进制中。

但源码里全都有。一共 44 个特性开关,部分列举:

开关
功能
状态
KAIROS
始终在线守护智能体
开发完成,未发布
VOICE_MODE
语音输入(Deepgram STT)
开发完成,未发布
COORDINATOR_MODE
多智能体协调
已发布
BUDDY
虚拟宠物
愚人节限定
ANTI_DISTILLATION_CC
反蒸馏投毒
内部启用
DAEMON
后台守护进程
开发中
BRIDGE_MODE
IDE 桥接
已发布
AGENT_TRIGGERS
智能体触发器
开发中
NATIVE_CLIENT_ATTESTATION
客户端证明
开发中
TORCH

 / ULTRAPLAN
未知
未知

这基本上就是 Anthropic 未来半年的产品路线图。 竞争对手(OpenAI Codex、Google Gemini CLI)现在知道 Anthropic 在做什么了。

源码可以被重构。但战略意外,无法被 DMCA 撤回。


十四、社区的反应:2 小时 5 万星

泄漏发生后,GitHub 上迅速出现了多个镜像仓库。其中最火的是 claw-code——一个韩国开发者在凌晨 4 点被手机通知吵醒,连夜用 Python 重写了 Claude Code 的核心架构,然后推上了 GitHub。

“My girlfriend in Korea was genuinely worried I might face legal action from Anthropic just for having the code on my machine — so I did what any engineer would do under pressure: I sat down, ported the core features to Python from scratch, and pushed it before the sun came up.”

2 小时后,仓库星标突破 5 万——成为 GitHub 历史上达到 5 万星最快的仓库。

还有人用 Rust 重写了 runtime 层(6 个 crate,31 个 .rs 文件),声称性能提升了 3 倍。

Anthropic 很快发出了 DMCA 撤回通知,删除了原始镜像。但 Python 重写版因为是”clean-room rewrite”(洁净室重写),目前仍然在线。


十五、这件事意味着什么?

对开发者

Claude Code 的架构中有大量值得学习的模式:

  • • 流式优先:整个链路都是 AsyncGenerator
  • • 读写分离的工具调度:简单但高效
  • • prompt 编排多智能体:用自然语言而非代码定义工作流
  • • 文件驱动的记忆系统:简单可靠,不依赖外部服务
  • • 构建时死代码消除:一套代码,两个版本

对行业

  1. 1. AI 编程工具的复杂度远超想象。51 万行代码、44 个特性开关、23 项安全检查——这不是一个周末 hackathon 能搞定的东西
  2. 2. KAIROS 代表着方向。AI 编程助手正在从”你问我答”走向”始终在线的 AI 同事”。Anthropic 已经把它做出来了,只是没发布
  3. 3. 开源 vs 闭源的边界越来越模糊。Google 开源了 Gemini CLI,OpenAI 开源了 Codex agent SDK。但那些只是工具包。Claude Code 暴露的是旗舰产品的完整内部实现——这不一样

对 Anthropic

这是一周内的第二次意外泄露。对于一家以”AI 安全”为品牌核心的公司来说,连续的安全事故无疑让人尴尬。不过换个角度看——如果你的代码足够好,被看到也不是世界末日。

从源码质量来看,Claude Code 的工程水平确实很高。虽然 print.ts 有 5,594 行、单个函数 3,167 行、12 层嵌套这种”史诗级屎山”,但整体架构思路清晰、安全意识到位、性能优化深入。

51 万行代码,一次意外,全世界都看见了。


如果你觉得这篇文章有价值,欢迎转发给身边的开发者朋友。这可能是我们唯一一次机会,看到一个世界级 AI 编程智能体的完整内部实现。

关注”老邓唠AI”,下一篇我们聊聊从 Claude Code 的架构中,普通开发者能学到哪些可以直接用的设计模式。


参考资料:

  • • The Register: Anthropic accidentally exposes Claude Code source code
  • • DEV Community: Claude Code’s Entire Source Code Was Just Leaked
  • • Alex Kim’s Blog: The Claude Code Source Leak
  • • Fortune: Anthropic leaks its own AI coding tool’s source code
  • • VentureBeat: Claude Code’s source code appears to have leaked
  • • GitHub: claw-code (Python rewrite)