Claude Code源码泄露后,我读出了Anthropic的架构野心
一个本不该出现的 60MB source map 文件,意外揭露了 Anthropic 最核心产品的完整设计蓝图。
说实话,这事儿挺扯的。
表面信息: 51 万行代码的”意外曝光”
3 月 31 日, Anthropic 发布了 Claude Code v2.1.88 版本。这本是个普通的版本更新。直到有人在 npm 包里发现了一个不该存在的东西——一个 60MB 的 source map 文件。
source map 是开发调试用的映射文件,能把压缩代码还原成原始源码。它绝对不该出现在生产发布包里。但这次不仅出现了,而且完整映射了 1906 个 TypeScript 源文件。
51 万行代码。全部可读。
备份库在 GitHub 上瞬间获得了 2 万+星。圈内人起手就是一个 git clone 。
这件事魔幻的地方在于: Claude Code 不是普通的 npm 包。它是一个 AI 编程助手 CLI 工具,核心功能都跑在用户本地。也就是说,任何人拿到这套代码,理论上都能复刻一个 Claude Code 出来。
有人说 6 个月内能复制。我觉得太保守了。
两周内两次泄露。同款错误,犯了两次。
深层分析:这不是玩具,是商业级 Agent 操作系统
拿到源码后,我没急着看具体功能实现。先把整体架构捋了一遍。
结果发现:这不是那种拼凑出来的 API 调用脚本。这是一个高度工程化的专业级 Agent 操作系统。
六层架构的精密设计
源码结构清晰地划分出六个层级:
UI层(React + Ink终端渲染)
↓
控制引擎层(QueryEngine,Agent循环核心)
↓
执行层(Tools + Commands,沙箱化执行)
↓
安全层(六级权限验证 + 四层决策管道)
↓
通信层(Bridge + MCP协议桥接)
↓
基础设施层(Memory记忆系统 + 状态缓存)

