Claude Code 51万行源码泄露全解析:从事件始末到架构深挖
一、事件始末:一次“手滑”引发的行业地震
事情发生在2026年3月31日,准确说是美东时间凌晨4点23分。
一个叫Chaofan Shou的华人安全研究员(推特ID @Fried_rice)发了条推文,内容很简单:Claude Code的源码通过npm注册表中的map文件泄露了,还附了一个下载链接。

这个链接指向Anthropic自家Cloudflare R2存储的一个zip压缩包,点击就能下载完整源码。
泄露的入口是一个59.8MB的source map文件,叫cli.js.map。
Source map是开发者调试用的,能把压缩后的代码还原成原始代码——它根本不该出现在发布包里。
Anthropic在打包Claude Code v2.1.88的时候,忘了在.npmignore里排除*.map文件。

更离谱的是,这已经不是第一次了。
2025年2月,Claude Code就因为完全相同的原因泄露过一次,当时被紧急下架修复。
没想到一年后,原样再来。

消息一出,GitHub上几个小时就冒出了好几个仓库,把源码完整上传。
有个仓库几小时内就拿到了超5万星、5万多fork,涨星速度比之前的OpenClaw还要快。
原帖浏览量迅速突破2000万,整个硅谷都醒了。

泄露的规模有多大?
约1900+源码文件,超过51.2万行TypeScript代码。
技术栈包括:TypeScript(strict模式)、React + Ink(终端UI)、Commander.js(CLI解析)、Zod v4(Schema校验)、ripgrep(搜索)、MCP SDK和LSP(协议)、OpenTelemetry + gRPC(遥测)、OAuth 2.0和JWT(鉴权)等。
需要特别说明的是,泄露的是Claude Code CLI工具的TypeScript源码,不是Claude大模型的权重或训练数据,核心模型资产并未暴露。
二、泄露内容深度解析:远超预期的工程宝库
代码规模与复杂度
外界一直有传言Claude Code就是个套了壳的命令行工具,代码直接推翻了这个说法。

