Claude Code 源码泄露事件深度剖析

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 文件)是现代前端工程里的标配工具。

正常发布流程是这样的:
TS/ES6 源码
编译压缩
混淆后的 JS
.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 系统
安全层
权限分级
沙箱
路径防护
记忆层
autoDream

记忆整理
MEMORY.md

持久化
上下文压缩
工具层
File/终端工具
Web工具
Agent编排
LSP/Jupyter
MCP集成
编排层
Query Engine

46,000 行
Coordinator

多Agent协调
用户层
终端 CLI
VS Code 插件
JetBrains 插件
浏览器 UI

从外到内,一层层来看:

第一层:用户层------三种入口

Claude Code
终端 CLI
IDE 插件

VS Code / JetBrains
浏览器 UI

给 ULTRAPLAN 用
Bridge 通信层

  • 终端 CLI:核心入口,用 React + Ink 渲染(是的,命令行界面用 React 写的)
  • IDE 插件:通过 Bridge 层和 CLI 双向通信
  • 浏览器 UI:为 ULTRAPLAN 预留的远程规划界面

第二层:编排层------46,000 行的大心脏

Query Engine 是整个 Claude Code 最大最核心的模块,占了约 46,000 行代码。
text
tool_use
stop
用户消息
Query Engine
LLM API 调用
返回类型判断
流式输出
工具执行
任务完成
tool_result 回传

它负责所有 LLM API 调用、流式响应、缓存和上下文编排。

开启 Coordinator Mode 后,还能变成多 Agent 调度中心,同时管理多个并行的 worker agent。

第三层:工具层------40+ 工具有权限门控

Claude Code 的工具系统不是随手拼的,每个工具都通过 getAllBaseTools() 注册,按 feature gate、用户类型、环境变量过滤后才暴露给模型
工具注册表
文件操作
FileRead / FileWrite
FileEdit / Glob / Grep
Grep底层用ugrep加速
终端执行
BashTool
PowerShellTool
可选沙箱隔离
Web交互
WebFetch / WebSearch
WebBrowser
Agent编排
AgentTool / SendMessage
TeamCreate / TeamDelete
任务管理
TaskCreate / TaskGet
TaskList / TaskStop
TaskOutput
IDE集成
LSPTool
NotebookEdit
外部服务
MCPTool / McpAuth
ListMcpResources
特殊工具
SleepTool / SnipTool
ToolSearchTool
CronCreate
内部专属
ConfigTool
TungstenTool
SuggestBackgroundPR

有个值得注意的细节:工具有 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 的触发条件极其严格,有三重门控:






检查时间门
距上次 Dream

≥ 24小时?
不触发
检查会话门
检查锁定门
获取互斥锁
Phase 1: Orient

扫描memory目录
Phase 2: Gather

采集新信号
Phase 3: Consolidate

写入/更新记忆
Phase 4: Prune

修剪 MEMORY.md
完成

  • Phase 1 Orient:扫描 memory 目录,读取 MEMORY.md,浏览现有主题文件
  • Phase 2 Gather:采集新信号,优先级:每日日志 → 漂移的记忆 → 对话记录搜索
  • Phase 3 Consolidate:写入或更新记忆文件,把相对日期转成绝对日期
  • Phase 4 PruneMEMORY.md 必须控制在 200 行以内,不超过 25KB

Dream 子 agent 只有只读 bash 权限,它能看项目但不能改任何东西------纯粹的记忆整理。


3️⃣ System Prompt:110+ 碎片动态拼装

大多数 AI 应用的 system prompt 是一个写死的字符串。Claude Code 不是。
Dynamic System Prompt
静态段

可跨组织缓存
动态段

每次请求重建
核心人格指令
24个工具描述
安全边界

CYBER_RISK_INSTRUCTION
输出格式规范
CLAUDE.md

项目指令
Output Style

会话风格
用户偏好
环境变量
Feature Flags

五种内容注入机制:

机制 注入位置 触发方式 作用域
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 并行干活。
并行
并行
并行
启动 Coordinator Mode
Research

多 worker 并行调研
Synthesis

coordinator 读取所有发现

制定实施规范
Implementation

多 worker 按规范

各自实现模块
Verification

运行测试验证改动
任务完成
Worker 1
Worker 2
Worker N

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 确定性抽卡------同一个用户永远抽到同一只。
60% 25% 10% 4% 1% BUDDY 稀有度概率分布 Common (60%) Uncommon (25%) Rare (10%) Epic (4%) Legendary (1%)

稀有度 概率 物种
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 不等你打字,它自己主动观察和行动。
KAIROS Mode
每日日志维护
定期收到 tick 提示
判断是否主动行动
夜间 Dream 整理记忆
专属工具
SendUserFile

直接推文件
PushNotification

推送通知
SubscribePR

订阅 PR 活动

维护每日日志,定期收到 <tick> 提示来决定要不要主动做什么。有个 15 秒阻塞预算------任何主动操作如果会阻塞用户超过 15 秒,就延后执行。

说得直白点:KAIROS 就是7×24小时在线的全能助手。OpenClaw 管得了的它要管,OpenClaw 管不了的它更要管。

ULTRAPLAN:让 Opus 4.6 替你想 30 分钟

复杂规划任务可以扔到远程的 Cloud Container Runtime,跑 Opus 4.6 模型,给它最多 30 分钟的思考时间
浏览器 UI Cloud Container Runtime Claude Code CLI User 浏览器 UI Cloud Container Runtime Claude Code CLI User 提交复杂规划任务 转发任务,分配 Opus 4.6 每3秒轮询一次结果 实时显示规划过程 审批结果 发送 sentinel 值 ULTRAPLAN_TELEPORT_LOCAL 结果"传送"回本地 终端显示最终规划

