Claude Code 源码泄露??顺手分析了它的架构
今天Claude Code 把自家源码送出去了。

不是被黑客,竟然是 Anthropic 自己在发布 npm 包时,把一个叫 cli.js.map 的文件一起打了进去。
提取起来还好——source map 格式就两个数组:sources 是文件路径,sourcesContent 是对应的完整源码。读 JSON、按路径写文件,十几行脚本就搞定了。

Anthropic 后来意识到了,移除了这个文件,相关的提取仓库也遭了 DMCA。但早期 npm 版本已经存档,源码早就流出去了。
我把这份代码翻了一遍,说几个让我印象最深的点:
第一:Claude Code 跑在 Bun 上,不是 Node.js。 为什么用 Bun?因为 bun:bundle 有个东西叫 feature(),可以在编译时把代码整块删掉。Anthropic 有很多内部功能——多 Agent 协调模式、助手模式、内部调试工具——这些在对外发布的版本里会被完全裁掉,连字符串都不保留。Node.js 没有这个能力。
第二:终端界面是用 React 写的。 用的是 Ink 这个库,把 React 组件树渲染到终端。做过前端的人看这代码会感觉很亲切——整个 CLI 就是一棵 React 组件树,状态变化触发重新渲染。
第三:工具系统有 40 多个工具。 文件读写、Bash 执行、Web 搜索、语言服务器集成、……每个工具都是独立的 class,暴露名称、描述、参数 schema 给 Claude API。Claude 决定调哪个,执行结果塞回对话,然后再决定是否继续调。
第四:有一套真正的多 Agent 架构,内部代号叫 Tengu。 源码里所有埋点事件都带 tengu_ 前缀。有一个协调者模式,一个 Claude 实例作为指挥,可以动态派生多个子 Agent 并行工作,子 Agent 之间还能互发消息。这套系统已经内置在代码里了,不是 demo。
第五:MCP 客户端的体量让我吃了一惊。 MCP(模型上下文协议)的客户端实现有 119KB,认证模块有 88KB。里面有完整的 OAuth 流程、企业身份验证、官方注册表自动拉取。这块是认真做的。






夜雨聆风