这个架构最大的特点是解耦。每一层都有清晰的边界和职责划分。
比如 QueryEngine 只负责 LLM 交互循环和上下文管理。真正的文件读写、命令执行都在 Tools 层,而且每个 Tool 都在独立沙箱里运行。安全层又单独负责权限审查。三层分离,互不干扰。
这种设计让我想起微服务架构的思路——把单体拆开,每个模块独立演进。但这里不是分布式系统,是本地 CLI 工具。
为什么要这么复杂?
因为安全。
六级权限验证 + 四层决策管道
每一个工具调用——无论是读写文件还是执行 bash 命令——都要经过六级权限验证系统。
验证通过后还没完。还要再走四层决策管道,逐层检查权限边界和执行分析。
所有外部命令和插件都在独立沙箱环境运行。系统用非阻塞缓冲区处理 I/O ,边给用户回复边后台处理——一心多用。
当对话 token 超过阈值时,自动启动上下文压缩。智能保留最关键的推理链条,把废弃的历史记录摘要化。
这套安全机制的设计水平,远超我预期。
但说实话,再好的安全设计也挡不住打包失误。
这不讽刺吗?一个六级安全架构的产品,自己先漏了底裤。
React + Ink :终端渲染的意外选择
最让我意外的是 UI 层的技术选型——说实话,这事儿真挺野的。
传统 CLI 工具会用 inquirer 或原生 curses 做交互。但 Claude Code 用了 React ,配合 Ink 框架。
这是什么意思?
意味着终端里的文字闪烁、进度条更新、历史记录滚动——全都由 React 的 useState 和 useEffect 驱动。终端变成了一个状态驱动的”网页”。
入口文件main.tsx就是个 React 组件树的根节点。interactiveHelpers.tsx劫持 stdin ,拦截用户特殊键位。replLauncher.tsx构建了一个类似 Vim 但更友好的 REPL 。
这种设计的好处是开发效率。你用 React 的思维模型写终端 UI ,而不是去啃 curses 的 API 文档——懂的都懂,那玩意儿多痛苦。
代价是性能开销。但用 Bun 运行时,启动速度比传统 Node.js 快很多。这个权衡看起来是刻意做的。
格局打开了一点。
MCP 协议: Anthropic 的野心所在
源码里最前沿的设计,是对 MCP ( Model Context Protocol )的内建支持。
src/services/mcp/整个目录都是围绕这个协议实现的。
MCP 是什么?简单说是 AI Agent 之间的通信协议标准。让不同 Agent 可以互相调用工具、共享上下文。
Claude Code 主动承担了 MCP Client 的角色。启动时会嗅探本地是否有其他支持 MCP 的服务器进程。这意味着它可以毫不费力地接入第三方工具箱——Figma 、 GitHub Actions 、私有代码库搜索 API 。
这是 Anthropic 真正的野心所在。
他们不只是做一个好用的 CLI 工具。而是想通过 MCP 协议,把 Claude Code 变成 AI Agent 生态的”操作系统”级别的入口。
其他 Agent 都变成它可调用的”应用”。
这种架构思路,跟当年 Windows 垄断 PC 生态的逻辑很像——控制底层入口,上层应用自然围绕你构建。
代码质量:架构优秀,细节参差
架构设计水平很高。但翻到具体实现代码时,画风开始变化。
src/cli/print.ts这个文件里,有一个 3000 多行的函数。 12 层嵌套。圈复杂度爆表。
说实话,看到这个我有点失望——甚至有点生气。
一个六级安全架构的产品,底层实现里有这种技术债。说明团队确实在高速迭代,质量控制有疏漏。这种疏漏很危险。
还有个有趣的细节:负面情绪检测。
不是用 AI 做情感分析。是用正则表达式匹配 ffs 、 shitty 之类的关键词。
这种原始方法反而让我觉得真实。毕竟 AI 模型也会误判,正则虽然粗糙但可控。有时候,糙快猛反而比精致慢靠谱。
影响预判:竞争对手的免费蓝图
事件本身的损害可能有限。有人辩解说核心模型权重没泄露, CLI 只是客户端包装。
但这种辩解让我很不舒服——说实话,有点糊弄人。
产品架构和完整功能路线图已经暴露。竞争对手等于拿到了一份免费的技术蓝图。 Claude Code 怎么实现 Agent 循环、怎么设计安全机制、怎么接入 MCP 协议——都看得清清楚清楚。
这不仅仅是技术泄露。这是把整个产品思路摊开来给别人抄。
对于一家把”AI 安全”写进公司使命的企业来说,运营安全的反复失控传递的信号,比技术漏洞本身更致命。
两周内两次大型泄露: 3 月 26 日的 CMS 配置错误暴露了未发布模型 Claude Mythos ,这次 source map 打包失误暴露了完整源码。
同款错误,犯了两次。
而且发现这次泄露的方式很讽刺——让 Claude Code 自己解读自己的代码。
自己揭自己的底。这画面太讽刺了。
隐藏发现:电子宠物和长期记忆
泄露的源码里还发现了大量未发布的隐藏功能。
最出人意料的是电子宠物系统——代号 Buddy 。一个 Tamagotchi 风格的 ASCII 虚拟宠物,会出现在你的终端。
18 种物种, 6 种稀有度,还有闪光款设定。每个用户的宠物由账户 ID 唯一生成。
时间戳显示这是 4 月 1 日愚人节彩蛋。但完整代码已经写好了。
更值得关注的是代号 Kairos 的长期记忆系统。一个持久化助手模式,让 Claude 拥有跨会话的长期记忆。
当你不使用 Claude Code 时, Kairos 自动执行四阶段记忆整合:定向、收集、整合、修剪。
换句话说, AI 在你睡觉的时候,自动整理你之前的聊天信息,变成结构化笔记。
还有 26 个隐藏的斜杠指令,其中有个引发争议的”卧底模式”——向开源代码提交 PR 时,移除所有 Anthropic 信息,让 AI 伪装成人类。
不过隐藏功能的完整代码大多没泄露。只看到接口定义和部分实现。
结尾:架构启示比泄露本身更有价值
说实话,这次泄露事件的技术价值,可能比它造成的商业损失更大。
51 万行代码里,藏着 Anthropic 对 AI Agent 产品的完整架构思路。六层分离设计、 MCP 协议集成、六级安全机制——这些都是可以直接借鉴的设计模式。
当然不是照抄代码。而是理解他们为什么这么设计,然后在自己的项目里应用这些原则。
如果你是做 AI Agent 或类似工具的,建议花点时间读一下这份源码。
不是为了复制功能。而是学习如何把一个复杂的 AI 系统,拆解成可维护、可扩展的工程架构。
这才是这次意外泄露真正留给开发者的遗产。
推荐阅读
企微、钉钉、飞书72小时相继开源CLI,这场”机器优先”革命才刚刚开始
夜雨聆风