2026 年 3 月 31 日,开发者社区发生了前所未有的一幕。Anthropic 因为 npm 打包失误,把自家最赚钱的产品 Claude Code 的完整源码传到了 npm 上。一个 59.8MB 的 source map 文件泄漏出去,让 512,000 行 TypeScript 代码暴露在全球开发者面前。

消息传开几小时内,GitHub 上出现了 8,100 多个镜像仓库。Anthropic 通过 DMCA 删掉了大部分,但已经来不及了。这相当于一款年营收达 2.5 万亿韩元(ARR 25 亿美元)产品的设计图被公之于众。

3秒速览
npm 打包失误导致 source map 泄漏 51.2 万行 TypeScript 全部公开 确认三层记忆 + 七阶段智能体循环 权限系统、成本优化、隐藏功能一一剖析 成为 AI 智能体设计的教科书

这是什么?

Claude Code 是 Anthropic 的 AI 编程智能体,能在终端里直接读代码、改代码、运行代码。过去大多数人以为它就是一个「包装了 Claude API 的 CLI 工具」。可这次泄漏的源码显示,事情远不止如此。

这是一套 512,000 行、1,900 个文件的精密软件系统。基于 React 的终端渲染器、60 多个权限管理工具、多智能体编排、后台记忆整合引擎,应有尽有。

泄漏是怎么发生的?

Anthropic 把 Claude Code 2.1.88 版本发布到 npm 时,内部调试用的 source map 文件(.map)被打包进去了。估计是 .npmignore 配置遗漏,或者 package.json 中的 files 字段配置错误。Claude Code 负责人 Boris 确认:「这是开发者的失误,不是 Bun 的 bug,也不是黑客攻击。」

有意思的是时间点。事件发生在愚人节前一天,很多人一开始还以为是愚人节玩笑。而且同一天还发生了另一起安全事件 —— axios 的 npm 包被朝鲜关联黑客组织入侵。

有什么不同?

关键在于「只是 API 包装器」这一刻板印象,和真实架构之间的差距。泄漏的代码证明:AI 编程智能体真正的竞争力不在模型,而在「外壳(harness)」。

维度 一般 AI CLI 工具 Claude Code 实际实现
核心循环 while + await model.chat() 七分支点的 async generator 状态机
记忆 保存全部对话或简单截断 三层:索引(MEMORY.md)+ 主题文件 + 原文检索
上下文管理 删除旧消息 五种压缩策略(Snip、Microcompact、Autocompact 等)
工具加载 每次都传送所有工具 schema 通过 ToolSearch 按需动态加载
权限管理 全放行或全拦截 默认拒绝 + 拒绝追踪 + 优雅降级
UI 渲染 基于 console.log React + Ink + Yoga 布局(终端版 React)
成本优化 没有专门策略 追踪 14 种提示词缓存状态,稳定 schema

下面逐条拆解。

1. 智能体循环:七阶段状态机

核心逻辑位于 query.ts,整整 1,729 行。一个叫 queryLoop 的 async generator 函数包裹着 while(true) 循环。

大多数智能体框架的流程是「发送提示词 → 收到响应 → 执行工具 → 重复」,简单直接。而 Claude Code 的 generator 模式会在七个显式的分支点(continue site)交出控制权并保持状态。这种结构让会话暂停、恢复、序列化、错误恢复全都成为可能。

2. 自愈记忆:「会怀疑的记忆」

VentureBeat 把这叫做「context entropy(上下文熵)的解决方案」。

  • MEMORY.md —— 始终加载进上下文的轻量索引,每行只存约 150 字的指针
  • 主题文件 —— 真正承载项目知识的文件,需要时才读取
  • 原文探查 —— 不重读对话记录,只用 grep 搜索特定标识符

最让人印象深刻的是「严格写入纪律(Strict Write Discipline)」。智能体只有在文件真正写入成功后,才会更新索引。这是为了防止失败的尝试污染记忆。而且智能体被明确要求把自己的记忆当成「线索」来对待,行动前必须回到实际代码库中验证。

3. 五种上下文压缩策略

长时间会话里,上下文窗口塞满了怎么办?Claude Code 会根据情况组合使用五种策略:

Snip —— 快速裁剪旧消息。速度优先。

Microcompact —— 专门针对工具输出。把 5,000 行的文件读取结果存到硬盘,只留摘要。

Context Collapse —— 渐进式压缩较旧的对话段。(目前还藏在特性开关后面)

Autocompact —— 到达设定的 token 阈值时,用全对话摘要替换原内容。

Reactive Compact —— API 返回 413(payload 超限)时触发的紧急刹车。

4. 权限系统的「46 行哲学」

每个工具都必须声明 isReadOnlyisDestructive。默认值都是 false —— 也就是默认拒绝(default-deny)