核心引擎QueryEngine.ts一个文件4.6万行,负责所有LLM调用、流式传输和多轮编排。
工具定义文件Tool.ts2.9万行,定义了大约40种工具能力。
光这两个文件加起来就7.5万行,这已经接近中型应用了。
目录结构暴露了完整的工程组织:src/main.tsx是CLI入口,src/QueryEngine.ts是核心引擎,src/Tool.ts是工具基类,src/commands.ts是斜杠命令注册调度,还有src/commands/目录下几十个命令实现,src/tools/目录下数十种工具,src/services/目录下各种集成服务,以及bridge/、plugins/、skills/、memdir/、remote/等专项模块。
隐藏功能大揭秘
源码里暴露了至少十几个还没公开的功能,其中一些由Feature Flag控制,代码已经写好但开关还没打开。
Buddy System(AI宠物系统):这可能是最让人意外的发现。一个电子宠物功能,18个物种,从鸭子、龙、蝾螈、水豚到蘑菇,连幽灵都有。
稀有度从普通到传说级,1%概率出传说。能戴帽子,开皮肤。
每只宠物有五项属性,其中两项分别叫“混乱程度”和“嘴毒值程度”。
本来计划4月1日小范围测试,5月正式上线,结果宠物还没孵出来,代码先裸奔了。
KAIROS模式:这个词在代码里出现了超过150次,取自古希腊语,意思是“在恰当的时刻”。
它是一个后台自主守护进程,你关掉终端去睡觉,Claude Code继续干活。
KAIROS自带autoDream机制,你不在的时候,它启动子代理在后台整合记忆,把零碎信息归类整理,发现矛盾会自动修正,拿不准的去代码库里再核实。等你回来,上下文已经是干净的。
活脱脱一个7×24“AI管家”。
Coordinator模式:主Agent变成纯调度器,不直接干活,只负责分派任务。这本质上就是把现实中的公司协作模式搬到了AI系统里。
Leader Agent负责任务分解和权限审批,Developer Agent干活的可以有多个各自独立,Reviewer Agent专门做代码审查。
每个Agent有独立的Git Worktree,互不干扰,Agent之间通过“邮箱”异步通信。
Undercover Mode(卧底模式):代码里有一整套系统,专门防止Claude Code在公开场合暴露Anthropic的内部信息。
给开源项目提交代码的时候,自动擦除内部模型代号、项目名称、AI署名。
系统提示词写着“别暴露身份”。
也就是说,Anthropic一直在用Claude Code匿名给开源项目贡献代码。
源码里有一句注释:“There is NO force-OFF”——这个功能没有强制关闭的开关。
PROACTIVE主动模式:现在的Agent是你问一句它答一句,PROACTIVE模式下,Agent不等你的指令了。
它主动扫描你的项目,主动发现问题,主动提出建议。
你写了一段有Bug的代码,还没来得及跑测试,它先告诉你:“这里有个空指针问题,要不要我帮你修?”
ULTRAPLAN超级规划:是plan的加强版,遇到复杂任务时,它会去Anthropic的云端开一个超级规划Agent,花半个小时做个超级方案,最后给你看,批准了再执行。
不过这个功能因为完全依赖于Anthropic的云端,本地开不了。
Ultrareview超级审查:是/review命令的超级加长版,输入这个之后,Claude会把你的代码仓库传送到Anthropic的云端,在那边启动一个专门的审查Agent花很长时间做一次非常深入的代码审查。
同样依赖云端,本地开不了。
跨会话通信:让同一台机器上运行的多个Claude Code之间可以互相发消息,等于多开几个Claude Code,它们就可以相互交流配合工作了。
Bridge远程控制:本地运行的Claude Code,可以通过手机或浏览器远程操控它。
这个理论上是可以自己补充一些代码打开使用的。
后台常驻:让Claude可以长时间持续地挂在后台,但目前这个功能还是个空壳,也导致前面的主动助手没法用。
其他重要发现
26个隐藏斜杠命令:在help里面看不到,但却有实际的代码。其中/memory命令实际上不下源码就已经可用,只是过去咱们不知道,大家现在打开cc输入/memory就能开启。
遥测埋点:Anthropic有专门的遥测埋点,会追踪用户骂Claude的频率。这个发现挺有意思的,说明他们在认真收集用户情绪反馈。
新模型族代号“Capybara”(水豚):代码里泄露了一个新的模型族,有三个等级,据说可能是针对网络安全领域的。
封号机制:从代码里能发现大家很关心的那个话题:它是怎么封号的?答案是,只换IP果然是没有用的。抽象来讲:它知道你是谁,它知道你在哪里,它知道你干了些啥。从工程角度看,它的安全检测确实做得比较系统。
反蒸馏机制:如果有人偷录Claude Code的API流量想拿去训练自己的模型,它会往请求里注入假的工具定义,污染你的训练数据。用技术手段反偷师。
三、架构设计剖析:顶级Agent的工程哲学
五层架构与数据流
Claude Code的架构可以分为五个清晰的层次,每一层向上提供抽象,向下依赖具体实现。

