字数 2500,阅读大约需 10 分钟
512,000行代码,1,906个TypeScript文件,44个隐藏功能,一个配置错误的构建文件。

2026年3月31日,一位名为Chaofan Shou的安全研究员在Claude Code的npm包中发现了一些异常。一个调试用的source map文件——这种文件是开发者用来将压缩代码追溯到原始源代码的——在公开发布中被意外打包进去了。这个map文件指向Anthropic自有Cloudflare R2存储桶上的一个zip档案。任何人都可以公开访问,完整无损。
几小时内,整个Claude Code代码库就在GitHub上被镜像了。在Anthropic发出删除通知之前,它已经获得了41,500+次fork。
Anthropic确认了这一事件,称其为"由人为错误导致的发布打包问题,而非安全漏洞"。没有客户数据。没有凭证。只有他们最有价值产品的完整内部架构,免费送给了互联网上所有竞争对手和研究人员。
以下是从代码中实际揭示的内容,以及为什么它不仅仅是公关灾难。
一行配置如何导致这次泄露
技术层面的失败简单得近乎可笑:
# 应该存在于 .npmignore 或 package.json "files" 字段中的内容:*.map ← 这行缺失了# 实际在 @anthropic-ai/claude-code v2.1.88 中发布的内容:claude-code.jsclaude-code.js.map ← 这个文件包含对完整源代码的引用泄露源于npm包中包含的map文件对未混淆的TypeScript源代码的引用。该引用指向托管在Anthropic Cloudflare R2存储上的zip档案,任何人都可以下载。
Source map是调试工具。它们本不应该离开本地机器。发布配置中遗漏的一行就暴露了50万行生产代码。
正如软件工程师Gabriel Anhaia所指出的:"一个配置错误的.npmignore或package.json中的files字段可以暴露一切。"
无人应该看到的架构
代码揭示的不仅是尴尬,更是一个关于如何构建生产级AI智能体的完整工程教育。
┌──────────────────────────────────────────────────┐│ CLAUDE CODE 架构 │└──────────────────────┬───────────────────────────┘ │ ┌─────────────▼──────────────┐ │ Query Engine │ ← LLM API调用 + 编排 └─────────────┬──────────────┘ │ ┌────────────────┼────────────────┐ ▼ ▼ ▼┌──────────┐ ┌────────────┐ ┌───────────────┐│ 工具 │ │ 内存 │ │ 多智能体 ││ 系统 │ │ 层 │ │ 编排 ││(bash/fs) │ │ (autoDream)│ │ (子智能体) │└──────────┘ └────────────┘ └───────────────┘ │ ┌─────────────▼──────────────┐ │ IDE ↔ CLI 通信层 │ ← 双向桥接 └────────────────────────────┘泄露的代码揭示了一个工具系统,用于文件读取和bash执行等能力;一个处理LLM API调用和编排的查询引擎;多智能体编排以生成子智能体处理复杂任务;以及连接IDE扩展到Claude Code CLI的双向通信层。
这不是新奇的AI魔法。这是严谨的软件工程——大多数构建AI产品的团队尚未做到的关注点清晰分离。
他们解决的内存问题
泄露中最有趣的工程细节是Anthropic如何处理上下文熵增——即AI智能体运行很长时间后开始因累积噪声而产生幻觉的退化现象。
代码确认Anthropic的智能体被指示将自身内存视为"提示",要求模型在继续之前对照实际代码库验证事实。
他们称之为autoDream:
KAIROS 守护进程(后台模式)─────────────────────────────────────────────当用户空闲时: 1. 运行 autoDream 进程 2. 合并分散的观察 3. 移除逻辑矛盾 4. 将模糊洞察 → 转换为已验证的事实 5. 将压缩后的内存写回上下文─────────────────────────────────────────────结果:智能体从中断处继续 而不会因过时的上下文产生幻觉KAIROS——以古希腊"恰在其时"的概念命名——代表了一种向自主守护进程模式的转变,允许Claude Code作为一个始终在线的后台智能体运行,在用户空闲时处理会话并执行内存整合。
这里的洞察并非AI特有的。这是标准系统设计:将自身内部状态视为不可信的,直到对照真相源进行验证。
44个隐藏功能,全部构建完成
泄露的源代码包含44个功能标志,对应那些看起来完全构建完成但尚未发布的功能——不是空头软件,而是编译好的代码位于标志后面,这些标志在外部构建中评估为false。
这改变了你阅读AI产品路线图的方式。公司每季度宣布的功能?它们可能早在几个月前就完成了。发布节奏是商业决策,而非工程决策。
有一个标志特别引人注目:
// ANTI_DISTILLATION_CC (claude.ts, 第301-313行)// 启用时:// → 向系统提示注入虚假的工具定义// → 破坏从API流量收集的竞争对手训练数据// → 密码学签名真正的推理摘要// → 竞争对手在Claude输出上训练的模型获得被污染的数据集ANTI_DISTILLATION_CC标志启用时,会在API请求中发送anti_distillation: ['fake_tools'],告诉服务器向系统提示注入诱饵工具定义,旨在破坏竞争对手记录Claude Code API流量来训练自己模型时的训练数据。
这是一个嵌入生产代码中的对抗性功能。AI军备竞赛不再仅仅是模型能力之争。
这给每位工程师的启示
三件事,坦白说:
你的构建管道是安全攻击面。 不仅仅是你的认证层。不仅仅是你的API。你用来发布代码的工具如果配置错误可能会悄悄泄露一切。用你审计访问控制同样的严谨态度审计你的.npmignore、你的package.json中的files字段,以及你的CI发布步骤。
怀疑式内存是一种真正的架构模式。 任何随时间累积状态的系统——AI智能体或其他——都需要一个协调步骤。autoDream是缓存失效的正式版本。不要信任你智能体的内部状态。对照基准真相进行验证。
功能标志是产品策略,不仅仅是工程便利。 Claude Code至少部分能力并非来自底层大语言模型,而是来自围绕它构建的软件框架——那个指导智能体如何使用工具并提供护栏的智能体层。那个框架泄露了。它也是让Claude Code价值25亿美元年收入的原因。构建那个框架,而不仅仅是模型集成。
真正的教训
Anthropic构建了占主导地位的AI编码工具,不是靠拥有最好的模型——现在每个主要实验室都有具有竞争力的模型。他们靠的是严谨的系统工程:清晰的工具抽象、怀疑式内存、自主后台执行,以及针对竞争对手的对抗性防御。
这次泄露给每个竞争对手提供了关于如何构建生产级AI编码智能体的免费工程教育,以及应该关注什么工具。
讽刺的是,Anthropic的错误可能会加速整个行业。每个fork了那个仓库的人现在都知道门槛是什么样的了。
一个配置错误的构建文件。50万行来之不易的工程知识。免费向世界发布。
检查你的.npmignore。
夜雨聆风