最有意思的是一个叫 denialTracking.ts 的文件,只有 46 行:

3 次
连续拒绝即关闭自动模式
20 次
累计拒绝即每次动作都要确认
46 行
实现这一原则的代码长度

如果用户连续点「不」,系统就会关闭自动模式,改成每一步都征求许可。大多数智能体要么继续重试,要么直接停住。而 Claude Code 用 46 行代码实现了「用户越不舒服,就越小心」这一原则。

5. 隐藏的功能

泄漏代码中还发现了一批未公开的功能,也引发了热议:

  • KAIROS(自主守护进程模式) —— 名字来自希腊语,意为「合适的时机」。用户离开时,一个叫 autoDream 的进程会整理记忆、消除逻辑矛盾、把模糊的观察转化为确定的事实。
  • /buddy(拓麻歌子宠物) —— 住在终端里的 ASCII 宠物。18 种角色、抽卡概率(Legendary 1%)、RPG 属性值(DEBUGGING、PATIENCE、CHAOS、WISDOM、SNARK)。原本是愚人节惊喜,结果提前一天被曝光。
  • Undercover Mode —— Anthropic 向公开开源仓库进行隐形贡献时使用的功能,能抹掉 commit 中的 AI 痕迹。
  • Proactive Mode —— 无需提示词、AI 自主运作的模式。
  • 挫败/愤怒检测 —— 通过关键词模式识别用户的负面情绪,反馈到内部分析中。

6. 防止竞品抄袭:反蒸馏与 DRM

公开的代码里不只是功能被发现。Anthropic 甚至在代码中实现了技术手段来阻止竞品模仿

  • 反蒸馏(Anti-Distillation) —— 在 API 请求中注入假的工具定义,这样如果竞品录制 Claude Code 的流量来训练自己的模型,就会被污染数据喂坏。工具调用之间的推理过程也只以加密签名的摘要形式传输。
  • DRM 级别的客户端认证 —— 在 JavaScript 层之下,Bun 的 Zig 原生 HTTP 栈里,每次 API 请求都会注入哈希。这是为了用密码学方式证明请求确实来自真正的 Claude Code 二进制文件。有意把这个逻辑放到更底层,就是为了让人没法通过给 JS 打补丁来绕过。

7. claw-code:AI 复制 AI

泄漏之后最轰动的项目是 claw-code。韩国开发者 Sigrid Jin 用 OpenAI Codex 把 Claude Code 的架构用 Python 做了一次「洁净室」重实现。他没有直接复制原始代码,而是只参考了结构和模式重新编写。

75,000+
GitHub star(2 小时就达到 50K)
75,000+
GitHub fork 数

这里有个法律上很有意思的点。AI 参考已有代码用另一种语言重实现,成果算不算侵犯版权?传统的「洁净室重实现」过去要两支团队花几个月、花很多钱才能完成。现在 AI 一夜之间就搞定了,而相关的司法判例还没出现。Gergely Orosz(The Pragmatic Engineer)就指出:「就算 Anthropic 起诉,在针对 AI 改写作品的 IP 官司中能不能赢,都还不好说。」

上手指南:从中能学到什么

下面整理一下创业者、开发者、产品经理能从这次泄漏中带走的教训。

  1. AI 产品的护城河不是模型,而是外壳(harness)
    Claude Code 证明的就是这一点。哪怕大家用同一款 Claude 模型,智能体循环、记忆、权限、成本优化怎么设计,才决定产品的质量。如果你在做 AI 产品,应该把投入从「选哪个模型」转向「怎么设计包裹模型的系统」。
  2. 不要低估上下文管理
    就连 Anthropic 也搞出五种策略,其中两种还在实验阶段。在长时间智能体会话里,上下文管理仍是未解决的难题。特别是工具输出(如读文件)吃掉一半上下文窗口这种问题 —— 参考 Microcompact 模式。
  3. 工具超过 20 个?延迟加载(deferred loading)必不可少
    Claude Code、OpenAI Agents SDK、CrewAI 各自独立摸索出同一种模式:每次都发送全部工具 schema 就是在浪费 token。用类似 ToolSearch 这样的元工具,按需动态注入。
  4. 权限系统要设计「优雅退化」
    「用户越不舒服,就越小心」的 46 行原则很有启发。AI 产品里,信任(trust)比功能更重要。追踪反复拒绝的行为,设计从自动到手动的平滑切换 UX。
  5. 也要想想为什么这次泄漏并不致命
    Star History 说得好:「代码快照是照片,不是摄影师。」 真正的护城河是打造它的团队和持续发布的速度。源码公开后,Anthropic 的估值和用户数都没有明显波动,这就是证据。