引言
2026 年 3 月 31 日,AI 行业发生了一件堪称"黑色幽默"的事件——以"AI 安全"为核心标签的 Anthropic,因为一个低级的打包失误,将自己最核心的产品 Claude Code 的全部源码,意外推送到了全球最大的开源包管理平台 npm 上。
51.2 万行代码、4756 个源文件、40 余个工具模块——全部暴露在公众视野中。
更令人震惊的是,代码中包含了大量未发布功能的实现细节:一个名为 KAIROS 的自主 Agent 模式、一套让 AI 隐匿身份的"卧底模式"、完整的系统提示词架构,以及 Anthropic 内部的模型代号体系。
这不是一次黑客攻击,而是一次纯粹的人为失误。但它的后果,却远比大多数安全漏洞更加深远。
一、事件经过:一个低级失误引发的连锁反应
1.1 根本原因
Claude Code v2.1.88 在发布到 npm 时,构建配置中意外包含了一个约 59.8MB 的 cli.js.map(Source Map 源码映射文件)。
Source Map 是一种开发调试工具,它将编译后的代码映射回原始源码。而这个文件的 sourcesContent 字段,直接包含了所有原始 TypeScript 源文件的完整内容。任何人只需简单的解压操作,就能还原全部源码。
具体原因包括:
- Claude Code 基于 Bun 运行时构建(Anthropic 于 2025 年底收购了 Bun),而 Bun 打包器默认会生成 Source Map
.npmignore中未添加*.map排除规则- 一个本应自动化的部署步骤以手动方式完成,操作人员失误
讽刺的是,这已经是 Anthropic 第二次犯完全相同的错误——2025 年 2 月,Claude Code v0.2.8 就曾因 inline-source-map 泄露过源码。
1.2 时间线
| 时间 | 事件 |
|---|---|
| 2025-02-24 | 第一次泄露:Claude Code v0.2.8,1800 万字符 base64 编码源码暴露 |
| 2025-02-25 | Anthropic 紧急删除 npm 包,v0.2.9 修正 |
| 2026-03-26 | CMS 配置失误,约 3000 个未发布资产被公开访问 |
| 2026-03-31 | 第二次泄露:v2.1.88 包含 59.8MB Source Map |
| 2026-03-31 凌晨 | 安全研究员 Chaofan Shou 率先公开发现,推文获 3400 万浏览 |
| 2026-03-31 数小时内 | 代码被上传至 GitHub,Fork 数超过 41,500+ |
| 2026-03-31 | Anthropic 紧急撤回 npm 包,向 GitHub 提交 DMCA 下架请求 |
| 2026-04-01 | DMCA 波及 8100+ 仓库(含大量无关仓库),引发误伤争议 |
| 2026-04-01 | 韩国开发者用 AI 净室重写为 Python 版 Claw-Code,2 小时获 5 万 Star |
| 2026-04-01 | Claude Code 负责人 Boris Cherny 公开回应,承认"人为错误" |
二、泄露了什么:51万行代码的核心构成
2.1 总体规模
| 指标 | 数值 |
|---|---|
| 源文件数 | 约 1,906 个 TypeScript 文件 |
| 代码行数 | 512,000+ 行 |
| 功能标志 | 44 个(其中 20+ 个未发布) |
| 工具模块 | 约 40 个 |
| Slash 命令 | 约 50 个 |
2.2 核心模块一览
泄露的代码库揭示了一个远比公众认知更复杂的系统:
- QueryEngine(查询引擎):代码库中最大的模块,约 46,000 行代码,负责理解用户意图并规划执行路径
- Tools(工具集):约 29,000 行代码,包含 40 个工具的实现——从文件读写、Shell 执行到 Git 工作流管理
- Coordinator(多 Agent 协调器):Agent Teams 的核心编排模块
- Memory(记忆系统):三层存储架构,实现跨会话的持久化记忆
- Security(安全检查):2,500 行 Bash 安全校验代码
- System Prompt(系统提示词):完整的动态拼装逻辑
2.3 技术选型
值得注意的是,Claude Code 的技术栈相当"非主流":
- 运行时:Bun(而非 Node.js),利用更快的启动速度和死代码消除
- 终端 UI:React + Ink——没错,终端界面也是用 React 组件化渲染的
- 数据验证:Zod v4 全面接管 Schema 校验
- 多 Agent 编排:通过 Prompt 而非框架实现
社区对此评价道:"这让 LangChain 看起来像是在寻找问题的解决方案。"
三、最重磅的发现:KAIROS 自主模式
在所有泄露内容中,被引用超过 150 次的 feature flag KAIROS,无疑是最大的惊喜。
3.1 从 Copilot 到 Autopilot
当前的 Claude Code 本质上是一个"你说一步它做一步"的交互模式——用户发出指令,AI 执行并等待下一步指示。
KAIROS 则完全不同。它让 Claude 作为持久后台 Agent 自主运行,通过"心跳机制"定期检查是否需要主动行动,像一个真正的 AI 同事一样 7×24 小时在线。
3.2 工作机制
KAIROS 的运行流程可以概括为:
- 心跳检测:接收定期的 tick 提示,自主判断是否需要行动
- 日志记录:维护只追加的每日日志文件,记录观察、决策和操作
- 执行限制:单次操作不超过 15 秒阻塞预算,避免打断用户工作流
- 深度思考:autoDream 子 Agent 在用户空闲时运行,合并观察、消除矛盾
- 云端规划:ULTRAPLAN 功能将复杂规划卸载到云端,使用 Opus 4.6 模型,享有 30 分钟专用思考时间
此外,KAIROS 还拥有三个普通模式没有的专属工具:SendUserFile(推送文件)、PushNotification(发送通知)和 SubscribePR(订阅 PR 动态)。
KAIROS 揭示了 Anthropic 的终极目标:真正自主的 AI Agent,能主动思考、持续运行,而不仅仅是被动等待指令。
四、最具争议的发现:"卧底模式"
如果说 KAIROS 展示了 Anthropic 的野心,那么"卧底模式"(Undercover Mode)则暴露了其尴尬。
4.1 功能描述
当 Anthropic 内部员工使用 Claude Code 向外部仓库提交代码时,系统会自动激活"卧底模式":
- 注入系统提示,指示 Claude 永远不要提及它是 AI
- 提交代码时剥离所有 "Co-Authored-By" 署名
- 禁止在 commit message 和 PR 描述中出现任何暴露 AI 辅助编程的痕迹
- 禁止提及内部模型代号、未发布版本号和内部项目名称
代码注释原文:"如果我们不确定是不是在内部仓库里,就保持 undercover。"
4.2 争议
这一功能在 AI 伦理和开源透明度方面引发了巨大争议。Anthropic 员工使用 AI 工具给外部开源项目贡献代码,却系统性地隐藏 AI 参与的痕迹——这被认为违背了开源社区对透明度的基本期望。
更深层的问题在于:一家以"AI 安全"和"负责任 AI"为品牌核心的公司,其内部工具却在主动帮助员工隐瞒 AI 的使用。这种言行之间的张力,成为了社区讨论的焦点。
五、其他重要发现
5.1 完整的系统提示词架构
Claude Code 的系统提示词并非一段固定文本,而是由函数动态拼装的:
- 静态部分:全用户共享,可以缓存以节省成本
- 动态部分:根据用户配置、操作系统、MCP 服务器、Git 状态等实时组装
- 中间有明确的分界线,一刀切开缓存和个性化内容
5.2 Auto 模式的双 AI 架构
Claude Code 的"自动模式"背后隐藏着一个精巧的设计:每次主 AI 想执行操作时,会有一个独立的 Claude Sonnet 分类器来判断安全性,分三档决策:放行、需确认、直接拦截。连续被拒 3 次或累计被拒 20 次,系统会自动降级为手动模式。
5.3 反蒸馏机制
泄露代码中还发现了 Anthropic 的反蒸馏(Anti-Distillation)策略:
- 向 API 请求注入伪造的工具定义,毒化竞争对手的训练数据
- 对工具调用之间的推理过程进行摘要和加密签名
- 确保窃听者只能捕获摘要,无法获得完整的思维链输出
5.4 内部模型代号
| 代号 | 对应模型 |
|---|---|
| Tengu(天狗) | Claude Code 内部项目代号 |
| Capybara | Claude 4.6 变体 |
| Fennec(耳廓狐) | Opus 4.6 |
| Penguin Mode | Fast Mode 的内部名称 |
| Chicago | Computer Use 的内部代号 |
值得注意的是,内部基准数据显示 Capybara 已迭代到 v8,但虚假声明率从 v4 的 16.7% 上升到了 v8 的 29-30%——这意味着模型在某些维度上出现了退步。
六、行业反应
6.1 开发者社区的疯狂扩散
泄露后数小时内,GitHub 上的相关仓库突破了 11,300 Star 和 17,300 Fork,Fork 数甚至一度超过 Star 数——绝大多数人连点赞都顾不上,先 fork 存一份再说。
韩国开发者 Sigrid Jin 凌晨 4 点被消息炸醒后,连夜用 AI 辅助将 TypeScript 代码库净室重写为 Python 版和 Rust 版,规避版权风险。Python 版 Claw-Code 在 2 小时内获得 50,000 Star,创下 GitHub 历史纪录。
6.2 安全研究机构的警告
智能代理安全公司 Straiker 梳理出 3 条因代码公开而从"理论可行"变为"落地可执行"的攻击组合:
- 上下文投毒:恶意 CLAUDE.md 指令可躲过压缩,被模型视为合法用户指令
- 沙箱绕过:bash 命令由三个独立解析器处理,存在边缘行为差异可被利用
- 组合攻击:上下文投毒 + 沙箱绕过,完全反转防御假设
网络安全机构 Zscaler 的报告显示,黑客组织已开始在 GitHub 上发布伪装成"Claude Code 源码分析"的恶意仓库,利用开发者的好奇心进行攻击。
6.3 Anthropic 的回应
Anthropic 官方声明称:"没有敏感客户数据或凭据被涉及或泄露。这是由人为错误引起的发布打包问题,而非安全漏洞。"
Claude Code 负责人 Boris Cherny 承认"这是人为错误",解释称"我们的部署流程包含几个手动步骤,其中一个步骤我们操作有误",并强调"没有人因此被解雇"。
然而,Anthropic 随后向 GitHub 提交的 DMCA 下架请求波及了超过 8100 个仓库,大量与泄露无关的合法代码仓库被误删,引发了更广泛的批评。Anthropic 被迫撤回大部分下架请求并承认做法欠妥。
七、深层反思
7.1 代码本身越来越不值钱
在 AI 时代,Claude Code 这样的工具可以帮你快速重写甚至从零搭建一个系统。泄露后短短 2 小时,Python 版本的替代品就诞生了。真正值钱的不是代码本身,而是对业务的理解、对用户需求的判断、以及系统设计能力。
正如社区所言:"代码可以被看见,但做出这些决策的团队能力和迭代速度,抄不走。"
7.2 安全不仅仅是模型对齐
Anthropic 的故事揭示了一个常被忽视的事实:再先进的 AI 能力,也需要扎实的工程基本功来守护。安全不仅仅是模型 Alignment,还包括你的 .npmignore 有没有写对。
一家以"AI Safety"为招牌的公司,5 天内连续发生 CMS 数据泄露和源码泄露,且 13 个月内两次犯完全相同的错误——这无疑是对整个行业的一记警钟。
7.3 闭源的脆弱性
Claude Code 通过 npm 分发,而 npm 的每个包本质上就是一个 .tgz 压缩包,任何人都可以解压检查。即使没有 Source Map,混淆后的 JavaScript 也可以利用 LLM 辅助逆向还原。有安全研究者在此次泄露之前,就已经逆向工程了 12 个版本的 Claude Code。
在 AI 时代,闭源软件的"保护壳"正在变得越来越脆弱。
结语
Claude Code 源码泄露事件,表面上是一个 npm 打包失误的技术事故,但深层折射出的,是 AI 行业在快速发展中面临的几个根本性矛盾:创新速度与工程严谨性的矛盾、闭源保护与开源透明的矛盾、AI 能力与安全治理的矛盾。
对于 Anthropic 而言,核心竞争力——Claude 模型本身——并未因此动摇。但其战略意图、产品路线图和内部决策逻辑,已全部暴露在阳光下。
对于整个行业而言,这次泄露是一次免费的"顶级 AI 工程课"——51 万行来自全球顶尖 AI 公司的生产级代码,正在加速 AI Agent 工具开源替代品的涌现。
而对于我们每一个关注 AI 发展的人来说,这次事件提醒我们:在 AI 时代,最重要的安全防线,可能不在模型里,而在那些最基础的工程细节中。
本文信息来源于公开报道及社区分析,包括 CSDN、36 氪、Ars Technica、VentureBeat 等媒体。
