乐于分享
好东西不私藏

Claude Code 51 万行源码泄了,还是 Anthropic 自己搞的

Claude Code 51 万行源码泄了,还是 Anthropic 自己搞的

今天刷推特,看到安全研究员 Chaofan Shou 发了一条推:

Claude code source code has been leaked via a map file in their npm registry!

Claude code源代码泄露了!

8000+ 个赞,269 万浏览,几个小时之内,GitHub 上就有人把源码整理成了完整仓库,6600+ star,10000+ fork。

怎么泄的

不是什么高端黑客攻击,是 Anthropic 自己把 source map 打包进了 npm 发布物。

Claude Code 最新版 v2.1.88,npm 包体积从 17MB 暴涨到 31MB。多出来的就是一个 57MB 的 .map 文件。

Source map 本来是开发调试用的,它里面有两个数组:sources(文件路径)和 sourcesContent(完整源码),索引一一对应。不需要反编译,不需要反混淆,JSON 打开就是完整的 TypeScript 原始代码。

提取脚本大概 10 行就搞定。

更尴尬的是,这不是第一次。2025 年 2 月 Claude Code 刚上 npm 的时候就出过一模一样的事,后来修了。一年过去,最新版又把 source map 打进去了。前一版 v2.1.87 还是干净的,大概率是构建配置改动意外引入的。

推特上 @0xLogicrw 总结得很准确:

不涉及模型权重和用户数据,对普通用户没有安全风险。但 Anthropic 的工程团队大概不太想让全世界读自己的源码。

源码里有什么

1906 个 TypeScript 源文件,51 万行代码。 整个 Claude Code CLI 的完整实现。

先说技术栈:

  • 运行时:Bun(不是 Node.js)
  • 终端 UI:React + Ink(没错,用 React 写命令行界面)
  • CLI 框架:Commander.js
  • 类型校验:Zod v4
  • 搜索:内置 ripgrep
  • 协议:MCP SDK、OpenTelemetry
  • 功能开关:GrowthBook

用 React 写 CLI 这个选择挺有意思的。Ink 这个库我之前就知道,但没想到 Anthropic 在生产级产品里用上了。终端里的那些交互效果,原来都是 React 组件渲染出来的。

39 个工具,全部暴露

Claude Code 的核心是一个 工具注册系统src/tools/ 目录下有 39 个工具实现:

BashTool、FileReadTool、FileEditTool、FileWriteTool、GlobTool、GrepTool、AgentTool、WebFetchTool、WebSearchTool、MCPTool、SkillTool、TaskCreateTool…

每个工具的实现细节,包括权限控制逻辑、输入校验、错误处理,全都可以看到。

50+ 个 slash 命令也全在 src/commands/ 里,包括一些你可能没见过的:/doctor/diff/cost/desktop/mobile/chrome/bridge、甚至还有 /bughunter/good-claude

几个有意思的子系统

翻代码的过程中,几个目录让我停下来多看了一会儿:

coordinator/ 是多 Agent 协调系统,可以把 Claude 变成一个指挥官,同时管理多个并行的 worker agent。这个功能目前还没完全开放,但代码已经很完整了。

bridge/ 是 IDE 集成的通信层,VS Code 和 JetBrains 插件就是通过这个和 CLI 通信的。

voice/ 是语音输入模块,这个功能已经上线了,在 Claude Code 里可以直接用语音和 AI 对话。

services/ 里藏着最多东西:API 客户端、OAuth 认证、MCP 协议、LSP 支持、数据分析(GrowthBook feature flags)、上下文压缩(compact)、策略限制(policy limits)。

隐藏的功能开关

代码里暴露了一组 feature flags,这些是还没有正式发布的功能:

  • KAIROS:看代码描述是一个自主后台守护进程模式,可以持续运行、记忆合并
  • PROACTIVE:主动模式
  • BRIDGE_MODE:桥接模式(IDE 集成相关)
  • DAEMON:守护进程
  • VOICE_MODE:语音模式(已上线)
  • AGENT_TRIGGERS:Agent 触发器
  • MONITOR_TOOL:监控工具

其中 KAIROS 最值得关注。从代码结构看,它可能是 Claude Code 的下一个大更新方向:一个始终在后台运行的 AI Agent,不再需要你手动开启一个 session,它会持续监控你的项目状态。

当然,功能开关只是代码里存在,不代表一定会发布。Anthropic 完全可能砍掉其中任何一个。

中文互联网的反应

泄露仓库地址是 github.com/instructkr/claude-code

韩国开发者上传的,commit message 就一个字:asdf。

GitHub 仓库的 Issues 区已经变成了大型合影留念现场。342 个 issue,绝大部分是中文用户在打卡:

  • • 笑死了全是国人
  • • 终于可以一睹源码
  • • 国产 agent 你崛起罢
  • • 不久后国内:XXagent 震撼首发

最后一条是调侃,但也不是没道理。一份完整的、生产级的 AI Agent 架构参考代码,对整个行业都有学习价值。

推特上 @sanbuphy 的点评比较专业:

整体代码结构很成熟,主流程包括 REPL 启动、QueryEngine、工具注册、Slash 命令、权限系统、任务系统,以及多层状态管理,非常典型的生产级 AI agent harness 设计。

后续

Anthropic 反应很快,已经在 GitHub 上发起了 DMCA takedown。仓库应该很快会被删除。但 npm 的早期版本已经被存档,源码早就在社区流传了。这种事一旦泄出去,就收不回来了。

不过说句公道话,这次泄露的只是 CLI 客户端的前端代码,不涉及 Claude 模型本身的任何东西。没有模型权重,没有训练数据,没有用户数据。真正值钱的东西还是安全的。

对开发者来说,倒是多了一个很好的学习材料:一个价值几十亿美金的公司,是怎么用 TypeScript + React 构建一个企业级 AI Agent 框架的。工具注册、权限控制、上下文管理、多 Agent 协调,这些都是任何 AI Agent 产品都会遇到的问题。

给所有发 npm 包的开发者提个醒:发布前检查你的 .map 文件。 一行 sourcesContent 就能让你的所有代码公之于众。

写在最后

一家做 AI 安全的公司,因为构建配置没管好把自家源码全泄了,这个剧情多少有点讽刺。

但换个角度看,这 51 万行代码展示了一个事实:现在最好用的 AI 编程工具,技术栈并不神秘。React + Ink + Bun + 一套精心设计的工具注册系统。真正的壁垒还是在模型能力上。

源码已经泄了,但 Claude Code 不会因此变得更弱。该好用还是好用。

有些东西,藏不住也没必要藏。我是洞见,下次见。