Claude Code 源码泄露,51.2 万行代码裸奔,Anthropic 同一坑跌倒两次?

摘要:Claude Code 源码泄露全复盘:51.2 万行代码裸奔,Anthropic 在同一个坑里摔了两次 2026 年 3 月 31 日,Anthropic 旗下的明星 AI 编程工具 Claude Code,因一个极其低级的构建配置失误,
Claude Code 源码泄露全复盘:51.2 万行代码裸奔,Anthropic 在同一个坑里摔了两次 2026 年 3 月 31 日,Anthropic 旗下的明星 AI 编程工具 Claude Code,因一个极其低级的构建配置失误,完整源代码意外全网泄露。1900+ 文件、512,000+ 行 TypeScript 代码、44 个功能标志、20+ 个未发布特性——全部公之于众。更尴尬的是,这已经是 13 个月内第二次犯完全相同的错误。 一、事件时间线 2025-02-24 第一次泄露 Claude Code v0.2.8,inline-source-map 暴露源码 2025-02-25 紧急修复 Anthropic 删除 0.2.8 之前的 npm 包,0.2.9 修正问题 2026-03-26 CMS 泄露 Anthropic CMS 配置失误,泄露未发布的 Mythos 模型草稿 2026-03-31 第二次泄露 Claude Code v2.1.88,cli.js.map 包含完整源码 2026-03-31 安全研究员 Chaofan Shou 在 X 平台首先公开此事 2026-03-31 代码被归档至公共 GitHub 仓库,数小时内被 Fork 41,500+ 次 2026-03-31 Anthropic 紧急撤包,版本回退至 v2.1.87 2026-04-01 韩国开发者 Sigrid Jin 用 OpenAI Codex 净室重写 Python 版 claw-code 发布 2 小时获 50,000 star,成为 GitHub 历史上增长最快的仓库 二、泄露原因:一个 .map 文件引发的血案 2.1 什么是 Source Map? Source Map 是前端开发中的调试利器。当 TypeScript/JavaScript 代码经过编译、压缩、混淆后,Source Map 文件能把它"还原"回原始源码,方便开发者在浏览器或 Node.js 中调试。 一个典型的 .map 文件结构如下: { "version": 3, "sources": ["../src/index.ts", "../src/utils.ts", ...], "sourcesContent": ["// 这里是完整的原始源码...", ...], "mappings": "AAAA,SAAS..." } 关键字段是 sourcesContent——它直接包含了所有原始源文件的完整内容。换句话说,只要拿到 .map 文件,就等于拿到了全部源码。 2.2 第一次泄露(2025 年 2 月) Claude Code 随 Claude 3.7 一起发布,以 npm 包形式分发。在 v0.2.8 及之前版本中: 使用了开发环境配置打生产包 生成的 .mjs 文件高达 22MB(正常应该几百 KB) 文件巨大的原因:包含了 inline-source-map 混淆形同虚设,一行命令即可反解出全部源码 Anthropic 反应迅速——光速删除了 0.2.8 之前的包,在 0.2.9 中修正。但 GitHub 上已经有人存档了完整代码(如 dnakov/claude-code)。 2.3 第二次泄露(2026 年 3 月) 版本从 0.2.x 演进到 2.1.88,代码量膨胀了近 10 倍,但同样的错误再次发生: 根本原因:npm 包中误留了 cli.js.map 文件(59.8 MB) 具体而言: 1. Claude Code 基于 Bun 构建(Anthropic 于 2025 年底收购了 Bun) 2. Bun 默认生成 Source Map 3. .npmignore 中未添加 *.map 排除规则 4. package.json 的 files 字段也未正确配置 5. 可能存在 Bun bug (#28001):即使生产模式也生成 Source Map 提取方式极其简单: # 下载 npm 包 npm pack @anthropic-ai/claude-code@2.1.88 # 解压 tar -xzf anthropic-ai-claude-code-2.1.88.tgz # cli.js.map 的 sourcesContent 字段中包含了所有源码 # 一行 jq 即可提取 cat package/cli.js.map | jq -r '.sources[]' 2.4 Anthropic 的官方回应 "这是由人为错误引起的发布打包问题,而非安全漏洞。没有敏感客户数据或凭据被涉及或泄露。我们正在推出措施以防止此类事件再次发生。" 翻译一下:这不是被黑,是我们自己不小心。 以"AI Safety"为招牌的公司,在 5 天内连续发生 CMS 数据泄露和源码泄露,工程管理的严谨度令人质疑。 三、泄露了什么?全景解读 此次泄露的是 Claude Code v2.1.88 的完整客户端代码,规模如下: 指标 数值 文件总数 ~1,906 个 代码行数 512,000+ 行 编程语言 TypeScript Map 文件大小 59.8 MB 功能标志 44 个 未发布特性 20+ 个 工具数量 ~40 个 Slash 命令 ~50 个 3.1 核心架构 泄露代码展示了 Claude Code 远不是一个简单的"LLM 聊天包装器",而是一个生产级的 Agent 平台: claude-code/ ├── coordinator/ # 多 Agent 协调编排(Agent Teams 核心) ├── assistant/ # 内部代号 KAIROS 的自主模式 ├── voice/ # 语音交互完整实现 ├── plugins/ # 插件系统 ├── skills/ # 技能按需加载系统 ├── buddy/ # 终端电子宠物(彩蛋) ├── query-engine/ # 查询引擎(46,000 行代码,代码库最大模块) ├── tools/ # 40 个工具的实现(~29,000 行) ├── ide-bridge/ # IDE 桥接层(VS Code, JetBrains) ├── memory/ # 持久化记忆系统 ├── security/ # 安全检查(2,500 行 bash 安全校验) └── system-prompt/ # 完整的系统提示词 技术选型亮点: 运行时:Bun(非 Node.js),利用其更快的启动速度和死代码消除 终端 UI:React + Ink(是的,终端 UI 也用 React 组件化渲染) 数据验证:Zod v4 全面接管 Schema 校验 多 Agent 编排:通过 Prompt 而非框架实现(社区评论:"这让 LangChain 看起来像是在寻找问题的解决方案") 3.2 八大隐藏功能深度解读 功能一:KAIROS——自主守护进程模式 代码中被引用超过 150 次 的 KAIROS,是 Claude Code 最重磅的未发布功能: KAIROS 模式: ┌─────────────────────────────────────────┐ │ Claude 作为持久后台 Agent 运行 │ │ ↓ │ │ 接收定期 <tick> 提示 │ │ ↓ │ │ 自主决策:是否需要主动行动 │ │ ↓ │ │ autoDream 子 Agent: │ │ - 用户空闲时运行 │ │ - 合并观察、消除矛盾 │ │ - 将模糊见解转化为事实 │ │ ↓ │ │ ULTRAPLAN: │ │ - 复杂规划卸载到云端 │ │ - 使用 Opus 4.6 模型 │ │ - 30 分钟专用思考时间 │ └─────────────────────────────────────────┘ 如果说当前的 Claude Code 是"你说一步它做一步",那 KAIROS 就是"它自己想着做,你审批就行"——从 Copilot 到 Autopilot 的范式跃迁。 功能二:Undercover Mode(卧底模式)⚠️ 这是最具争议的发现。在 undercover.ts(约 90 行代码)中: 注入系统提示,指示 Claude 永远不要提及它是 AI 向外部仓库提交代码时,剥离所有 "Co-Authored-By" 署名 禁止提及内部模型代号(Capybara/Fennec 等)、未发布版本、内部基础设施 触发条件:通过 USER_TYPE === 'ant' 识别 Anthropic 内部员工,当检测到远程仓库不在内部白名单时自动激活 没有"强制关闭"开关——除非系统 100% 确定在内部仓库,否则默认保持卧底状态 解读:Anthropic 员工在使用 Claude Code 给外部开源项目贡献代码时,会自动隐藏 AI 参与的痕迹。这在 AI 伦理和开源透明度方面引发了巨大争议。 功能三:Anti-Distillation(反蒸馏机制) 为了防止竞争对手通过 API 流量进行模型蒸馏: // ANTI_DISTILLATION_CC 标志启用后: // 1. 向 API 请求注入伪造的工具定义(毒化竞争对手的训练数据) // 2. 对工具调用之间的助手推理进行摘要和加密签名 // → 窃听者只能捕获摘要,无法获得完整的思维链输出 社区反应:这些机制"很容易通过代理剥离字段或使用第三方 API 提供商来绕过"。 功能四:内部模型代号与基准数据 泄露代码中包含了 Anthropic 的内部模型代号映射: 代号 对应模型 Capybara Claude 4.6(代码映射)/ Mythos 层级名称(CMS 泄露) Fennec Opus 4.6 Numbat 未发布模型 注意:关于 Capybara 的指代存在歧义。在 Claude Code 的代码映射中,Capybara 被映射到 Claude 4.6;但在 3 月 26 日 CMS 泄露的内部文档中,Capybara 被定义为位于 Opus 之上的新模型层级(即 Mythos 所属层级),性能远超 Claude Opus 4.6。两者可能反映了不同阶段的内部命名演变。 更劲爆的是内部基准数据:Capybara v8 的虚假声明率为 29-30%(较 v4 的 16.7% 有所倒退)。这意味着 Anthropic 自己的测试显示,模型在某些维度上出现了退步。 功能五:多 Agent 协调(coordinator/) coordinator/ 目录实现了 Agent Teams 功能的核心: 多个 Agent 拥有独立的上下文窗口和工具权限 支持并行工作且互不冲突 通过 Prompt 编排而非框架耦合 每个 Agent 在自己的沙箱中运行 功能六:语音交互(voice/) Claude Code 语音模式的完整实现此前一直处于黑箱状态,此次全部暴露。 功能七:插件与技能系统(plugins/ + skills/) 技能系统工作流: 用户输入 → 意图识别 → 技能匹配 → 按需加载领域知识 → 注入上下文 → 执行 这是一个完整的可扩展性架构,展示了技能系统如何动态加载领域专业知识。 功能八:Buddy——终端电子宠物 🐾 最后一个彩蛋:一个拥有完整设计的终端宠物系统: 18 个物种,稀有度从普通(60%)到传说(1%) 光泽变体(类似宝可梦的闪光) 属性系统:DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK 原计划作为 4 月 1 日愚人节彩蛋发布 谁能想到,一次源码泄露还顺带剧透了愚人节惊喜。 3.3 System Prompt 与安全机制 泄露代码还包含了: 完整的 System Prompt:Claude Code 如何通过"System Prompt + Tool Use"组织工作流 模块化提示系统:具有感知缓存边界的提示词架构 四阶段上下文管理管道 2,500 行 bash 安全检查代码:输入验证和命令注入防护 权限模型和 Hooks 机制 MCP 信任边界的完整实现 四、代码仓库:传播与衍生 4.1 原始存档仓库 泄露后数小时内,代码被上传至多个 GitHub 仓库: 仓库 说明 状态 openkedge/claude-code-source 原始泄露代码存档 Fork 41,500+ Kuberwastaken/claude-code 带详细分析的存档 社区热门 4.2 第一次泄露的存档 仓库 说明 dnakov/claude-code v0.2.8 原始泄露 iamdin/Claude-Code-Leak 教育研究用途存档 4.3 净室重写衍生项目 最引人注目的衍生项目是 Claw-Code: 仓库:instructkr/claw-code 作者:韩国开发者 Sigrid Jin 方式:使用 OpenAI Codex 进行"净室重写"(Clean-Room Rewrite),Python 实现 目的:规避直接使用泄露代码的法律风险 战绩:发布 2 小时获 50,000 star,被认为是 GitHub 历史上增长最快的仓库 这种 AI 驱动的"净室重写"构成了一个法律难题:如果 Anthropic 声称这种转换性作品侵犯了版权,可能会削弱其在训练数据版权案件中的辩护立场。 五、影响分析:谁赢谁输? 5.1 对行业:免费的 SOTA 技术培训 "第一次泄露教大家'该怎么做',第二次泄露展示'现在进化到了什么程度'。" 2025 年第一次泄露直接催化了 Coding Agent 赛道的爆发。这一次,开源社区将迅速消化: 多 Agent 编排的生产级实现方案 插件/技能系统的可扩展架构 语音交互的完整实践 KAIROS 自主模式的设计理念 预计很快会有大量类似的编码助手涌现——而且是站在 Anthropic 的肩膀上。 5.2 对 Anthropic:尴尬但不致命 核心竞争力未动摇:Claude Code 的护城河是底层的 Claude 模型能力,而非客户端代码。代码可以重构,模型能力无法复制。 但路线图无法收回:泄露的 44 个功能标志暴露了完整的产品路线图、内部基准数据、以及像 Undercover Mode 这样的争议性策略决策。代码可以改写,战略意图却已昭告天下。 安全声誉受损: 2026 年 3 月 Anthropic 安全事故清单: ├── 3/26 CMS 配置失误 → 泄露未发布 Mythos 模型草稿 ├── 3/31 npm Source Map → 泄露 Claude Code 完整源码 └── ???? 一家以 "AI Safety" 为招牌的公司,连基本的发布安全都做不好? 5.3 对安全研究:白盒审计的机遇 源码公开意味着更多开发者可以审计: 权限控制模型是否健全 Hooks 机制是否存在绕过 MCP 信任边界是否可靠 bash 命令注入防护是否完备 这可能反而有助于更快发现和修复安全漏洞。 5.4 额外风险:供应链攻击 巧合的是,泄露发生期间,npm 上的 axios 包也遭到了供应链攻击(包含远程访问木马)。这意味着在这个时间窗口内下载安装 Claude Code 的用户,可能面临额外的安全风险。 六、技术教训:给每个 npm 包发布者的警示 6.1 Source Map 即源码 永远不要在生产包中包含 Source Map。 这不是"最佳实践",这是底线。 6.2 发布前审计清单 # 1. 发布前检查包含的文件列表 npm pack --dry-run # 2. 确认 .npmignore 排除了调试文件 echo "*.map" >> .npmignore echo "*.d.ts.map" >> .npmignore # 3. 或者在 package.json 中用 files 白名单 { "files": ["dist/cli.js", "dist/index.js"] // 只包含必要文件 } # 4. CI/CD 中添加自动化检查 # 检查打包产物中是否包含 .map 文件 npm pack 2>/dev/null | tar -tz | grep '\.map$' && echo "FAIL: map files found!" && exit 1 6.3 构建工具配置 如果使用 Bun: # bunfig.toml [build] sourcemap = "none" # 生产环境禁用 如果使用 esbuild/webpack/rollup,确保生产配置中 sourcemap: false。 6.4 Defense in Depth 发布安全多层防护: Layer 1: 构建配置禁用 Source Map Layer 2: .npmignore / files 白名单 Layer 3: CI/CD 自动化检查 Layer 4: 发布前人工审核(npm pack --dry-run) Layer 5: 发布后自动扫描(定期检查已发布包的内容) 七、反思:闭源 vs 开源的悖论 Claude Code 通过 npm 分发,这本身就意味着选择了一个天然透明的生态系统。npm 的每个包都是一个 .tgz 压缩包,任何人都可以 npm pack 然后解压检查。 这种分发方式和"闭源保护"之间存在天然矛盾: 即使没有 Source Map,混淆后的 JavaScript 也可以利用 LLM 辅助逆向还原 社区已有项目演示如何用 Claude 自己反编译自己的代码 有安全研究者在泄露前就已经逆向工程了 12 个版本的 Claude Code 真正的护城河不是代码保密,而是持续的模型能力迭代和工程执行力。 Anthropic 似乎也意识到了这一点——他们在声明中强调"这不影响核心模型安全"。 八、总结 维度 要点 泄露原因 npm 包中误留 Source Map 文件(.map),构建配置失误 泄露规模 1,900+ 文件,512,000+ 行 TypeScript 重复犯错 13 个月内第二次完全相同的错误 发现者 安全研究员 Chaofan Shou 最大看点 KAIROS 自主模式、Undercover Mode、反蒸馏机制、内部模型代号 核心影响 产品路线图暴露 > 代码泄露本身 行业效应 加速 AI Agent 工具的开源平替涌现 安全教训 Source Map = 源码,发布流程需要多层防护 写在最后:一家以 AI 安全为使命的公司,因为最基础的 DevOps 配置失误,在同一个坑里摔了两次。这个故事告诉我们:再先进的 AI 能力,也需要扎实的工程基本功来守护。 安全不仅仅是模型对齐(Alignment),还包括你的 .npmignore 有没有写对。 参考来源: Ars Technica - Entire Claude Code CLI source code leaks Layer5 - The Claude Code Source Leak: 512,000 Lines Cybernews - Full source code for Anthropic's Claude Code leaks The Register - Anthropic accidentally exposes Claude Code source code 老冯云数 - Claude Code 又双叒叕开源了 DEV Community - Claude Code's Entire Source Code Was Just Leaked 欢迎关注公众号 coft,获取更多 AI 前沿技术深度分析与行业洞察。