Claude Code 源码泄露事件深度剖析
摘要(147字): 2026年3月,Claude Code因npm包中意外包含.map文件导致512,000行TypeScript源码泄露。该文件完整映射了1906个源文件,暴露了其四层架构体系:用户层(CLI/IDE插件)、46,000行的核心编排层、40+工具的门控系统,以及创新的"autoDream"记忆整理引擎。泄露内容显示该系统采用动态拼装的110+条system p
Claude Code 源码泄露事件深度剖析

作者:吴佳浩
撰稿时间:2026-3-31
最后更新:2026-4-1
一行
.map文件,让价值数百亿美元的 AI 编程工具"裸奔"了。
📌 事件速览
2026年3月31日,安全研究员 Chaofan Shou 在 X 上发了一条简短的帖子:
“Claude code source code has been leaked via a map file in their npm registry!”
翻译成人话:Claude Code 的源代码,因为一个 .map 文件,彻底泄露了。
没有黑客攻击,没有内鬼,没有高级漏洞利用——
就因为发 npm 包的时候,忘了把 source map 文件删掉。
1️⃣ 发生了什么
Source Map 是什么?(前端同学一带而过,后端和AI同学可以看看)
先科普一下,Source Map(.map 文件)是现代前端工程里的标配工具。
正常发布流程是这样的:
Source Map 的核心就是一个 JSON 文件,里面有两个关键数组:
| 字段 | 作用 |
|---|---|
sources |
原始文件路径列表 |
sourcesContent |
对应的完整源代码 |
只要有这个文件,任何人不需要反编译、不需要逆向,直接打开就是原始 TypeScript 代码。
Source Map 只能在开发调试环境使用,绝对不应该出现在生产发布包里。
Anthropic 这次不仅带了这个文件,还带了 sourcesContent——等于把源码和钥匙一起塞进了快递包裹。
具体有多严重?
| 数据项 | 数值 |
|---|---|
| npm 包版本 | v2.1.88 |
| 包体积暴涨 | 17MB → 31MB(多了14MB) |
.map 文件大小 |
57MB |
| 泄露源文件数 | 1906 个 |
| 代码总量 | 512,000 行 TypeScript |
| 工具数量 | ~40 个内置工具 |
| Slash 命令 | ~50 个 |
| 暴露内容 | 工具逻辑 + 权限系统 + 未发布功能 |
Anthropic 事后立刻删除了这个文件,但 npm 包一旦发布就收不回来了——源码已经在社区疯狂流传。
更讽刺的是:这不是第一次。
早在2025年2月,Claude Code 刚上线 npm 时就因为同样的原因泄露过一回,后来修掉了。一年后,最新版 v2.1.88 又把 source map 打进去了。
2️⃣ 泄露了什么——Claude Code 内部架构全览
整体架构:四层体系
Claude Code 不是一个简单的"聊天包装器",它是一个完整的工程级 AI Agent 系统。
从外到内,一层层来看:
第一层:用户层——三种入口
- 终端 CLI:核心入口,用 React + Ink 渲染(是的,命令行界面用 React 写的)
- IDE 插件:通过 Bridge 层和 CLI 双向通信
- 浏览器 UI:为 ULTRAPLAN 预留的远程规划界面
第二层:编排层——46,000 行的大心脏
Query Engine 是整个 Claude Code 最大最核心的模块,占了约 46,000 行代码。
它负责所有 LLM API 调用、流式响应、缓存和上下文编排。
开启 Coordinator Mode 后,还能变成多 Agent 调度中心,同时管理多个并行的 worker agent。
第三层:工具层——40+ 工具有权限门控
Claude Code 的工具系统不是随手拼的,每个工具都通过 getAllBaseTools() 注册,按 feature gate、用户类型、环境变量过滤后才暴露给模型。
有个值得注意的细节:工具有 schema 缓存机制(toolSchemaCache),避免每次都重新序列化 JSON schema 给模型——这是不错的小优化。
第四层:记忆系统——AI 真的在"做梦"
Claude Code 源码里有一个叫 autoDream 的后台记忆整理引擎。Anthropic 的工程师给它起了个浪漫的名字——Dream。
系统 prompt 原文:
“You are performing a dream - a reflective pass over your memory files. Synthesize what you’ve learned recently into durable, well-organized memories so that future sessions can orient quickly.”
翻译:AI 在做梦,把最近学到的东西整理成持久化的记忆。
Dream 的触发条件极其严格,有三重门控:
- Phase 1 Orient:扫描 memory 目录,读取 MEMORY.md,浏览现有主题文件
- Phase 2 Gather:采集新信号,优先级:每日日志 → 漂移的记忆 → 对话记录搜索
- Phase 3 Consolidate:写入或更新记忆文件,把相对日期转成绝对日期
- Phase 4 Prune:MEMORY.md 必须控制在 200 行以内,不超过 25KB
Dream 子 agent 只有只读 bash 权限,它能看项目但不能改任何东西——纯粹的记忆整理。
3️⃣ System Prompt:110+ 碎片动态拼装
大多数 AI 应用的 system prompt 是一个写死的字符串。Claude Code 不是。
五种内容注入机制:
| 机制 | 注入位置 | 触发方式 | 作用域 |
|---|---|---|---|
| CLAUDE.md | 用户消息(system-reminder) | 自动 | 项目级 |
| Output Style | system 数组 | 手动 | 会话级 |
| Slash Command | 用户消息(command-message) | 用户显式调用 | 单轮 |
| Skill | 用户消息(tool_result) | 模型自主决定 | 单轮 |
| Sub-Agent | 独立对话 | 模型自主决定 | 隔离 |
拼装完的 system prompt 大约 24,000 tokens。加上 40 多个工具描述,每次 API 调用之前就要消耗大量上下文窗口。
还有一个命名很有意思的函数:DANGEROUS_uncachedSystemPromptSection()。
一看这名字就知道——某个工程师曾经因为把不该缓存的内容放进了缓存段,被坑过一次,然后干脆起了这个名字提醒后人。
4️⃣ 多 Agent 协调器:并行是超能力
Claude Code 可以从单 agent 变成指挥官,同时调度多个 worker agent 并行干活。
Workers 之间用 <task-notification> XML 消息通信。有共享的 Scratchpad 目录,跨 worker 持久化共享知识。
System prompt 里有一句话很能代表设计理念:
“Parallelism is your superpower. Workers are async. Launch independent workers concurrently whenever possible — don’t serialize work that can run simultaneously.”
翻译:并行是你的超能力。只要能同时跑的任务,就不要串行。
还有一个反偷懒规则:
“Do NOT say ‘based on your findings’ — read the actual findings and specify exactly what to do.”
Coordinator 不能甩锅,必须自己读完发现再下精确的指令。
5️⃣ 藏在代码里的彩蛋——未发布功能全曝光
这是最让开发者兴奋的部分。Claude Code 源码里藏了不少从未公开的功能,全部通过编译时 feature flag 门控,外部版本看不到——但 source map 不管这套,编译前的源码全在里面。
BUDDY:终端里养电子宠物
Claude Code 内置了一个完整的 Tamagotchi 式宠物系统。18种生物,用 Mulberry32 PRNG 确定性抽卡——同一个用户永远抽到同一只。
| 稀有度 | 概率 | 物种 |
|---|---|---|
| Common | 60% | Pebblecrab, Dustbunny, Mossfrog, Twigling, Dewdrop, Puddlefish |
| Uncommon | 25% | Cloudferret, Gustowl, Bramblebear, Thornfox |
| Rare | 10% | Crystaldrake, Deepstag, Lavapup |
| Epic | 4% | Stormwyrm, Voidcat, Aetherling |
| Legendary | 1% | Cosmoshale, Nebulynx |
每只宠物有 5 个属性(DEBUGGING/PATIENCE/CHAOS/WISDOM/SNARK),6 种眼睛样式,8 种帽子。5 行高、12 字宽的 ASCII Art 渲染,有待机动画和反应动画。
代码里标注的预告窗口:2026年4月1-7日(今天是4月1日!),正式上线计划在5月。
物种名在代码里用 String.fromCharCode() 数组做了混淆——Anthropic 明确不想让这些名字被字符串搜索找到。结果 source map 完全不吃这套。
KAIROS:永不睡觉的 Claude
一个常驻运行模式,Claude 不等你打字,它自己主动观察和行动。
维护每日日志,定期收到 <tick> 提示来决定要不要主动做什么。有个 15 秒阻塞预算——任何主动操作如果会阻塞用户超过 15 秒,就延后执行。
说得直白点:KAIROS 就是7×24小时在线的全能助手。OpenClaw 管得了的它要管,OpenClaw 管不了的它更要管。
ULTRAPLAN:让 Opus 4.6 替你想 30 分钟
复杂规划任务可以扔到远程的 Cloud Container Runtime,跑 Opus 4.6 模型,给它最多 30 分钟的思考时间。
Penguin Mode
快速模式的内部代号。API 端点是 /api/claude_code_penguin_mode,配置 key 是 penguinModeOrgEnabled,熔断开关是 tengu_penguins_off。
全是企鹅。 Anthropic 的工程师给快速模式起名企鹅,原因不明,但很可爱。
6️⃣ 权限安全体系:比想象中复杂得多
Claude Code 的权限系统不是简单的 allow/deny,而是多层级精密设计。
三级风险分类:
| 等级 | 处理方式 |
|---|---|
| LOW | 直接放行 |
| MEDIUM | YOLO 分类器(基于上下文的 ML 模型)自动判断 |
| HIGH | 必须用户手动授权 |
还有个细节:当 Claude 需要你授权一个操作时,它解释风险的那段话本身也是 LLM 生成的。
你看到的"此命令将修改你的 git 配置"——这句话是 Claude 用另一次 LLM 调用写出来的。
Undercover Mode:最讽刺的彩蛋
Claude Code 里有一套叫 Undercover Mode 的系统,专门防止 AI 在提交代码时泄露 Anthropic 的内部信息。
Anthropic 的工程师花了心思做了这个防泄露子系统,然后用一个 .map 文件把整个源码(包括 Undercover Mode 的代码)一次性泄了个干净。
最讽刺的是:这没有强制关闭选项——“如果我们不确定这是内部仓库,就保持卧底状态。”
这意味着:你在 GitHub 上看到的很多"人类"贡献者,搞不好背后是 Claude Code 在干活。
7️⃣ 技术栈全景图
用 React 写命令行界面这个选择挺有意思。Ink 这个库让 React 组件能跑在终端里,Anthropic 在生产级产品里用上了——那些看起来很简陋的终端交互效果,原来都是 React 组件渲染出来的。
8️⃣ 整个行业怎么看
社区反应:有人欢喜有人愁
GitHub 上的泄露仓库几个小时就涨了 6600+ Star、10000+ Fork。Issue 区变成了大型合影留念现场,绝大部分是中文用户在打卡:
- “终于可以一睹源码了”
- “笑死了全是国人”
- “国产 agent 你崛起罢”
- “不久后国内:XXagent 震撼首发”
开发者社区的共识:广泛获取 Claude Code 的架构最终是有益的。代码现在已经永久可用,互联网不会遗忘。
对 Anthropic 的冲击
| 影响维度 | 具体表现 |
|---|---|
| 技术泄露 | 上下文压缩策略、工具调用设计、权限模型全被研究 |
| 安全风险 | 安全漏洞面的扩大,攻击门槛降低 |
| 品牌形象 | “做 AI 安全的公司,栽在 npm 配置上” |
| 资本信任 | Anthropic 可能2026年 IPO,这种失误影响管理成熟度评估 |
| 竞争格局 | Claude Code 年化收入占 Anthropic 总收入 18%,且3个月内翻倍——现在是关键期 |
更糟的是:这不是孤立事件。
就在5天前(3月26日),一次 CMS 配置错误就暴露了未发布的 Claude Mythos 模型细节。三天后,又来了一次 npm 配置失误。
两次事故,五天之内。一个是内容管理系统,一个是 npm 包管理。
这不是随机意外,这是组织内部工程流程和发布安全管控存在系统性问题的信号。
开发者从中学到什么
一位正在构建 AI 应用的开发者 @devmelv 总结了四点观察:
① 上下文处理不是后期功能
Claude Code 的 CLAUDE.md 在每一轮对话中都会被加载,不只是会话开始时。持久化、结构化的上下文是从第一天起就要承载一切的基础架构。
② 围绕定价模型设计产品
Claude Code 派生子 agent 时,创建与父上下文完全相同的字节副本。API 会对缓存。5 个智能体的成本≈1个,因为都命中了同一个提示缓存。这是产品层面的设计决策,不是性能优化。
③ 摩擦点 = 配置问题
Claude Code 的每一次权限弹窗都被视为配置的失败。他们用 AI 来决定 AI 能做什么。AI 产品中的每个摩擦点,本质上都是一个配置问题。
④ 为连续性而设计
每个会话都保存到 JSONL 文件。用户可以恢复、分支、继续。大多数人每次都重新开始——这丢弃了模型已经了解到的所有信息。
9️⃣ 启示:这件事告诉我们什么
总结
一家做 AI 安全的公司,因为构建配置没管好把自家源码全泄了,这个剧情是真的讽刺。
但换个角度看,这 51 万行代码展示了一个事实:现在最好用的 AI 编程工具,技术栈并不神秘。
React + Ink + Bun + 一套精心设计的工具注册系统。
真正的壁垒还是在模型能力上。
源码已经泄了,但 Claude Code 不会因此变得更弱。该好用还是好用。
有些东西,藏不住也没必要藏。
参考来源**
- https://github.com/instructkr/claw-code(已换壳)
更多推荐



所有评论(0)