Layer 1:CLI/UILayer:REPL.ts负责交互式终端,是用户直接接触的界面层。
Layer 2: SDK Entry:SDKEntryPoint提供程序化接口,允许其他系统调用。
Layer 3: Tool System:toolOrchestration.ts是并发执行引擎,管理工具的调度和执行。
Layer 4:QueryEngine:query.ts是核心查询循环,QueryEngine.ts负责会话中间件管理,queryContext.ts组织系统提示。
Layer 5: Agent System:TaskCreator/Stop处理后台任务,coordinator/负责多Agent协调,AgentTool处理子Agent创建。
数据流特征是AsyncGenerator管道实现了全链路流式传递。
这种设计允许工具在API流仍在推送时就开始执行,显著减少了端到端延迟。
工具系统设计
Claude Code的工具架构通过以下设计决策构建了一个安全、可扩展、高性能的工具系统:
泛型接口 + 输入驱动属性:同一工具根据不同输入表现不同的安全特征。
buildTool工厂 + 失败关闭默认值:新工具自动获得保守的安全配置。
ToolUseContext依赖注入:40+字段的上下文对象承载了工具执行的全部环境。
显式注册 + 条件编译:工具列表在编译时确定,死代码被完全消除。
ToolSearch延迟加载:按需加载schema,在工具数量与prompt大小之间取得平衡。
工具执行有双轨设计:runTools是传统的顺序执行路径,StreamingToolExecutor则允许工具在流流入的同时就开始执行。
这种设计体现了工程哲学——新特性通过功能开关渐进式发布,旧路径作为fallback保留。
权限系统:四层安全审查
Claude Code有个Auto Mode,全自动执行操作,不需要人确认每一步。敢这么干,靠的是一套四层安全审查流水线:
第一层:规则匹配:硬规则直接拦截。
第二层:低风险跳过:明显安全的操作直接放行。
第三层:白名单放行:用户之前批准过的类似操作。
第四层:独立Sonnet分类:用一个独立的Sonnet模型做最终判断。
连续3次被拒,系统自动降级到手动模式。
本质就是:每个敏感操作都要经过“第二个AI”审查。不靠人盯,靠系统化的多层防御。
权限检查的核心入口是hasPermissionsToUseTool函数,它是整个权限系统的调度中心。
规则匹配逻辑处理了MCP服务级权限,比如规则“mcp__server1”匹配“mcp__server1__tool1”。
记忆系统:三级范围与快照同步
Claude Code的记忆通过三级范围(user/project/local)和快照同步机制,使Agent能够跨会话积累知识。记忆分成了四种类型:
用户记忆:你是谁、你擅长什么、你喜欢什么方式沟通。一个资深工程师和一个编程小白,AI应该用完全不同的方式跟你协作。
反馈记忆:你纠正过它什么。你说过“别给我写总结”,它就记住了,下次不再犯。而且不光记纠正,还记认可——你说“对,就这样”,它也记下来,知道这条路是对的。
项目记忆:与特定项目相关的知识和决策。
本地记忆:会话级别的临时信息。
这套记忆系统解释了一个很多用户好奇的事:为什么Claude Code在长时间多轮复杂任务中表现这么稳定?不是靠蛮力塞上下文,是靠精确的记忆管理。
上下文压缩:9段式结构化压缩
用过Claude Code的人应该有个感受:对话可以很长,它不会“忘事”。秘密在它的上下文压缩机制。
传统做法是“帮忙总结一下之前的对话”,这种自由文本的总结,信息丢失率很高。Claude Code用的是固定结构的9段式压缩,每个段落各司其职:
段落1:核心请求:用户最初想干什么。
段落2:关键概念:重要术语和设计决策。
段落3:文件代码:读过的关键文件摘要。
段落4:错误修复:遇到的坑和解决方案。
段落5:用户消息:完整保留原始消息。
段落6:工具调用:哪些工具被执行过。
段落7:待办清单:Todos状态跟踪。
段落8:计划文档:设计文档和计划记录。
段落9:Micro-Compact:自动清理旧的工具结果。
当上下文buffer超过13,000 tokens时自动触发压缩,压缩后最多输出20,000 tokens。
这个设计的好处是:每次压缩都像一次“结构化存档”,关键信息不会丢。
特别是第5段——完整保留用户原始消息,避免了总结过程中丢失用户意图。
多Agent协作:真实公司架构的映射
Claude Code不是“一个AI在干活”,看它的架构,更像是一个公司在干活:
LeaderAgent:负责任务分解和权限审批。其他Agent的请求先冒泡到Leader,Leader处理不了才弹给用户。
Developer Agent:干活的,可以有多个,各自独立。
Reviewer Agent:专门做代码审查。
每个Agent有独立的Git Worktree,互不干扰。
Agent之间通过“邮箱”异步通信。Coordinator Mode开启后,主Agent变成纯调度器,不直接干活,只负责分派任务。
管理逻辑不是写在代码里的,是写在Prompt里的。
370行自然语言,就是一个完整的项目管理手册。
比如关于派活:“永远不要写‘根据你的发现去修复这个bug’。
这种话是在把理解力外包给下属。你必须自己理解了研究结果,然后写清楚:改哪个文件、第几行、为什么改、改成什么。”
关于验收:“不要橡皮图章式地验收工作。验收意味着证明代码能用,不是确认代码存在。
要跑测试、查类型、试边界情况。”
Skill系统:最高层次的抽象
Skill系统是Claude Code架构中“最高层次的抽象”——它站在Agent、工具、MCP之上,将复杂的多步骤工作流封装为用户可以一键触发的能力单元。
统一的Command抽象:Skill不是独立类型,而是Command类型的一个变体,可以无缝集成到命令系统中。
三源聚合的发现机制:文件系统、代码注册和MCP三种来源通过统一的Command接口聚合。
Inline/Fork双模执行:简单Skill以Inline模式直接注入上下文,复杂Skill以Fork模式启动独立子Agent。
预算感知的发现列表:Skill列表的展示严格控制在上下文窗口的1%以内,内置Skill优先保留完整描述。
“Prompt asController”模式:Skill不直接操作系统——它生成结构化的提示词,引导模型使用已有工具完成工作。
设计哲学:大脑够聪明,工具可以笨
一个反直觉的设计:代码搜索用grep,不用向量数据库。为什么不怕“不够智能”?因为LLM能理解grep的原始结果,直接在这个基础上做判断。
传统IDE的逻辑是:做一个聪明的搜索引擎(语义匹配、向量检索),然后让人去看结果、做判断。
Claude Code的逻辑是:搜索工具可以笨,反正LLM够聪明,能理解grep返回的原始结果,自己判断哪些有用。
一个足够聪明的大脑,可以让背后的所有工具都保持简单。
这其实是一个很大的架构哲学转变。很多AI产品还在拼命给工具加“智能”,Claude Code直接把智能放在大脑里,工具只做最基础的事。
简单=快=稳定=不花token做embedding。
工程细节:性能优化的艺术
翻代码的时候还注意到一些很有意思的工程实践:
并行启动预热:main.tsx的前20行,在任何import之前,就用副作用触发了MDM配置读取和macOS钥匙串预取。
利用后续模块加载的约135毫秒窗口做并行预热,实测节省65毫秒启动时间。
模块懒加载:重型模块全部动态import,只在需要时才拉进来。OpenTelemetry约400KB,gRPC约700KB,不用的时候不占内存。
权限冒泡:Teammate Agent需要权限时,请求向上冒泡给Leader。Leader拒绝3次才弹给用户。不是每个权限问题都打扰用户。
LSP+MCP双协议支持:LSP提供IDE级别的代码跳转、补全、诊断;MCP允许接入外部工具服务器。
缓存策略:在AI时代,缓存策略不是技术细节,是财务问题。每个Token都是钱。Claude Code通过Prompt缓存、静态部分从缓存加载等方式,大幅降低token成本。
四、事件影响与行业启示
对行业的价值
这次泄露,对很多创业团队来说,确实是有价值的。
大家都知道一个Agent大概要有工具调用、记忆、权限、规划、上下文管理这些模块,但知道这些词,和真正把它们拼成一个能跑、能卖、能扩展、能持续迭代的产品,中间差了十万八千里。
Claude Code这次暴露出来的,就是这中间最值钱的那一层:真实工程组织方式、功能路线图、产品取舍痕迹,以及很多具体实现细节。
泄露内容不只是现有功能,还包括尚未上线的功能,例如更长时任务、跨会话学习、后台持续运行等方向,这相当于把Anthropic接下来往哪走,也顺手给外界看了一眼。
全世界都看到了目前最顶级的Coding Agent是怎么做出来的,尤其对于那些正在做Agent产品的团队、大厂来说,等于拿到了教科书。
所以我们很快会看到无论开源还是大厂的一批,非常好用的Agent产品。作为用户,自然也就会拥有更好用的工具。
护城河在哪里?
很多人盯着模型参数看,觉得谁家的模型更强谁就赢。
但Claude Code告诉你,同样的模型,套上不同的Harness,产品力差很远。
有分析指出,Claude Code的核心能力60%来自模型,40%来自Harness Engineering。
模型决定AI能否完成任务,而harness决定其完成质量、稳定性与安全性。
Claude Code的核心不是代码,是Prompt。
它最核心的“算法”是那些用自然语言写的管理指令——怎么拆任务、怎么派活、怎么验收、怎么记住用户、怎么保护安全。
这些指令,任何一个好的管理者看了都会觉得“这不就是我干的事吗”。
区别在于:人类管理者的经验在脑子里,Claude Code的经验写成了Prompt,可以复制、可以迭代、可以24小时不间断执行。
Claude Code真正的护城河,是代码背后那套用自然语言写成的指令体系——以及这套体系里藏着的产品哲学。模型会换,工程不会。
官方回应与处理
Claude Code源码泄露后,其负责人Boris Cherny回应称事件源于开发者失误而非外部工具Bug,团队未追责涉事人员并保持完全信任。

