Claude Code 源码泄露全复盘:51.2 万行代码裸奔,Anthropic 在同一个坑里摔了两次

张开发
2026/4/6 22:47:36 15 分钟阅读

分享文章

Claude Code 源码泄露全复盘:51.2 万行代码裸奔,Anthropic 在同一个坑里摔了两次
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.8inline-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.88cli.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 MapSource 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 包npmpack anthropic-ai/claude-code2.1.88# 解压tar-xzfanthropic-ai-claude-code-2.1.88.tgz# cli.js.map 的 sourcesContent 字段中包含了所有源码# 一行 jq 即可提取catpackage/cli.js.map|jq-r.sources[]2.4 Anthropic 的官方回应“这是由人为错误引起的发布打包问题而非安全漏洞。没有敏感客户数据或凭据被涉及或泄露。我们正在推出措施以防止此类事件再次发生。”翻译一下这不是被黑是我们自己不小心。以AI Safety为招牌的公司在 5 天内连续发生 CMS 数据泄露和源码泄露工程管理的严谨度令人质疑。三、泄露了什么全景解读此次泄露的是 Claude Code v2.1.88 的完整客户端代码规模如下指标数值文件总数~1,906 个代码行数512,000 行编程语言TypeScriptMap 文件大小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利用其更快的启动速度和死代码消除终端 UIReact 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 的内部模型代号映射代号对应模型CapybaraClaude 4.6代码映射/ Mythos 层级名称CMS 泄露FennecOpus 4.6Numbat未发布模型注意关于 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 PromptClaude Code 如何通过System Prompt Tool Use组织工作流模块化提示系统具有感知缓存边界的提示词架构四阶段上下文管理管道2,500 行 bash 安全检查代码输入验证和命令注入防护权限模型和 Hooks 机制MCP 信任边界的完整实现四、代码仓库传播与衍生4.1 原始存档仓库泄露后数小时内代码被上传至多个 GitHub 仓库仓库说明状态openkedge/claude-code-source原始泄露代码存档Fork 41,500Kuberwastaken/claude-code带详细分析的存档社区热门4.2 第一次泄露的存档仓库说明dnakov/claude-codev0.2.8 原始泄露iamdin/Claude-Code-Leak教育研究用途存档4.3 净室重写衍生项目最引人注目的衍生项目是Claw-Code仓库instructkr/claw-code作者韩国开发者 Sigrid Jin方式使用 OpenAI Codex 进行净室重写Clean-Room RewritePython 实现目的规避直接使用泄露代码的法律风险战绩发布 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. 发布前检查包含的文件列表npmpack --dry-run# 2. 确认 .npmignore 排除了调试文件echo*.map.npmignoreecho*.d.ts.map.npmignore# 3. 或者在 package.json 中用 files 白名单{files:[dist/cli.js,dist/index.js]// 只包含必要文件}# 4. CI/CD 中添加自动化检查# 检查打包产物中是否包含 .map 文件npmpack2/dev/null|tar-tz|grep\.map$echoFAIL: map files found!exit16.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 leaksLayer5 - The Claude Code Source Leak: 512,000 LinesCybernews - Full source code for Anthropic’s Claude Code leaksThe Register - Anthropic accidentally exposes Claude Code source code(https://blog.vonng.com/cloud/cc-leak/)*DEV Community - Claude Code’s Entire Source Code Was Just Leaked欢迎关注公众号coft获取更多 AI 前沿技术深度分析与行业洞察。

更多文章