乐于分享
好东西不私藏

Claude泄露的源代码,改变了我对软件工程的理解

Claude泄露的源代码,改变了我对软件工程的理解

字数 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所指出的:"一个配置错误的.npmignorepackage.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