Penguin Mode

快速模式的内部代号。API 端点是 /api/claude_code_penguin_mode,配置 key 是 penguinModeOrgEnabled,熔断开关是 tengu_penguins_off

全是企鹅。 Anthropic 的工程师给快速模式起名企鹅,原因不明,但很可爱。


6️⃣ 权限安全体系:比想象中复杂得多

Claude Code 的权限系统不是简单的 allow/deny,而是多层级精密设计。
LOW
MEDIUM
HIGH
安全
不确定


受保护文件列表
.gitconfig
.bashrc
.zshrc
.mcp.json
.claude.json
工具调用请求
风险等级判断
直接放行
YOLO 分类器
用户手动授权
执行工具
受保护文件?
拦截

三级风险分类:

等级 处理方式
LOW 直接放行
MEDIUM YOLO 分类器(基于上下文的 ML 模型)自动判断
HIGH 必须用户手动授权

还有个细节:当 Claude 需要你授权一个操作时,它解释风险的那段话本身也是 LLM 生成的。

你看到的"此命令将修改你的 git 配置"------这句话是 Claude 用另一次 LLM 调用写出来的。

Undercover Mode:最讽刺的彩蛋

Claude Code 里有一套叫 Undercover Mode 的系统,专门防止 AI 在提交代码时泄露 Anthropic 的内部信息。
不确定
确认是内部
禁止事项
禁止动物代号

Capybara, Tengu等
禁止未发布版本号

opus-4-7, sonnet-4-8
禁止内部仓库名
禁止内部 Slack 频道名
禁止提及 Claude Code

或暗示自己是 AI
Anthropic 员工

给开源项目贡献代码
是否内部仓库?
自动激活卧底模式
正常使用
注入特殊 System Prompt

Anthropic 的工程师花了心思做了这个防泄露子系统,然后用一个 .map 文件把整个源码(包括 Undercover Mode 的代码)一次性泄了个干净。

最讽刺的是:这没有强制关闭选项------"如果我们不确定这是内部仓库,就保持卧底状态。"

这意味着:你在 GitHub 上看到的很多"人类"贡献者,搞不好背后是 Claude Code 在干活。


7️⃣ 技术栈全景图

Claude Code 技术栈
运行时:Bun

(非 Node.js)
终端 UI:React + Ink

(用 React 写命令行)
CLI 框架:Commander.js
类型校验:Zod v4
搜索:内置 ripgrep
协议:MCP SDK / OpenTelemetry
功能开关:GrowthBook
选择 Bun 的原因:

① 启动更快

② 死代码消除更彻底

③ Feature flag 走编译时消除

用 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️⃣ 启示:这件事告诉我们什么

Claude Code 源码泄露

深层启示
对开发者
npm 包发布前

跑 npm pack --dry-run
检查 .map 文件
Bun/Webpack 默认生成 source map
sourcesContent

= 完全公开的源码
对 AI 行业
代码本身不再是护城河
真正壁垒:用户数据

工作流集成深度

品牌信任
工程成熟度

与估值严重落差
"安全"叙事

极其脆弱
对 Anthropic
再好的安全设计

架不住 CI/CD 盲点
Undercover Mode

防 AI 泄密

被 .map 彻底反讽
五天两次泄露

系统性工程问题
对整个行业
MCP 生态

亟需安全标准
AI Agent 安全

= 最重要工程问题
透明度悖论:

安全靠隐藏

还是靠设计健壮性

总结

一家做 AI 安全的公司,因为构建配置没管好把自家源码全泄了,这个剧情是真的讽刺

但换个角度看,这 51 万行代码展示了一个事实:现在最好用的 AI 编程工具,技术栈并不神秘。

React + Ink + Bun + 一套精心设计的工具注册系统。

真正的壁垒还是在模型能力上。

源码已经泄了,但 Claude Code 不会因此变得更弱。该好用还是好用。

有些东西,藏不住也没必要藏。


参考来源**


相关推荐
禁默2 小时前
自动化智能体生成+外接MCP,我用 ModelEngine Nexent 5分钟手搓了一个小红书爆款收割机
运维·人工智能·自动化
数智顾问2 小时前
(100页PPT)数字化转型德勤集团信息化顶层规划方案(附下载方式)
大数据·人工智能
汽车仪器仪表相关领域2 小时前
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案
大数据·人工智能·机器学习·单元测试·压力测试·可用性测试
wenzhangli72 小时前
推荐一款 面向企业级应用的开源AI Agent 操作系统Apex OS
人工智能
唯创知音2 小时前
WTK6900FC鼾声识别芯片:基于DNN-HMM算法的高性能鼾声识别检测处理方案
人工智能·算法·dnn·鼾声识别芯片·鼾声检测芯片
骥龙2 小时前
第七篇:频道接入安全——严防未授权对话
人工智能·安全
大囚长2 小时前
MemOS和DeepSeek Engram在增强记忆和长推理中的不同
人工智能
Thomas.Sir2 小时前
第七章:RAG知识库开发之【RAG开源应用完全解析:从RAGFlow到Dify的实战指南】
人工智能·python·开源·fastgpt·dify·ragflow
吴声子夜歌2 小时前
Node.js——I/O流操作
node.js·编辑器·vim