调查与改进聚焦流程与基础设施缺陷,已将手动部署环节纳入自动化优化,以避免同类问题。

这个案例体现了将错误归因系统而非个人、以改进代替惩罚并公开透明处理的事故应对理念,值得借鉴。

Agent开发启发
从Claude Code的架构里,能提炼出几条对AI Agent开发通用的设计原则:
流式优先:不要等模型完整返回再执行工具,边流边执行。用户体感延迟会大幅下降,而且能更早发现问题。
权限是管道,不是开关:单一的allow/deny太粗糙了。实际产品需要多层级、可配置、支持自动分类的权限决策链。
工具要声明并发安全性:Agent框架需要知道哪些工具能并行跑,哪些必须串行。这个信息应该由工具自己声明。
上下文管理才是核心挑战:长会话的token管理、消息压缩、关键信息保留,这些才是Agent能不能真正干活的基础能力。
渐进式披露省token:工具schema、skill内容、MCP指令,都不该一开始就全塞进prompt。按需加载,用多少拿多少。
多Agent协作不一定要多进程:AsyncLocalStorage式的进程内隔离,在很多场景下比进程间通信更高效。关键是上下文隔离,不是物理隔离。
可扩展性靠Hook,不靠硬编码:预定义一组生命周期事件,让用户和插件在这些点上注入逻辑。
Agent的进化方向
源码里的Feature Flag暴露了Agent进化的清晰路线:被动执行→主动建议→择时行动→全自主运行。
现在的Agent,绝大多数还停在“你问我答”。
而Claude Code源码里,已经把从左到右的每一步都写好了。
Agent正在从“听令兵”进化成“参谋长”,最终目标是“合伙人”。
这不是PPT上的愿景,这是已经写进源码、做好了开关、随时准备上线的进化路径。
对普通开发者的意义
对普通开发者和技术团队来说,这算是一次难得的学习机会,可以直接参考顶级AI项目的工程实现,研究它的架构和代码思路。
如果你在做AI产品,这份源码值得你花一周时间认认真真去研究。不是去抄,是去理解:顶级的AI产品,是怎么想问题的。
最后,一个非常实际的教训:发npm包之前,永远检查一下你的.npmignore和package.json的files字段。source map、.env、内部配置,漏出去一个就是大事故。
51万行源码,一个Agent的完整工作手册。看完之后最大的感受是:Agent不是魔法,是工程。
循环思考、工具调用、多Agent协作、记忆管理——每一个“智能”行为背后,都是一堆循环和判断。
Agent的瓶颈不是智商,是记忆。
大模型已经足够聪明,但脑容量的限制,决定了Agent能处理多复杂的任务。
Agent正在从“工具”变成“同事”。
循环、工具、协作、记忆、自主——这就是Agent干活的全部逻辑,也是每个人未来和AI的工作协作逻辑。
后台回复:cc源码,获取claude code源码和《深⼊理解 Claude Code 源码手册》


夜雨聆风