Claude Code 源码泄漏后,真正值得看的是它的工程骨架
“51 万行代码”当然抓眼球,但这次真正值得看的,不是行数,而是行数背后那层平时看不见的工程现实。 当 Claude Code 的 CLI 因为一个 cli.js.map 被意外摊开,外界第一次比较具体地看到:Agent,你可以先把它理解成“能连续替你推进任务的软件代理”,真正难的地方往往不在模型会不会写代码,而在它怎么被做成一个能接工具、管权限、记状态、能回退、能续跑的系统。

文|Hive硅基秩序编辑|Hive硅基秩序来源|Hive硅基秩序封面来源|图片来源网络
1 先把误会掰正:这不是开源,是一次源码泄漏
先把最容易说乱的地方说清楚。2026 年 3 月 31 日,Claude Code 在社交平台上突然爆火,不是因为 Anthropic 官方宣布“开源”,而是因为 npm 包里带出了一个 cli.js.map 文件,让外界得以还原出 Claude Code CLI,也就是命令行工具,背后的大量源码结构。

很多人会觉得,这不都差不多吗?其实差得还挺远。开源意味着你被明确授予了查看、修改、分发、二次开发的权利,背后还有许可证、维护承诺、社区治理和商业边界。泄漏则只是“文件被看到了”。前者是制度安排,后者是事故结果。
“源码能看见”和“项目已开源”,中间隔着的不是措辞,而是一整套权利关系。
那这个 source map 到底是什么?可以把它理解成一张“压缩代码和原始代码之间的对照表”。开发者平时会用它调试构建后的 JavaScript,查一段压缩后的代码到底对应哪份原始文件、哪一行逻辑。严格来说,它不是源码本体,但一旦发布流程把它错误地带到公开包里,外部就可能顺着这张地图,把原始 TypeScript 结构重新拼出来。
背景提示:
source map不等于“整个项目源码压缩包”,但它常常已经足够把压缩产物重新指回原始文件结构。你可以先把它理解成施工图纸背后的索引页,本来是给内部调试用的,这次却跟着成品一起流出了门。

据 Axios、The Verge、Business Insider 在 2026 年 3 月 31 日 的报道,Anthropic 对外的说法大体一致:这次暴露的是 Claude Code 的内部源码,不涉及客户数据、API 密钥或模型权重,更像一次由人为失误导致的打包问题,而不是传统意义上的黑客入侵。

这也是为什么这件事值得认真看,但不值得乱喊。因为泄漏出来的虽然不是模型本身,却也绝不是“无足轻重的边角料”。
CLI 这一层,恰恰是把模型能力接进现实世界的控制层。 如果把模型比作发动机,那么 CLI、工具调用、权限提示、文件读写、会话恢复这些东西,更像是传动、刹车和仪表盘。平时最不抢镜,真出事时反而最能说明,一套产品到底是怎么从“能答题”变成“能干活”的。
所以,更准确的表述应该是:Claude Code 发生了一次源码泄漏,并被很多人误读成了“开源”。
热度确实像发布会,性质却更接近工程事故。而这场事故真正有价值的地方,不是给互联网再添一个热搜词,而是意外让外界看见了 AI 编程工具最不“性感”、却最关键的那层工程骨架。
2 我们手里到底在看什么
把“开源”这层误会拨开之后,第二个容易混淆的点也得讲清楚。外界现在看到的,不只是 Anthropic 官方 CLI 被还原出来的 TypeScript 结构;还有社区为了分析方便,把这些材料重新整理成的一套 Python-first 镜像工作区。
这两者不是一回事。前者更接近“暴露出来的原始结构”,后者更接近“研究者为了方便盘点,把结构整理成便于查询的分析环境”。它不是把 Claude Code 整个搬成了 Python,也不是说谁已经把 Claude Code 完整复刻出来了,而是把最值得研究的那部分骨架,重新排成了一份更容易看懂的说明书。

从现有材料看,这个镜像工作区里最有信息量的,不是零碎文件名,而是几组很能说明问题的数字:
-
66 个 Python 文件 -
29 个占位包,加上 1 个 reference_data/快照目录 -
207 条命令记录,但只有 141 个唯一命令名 -
184 条工具记录,但只有 94 个唯一工具名 -
22 个自动化测试通过
这些数字组合起来,其实在说同一件事:这套镜像的价值不在“功能复活”,而在“结构保存”。 它更像一套可盘点、可检索、可验证的分析骨架,让人能看懂 Claude Code 这个系统大概有哪些层、哪些入口、哪些模块如何互相咬合。
为什么说这些数字值得看?因为它们暴露了一个很真实的工程事实。
比如 207 条命令记录 并不等于真有 207 个完全不同的可执行能力,它更可能包含入口、帮助、验证、桥接和配套文件。184 条工具记录 也不等于 184 个独立“超能力”,有些只是同一工具的不同文件形态。
至于 29 个占位包,本质上是在保留原始子系统的轮廓,告诉你“这里原本有个模块,这里原本有条调用链”,不代表这些模块都已经被完整恢复。
把它再翻成人话,大概可以拆成四层:
-
真实骨架层:真正能跑起来的 Python 模块,负责 CLI 入口、路由、会话和快照装载。 -
占位层:包名和目录还在,作用更像“保留楼层结构”,而不是恢复全部装修。 -
快照层: reference_data/里的 JSON,承担事实清单的角色,告诉系统“你现在手里到底有哪些命令、工具和归档面”。 -
运行副产物层:像 .port_sessions/、__pycache__/这样的运行痕迹,更像脚印,不是主楼。
阅读提醒: 这里的“66 个 Python 文件”,说的是分析镜像工作区,不是 Anthropic 把 Claude Code 改写成了 Python。真正被外界还原出来的核心,仍然是原始 CLI 的 TypeScript 结构。
更重要的是,社区为什么要先做这样一层镜像?因为直接面对泄漏出来的原始结构,通常很难一眼看清重点。文件多、构建噪音多、路径碎、命名杂,读起来像在仓库里翻一地零件。镜像工作区的价值,就在于先把“哪些是事实源、哪些是主干、哪些是占位、哪些只是痕迹”分门别类,方便人类理解。
换句话说,大家现在看到的,更像一份经过整理的系统解剖图,而不是一台已经被重新组装完毕、可以直接上路的整车。
3 真正暴露出来的工程骨架,翻成人话是什么
如果把这套结构再往里压一层,它最值得看的主干其实并不玄学:
main.py
-> manifest / commands / tools
-> runtime / query_engine
-> session_store
-> reference_data
这段结构翻成大白话就是:先有统一入口,再装载命令和工具清单,然后决定一个请求该怎么分流、该调什么能力,接着把任务状态记下来,最后再从快照里取事实依据。
如果和 Anthropic 官方那套 How Claude Code works 文档对一下,会更容易看懂这条主干的意义。官方把 Claude Code 的核心流程总结成一个 agentic loop,也就是“代理循环”:先收集上下文,再采取行动,再验证结果,然后不断重复,直到任务结束。 这其实就是很多人嘴里那个“AI 不只是回答,而是在持续推进任务”的具体工程版。模型负责推理,工具负责行动,而 Claude Code 这套 CLI/运行时,更像把两者绑在一起的 agentic harness,也就是“代理用的外骨架和控制架”。
这里有几个词,第一次出现最好直接翻成人话:
-
命令(commands):更像“用户想做什么”的入口表达,比如查询、总结、启动、恢复、模拟。 -
工具(tools):更像“系统具体拿什么干活”的能力单元,也就是常说的 tool use,简单说就是“模型不只回答,还会调用外部工具去执行动作”。 -
路由(routing):你可以先把它理解成“分诊台”,负责判断这个请求该送进哪条流程。 -
会话(session):不是单纯聊天记录,而是一次任务的上下文账本,记着做到哪一步、前面干了什么、后面怎么续上。 -
快照(snapshot):某个时刻保存下来的结构清单,目的是让系统知道自己当前有哪些事实可依赖。 -
持久化(persistence):说白了就是“别只记在脑子里,要把状态写到磁盘里,断了还能继续”。
这组词看着像术语堆,但放在一起,其实就是一台能工作的 Agent 最基本的五脏六腑。
你给它一句“修掉登录 Bug”,它不是只回你一段代码,而是要先去找文件、读上下文、决定先跑测试还是先看报错、判断哪些工具可以动、哪些动作要申请权限、改完以后怎么验证、失败以后怎么回退。
真正让产品像“同事”而不是像“会说话的编辑器插件”的,不是模型多会背代码,而是这套循环能不能稳定转起来。
如果你只把 Claude Code 理解成“一个会写代码的聊天框”,那看到这里大概会意识到,事情远比聊天复杂。因为真正让 Agent 像工具,而不是像演示 Demo 的,往往就是这些不显山不露水的层。模型负责生成和判断,但让它能在真实环境里动起来的,是另一套编排系统。
而且这套编排,不只是“当前这一轮怎么跑”。官方文档里还专门写了 sessions、resume、fork、context window、worktree 这些能力。
翻成人话就是:Claude Code 不只要知道“现在该干嘛”,还要知道“上一次干到哪”“这次要不要另开一条分支思路”“上下文快装不下了要怎么压缩”“如果多条任务并行,怎么别把彼此弄乱”。
这些问题以前大多由工程师自己在脑子里扛,现在正被一层层产品化。
Anthropic 官方文档其实也能给这套骨架做旁证。Claude Code overview 里明确把“读代码库、编辑文件、运行命令、集成开发工具”写成了产品定义;同一套文档还写到它可以接 MCP、支持 hooks、自定义命令、agent teams、远程接力和长任务。这些能力表面上看很分散,但放进这次暴露出来的结构里就突然顺了:它们都需要底下有一层稳定的命令系统、工具层、会话层和权限层托着。
MCP 可以先理解成“让 Claude 接外部工具和外部数据源的标准接口”;hook 更像“在某个动作前后自动插入一段流程”;permission modes 则是在告诉系统“哪些动作能直接做,哪些动作必须先问人”。这些词听起来像工程黑话,但在本文里它们都指向同一个现实:Claude Code 不是只会聊天,它是一个会调用、会分流、会暂停、会恢复、会受约束的系统。
官方 CLI reference 也能印证这一点。像 claude -c、claude -r、--fork-session 这类继续、恢复或分叉会话的命令,本质上说明“会话”在 Claude Code 里不是装饰品,而是任务状态管理的核心。
--worktree 这种参数,则说明它甚至已经把“并行开工但互不污染”纳入默认工作模型;而 --agent-teams、--allowedTools、--tools、--permission-mode 这些参数,则说明它从一开始就把“多代理协作”“工具边界”“权限控制”当成了正式能力,而不是以后再补的附加件。
再往深一点看,官方 hooks 参考页其实非常说明问题。它把 Claude Code 的钩子事件拆成了很多具体生命周期节点:SessionStart、UserPromptSubmit、PreToolUse、PermissionRequest、PostToolUse、SubagentStart、TaskCreated、PreCompact、SessionEnd 等等。翻成人话就是,Claude Code 不是“模型想到什么就直接做什么”,而是每一个关键动作前后,都被插进了可观察、可拦截、可追加逻辑的事件点。
这件事非常关键。因为有了这些事件点,你才能做真正像企业系统的事,比如:
-
在执行危险命令前插一个 PreToolUse检查,拦掉rm -rf -
在出现 PermissionRequest时,把审批流接到你自己的规则里 -
在 PostToolUse之后自动跑测试或做审计记录 -
在 SubagentStart和SubagentStop时跟踪多代理任务到底是谁在干什么
这时候,Claude Code 就已经不只是“会用工具”,而是会在工具调用周围包一层治理逻辑。
这正是很多 AI 产品最难补齐、也是最花工程功夫的地方。很多人把 Agent 理解成“更主动的大模型”,但从工程上看,它更像“被治理过的行动系统”。
这件事为什么值得普通读者也看懂?因为这次泄漏真正给出的,不是某个“神秘魔法提示词”,而是一张很现实的工程账单。你会发现,一个能工作的 Agent 产品,里面装的不是单一黑箱,而是一整套会分流、会记账、会调用、会落盘、会恢复的外骨骼。
一个好用的 Agent 工具,表面看像聊天,里面更像一套微型操作系统。
还有一个容易被忽略的点,是 Claude Code 在官方文档里已经明确跑在 本地、云端、Remote Control 三种执行环境上,而且终端、桌面端、IDE、Web 这些表面入口背后,用的是同一套底层引擎。
这个细节放回这次泄漏里看,也很说明问题:它暴露出来的不是某个单点插件逻辑,而更像一层跨入口共享的控制平面。
这也解释了为什么你会同时看到命令、会话、权限、远程继续、代理协作这些看似分散的能力,它们大概率本来就是同一套系统的不同切面。
从目录体量看,utils、components、services、hooks 这些归档域都不小,这也进一步说明:Claude Code 的复杂度并不只在模型本身,工程编排本身就是大头。 很多时候,真正难的不是“模型会不会给出答案”,而是“这套产品敢不敢让模型碰文件、跑命令、串工具、改状态,还能在失控前把边界画清楚”。
4 别被“51 万行”吓到,真正重要的是能力边界
看到“51 万行源码”这个数字,最容易出现两种误判:一种是“这下什么都看光了”,另一种是“谁捡到谁就能立刻复刻 Claude Code”。至少从现有材料看,这两种判断都太快了。
先说最根本的一条边界。这次暴露出来的是 Claude Code 的 CLI 和相关工程结构,不是模型权重,不是训练数据,也不是完整的后端运行环境。 你可以把它理解成“看见了驾驶舱和传动结构”,但没有直接拿到发动机内部参数,更没有拿到整条制造流水线。
更进一步说,就算把驾驶舱都摊开,也不代表车就能直接复制。因为一个 Agent 产品的真实成熟度,通常压在三个更麻烦的地方:策略边界、状态一致性、异常恢复。 这些东西写在代码里是一部分,跑在真实环境里又是另一部分。
已确认的 4 个判断
第一,它更像一个元数据驱动的运行时骨架,不是完整业务逻辑的等比例复活。commands.py 和 tools.py 当前最擅长的是列举、检索、路由、解释,而不是把原始产品的全部真实业务逻辑逐项重演。
第二,reference_data/是事实源。 没有这些快照 JSON,这套镜像工作区的大部分能力都会失去依据。换句话说,它更像“围绕结构清单工作的分析器”,不是“直接连上真实生产能力的控制台”。
第三,29 个占位包是在保留结构,不是在补齐功能。 它们告诉你原系统的楼层布局大概长什么样,但不代表每个房间都已经复原。
第四,当前最成熟的能力是“描述架构”和“模拟路由”。 能稳定输出 summary、manifest、query、session,不等于已经实现了 207 条命令和 184 条工具背后全部真实的执行链。
别被数字骗到的 4 个提醒
第一,207 条命令记录和 184 条工具记录,是文件级索引,不是最终可用功能数。 同一个能力名字后面,可能同时挂着实现文件、入口文件、帮助文件、验证文件和桥接模块。
第二,route_prompt()更像朴素的路由器,而不是“理解一切”的 Agent 大脑。 它能把请求大致分给合适模块,不代表它已经具备完整的任务理解、规划和自治。
第三,parity_audit对齐的是静态快照,不是活系统。 它更像在证明“镜像和保存下来的结构数据对得上”,不是在证明“真实 Claude Code 已经在本地被完整复现”。
第四,22 个测试通过,说明主干骨架是稳的,但不等于生产级完成度已经成立。 主干路径能跑通,和复杂环境下的权限控制、异常恢复、状态一致性、远程执行,完全不是一个难度级别。
这里尤其值得补一层官方文档里的现实边界。Claude Code 的 checkpointing 机制确实会在每次文件编辑前做快照,支持 /rewind 恢复代码、恢复对话,或者把后半段长会话压缩成摘要,这说明它已经把“长任务偏航后怎么回退”当成正式问题在处理。但官方同时也明确写了:checkpoint 只追踪 Claude 自己的文件编辑工具改过的文件,不追踪 bash 命令造成的文件改动,也不是 Git 的替代品。
这条边界非常说明问题。它意味着 Claude Code 的“可恢复”不是魔法,而是被严格定义过的工程能力。
你让它直接编辑文件,它能帮你记账、回退;你让它通过 shell 去删文件、改目录、碰外部系统,这部分就不可能被同一种机制完整兜住。
也正因为如此,权限提示、工具边界和检查点才会同时存在,它们不是重复设计,而是各管各的风险面。
官方的 permission modes 文档也把这层现实写得很直白。Claude Code 有 default、acceptEdits、plan、auto、bypassPermissions、dontAsk 这些模式,区别不在“模型聪不聪明”,而在“哪些动作可以不问就做”。
尤其是 auto mode,它不是简单地把权限弹窗关掉,而是引入了一个单独的分类器,在每次高风险动作前检查这个动作是不是超出了用户本来的任务范围、是不是碰了不可信的基础设施、是不是可能被提示词注入带偏。
更技术一点说,官方资料里对 auto mode 的描述其实很罕见,也很值得看。它不是把所有工具结果都喂给分类器,而是有意不让分类器看工具结果,只看用户消息、工具调用和项目说明,这样做的目的,就是降低被网页内容、文件内容或工具输出中的恶意提示词“反向操控审批器”的风险。
与此同时,像 Bash(*) 这类过宽的通行规则,在进入 auto mode 时还会被暂时移除,避免“危险动作在分类器出手前就被白名单放行”。
这一步很能说明 Anthropic 在防什么。它防的不是“模型笨”,而是“模型被环境带偏”。
也就是说,Claude Code 真正面对的风险,已经不只是答错一道题,而是读了一段恶意网页、看到一个被污染的工具输出,结果被悄悄引去做一件原本不该做的事。
到了这个阶段,产品要补的就不再只是模型能力,而是策略防火墙。
如果再说得更直白一点,行数本身几乎从来不是最关键的信息。 51 万行里当然可能包含大量核心逻辑,但也一定会有界面代码、辅助模块、桥接层、工具包装、测试脚手架和工程胶水。真正决定一套系统成熟度的,从来不是“字节有多少”,而是这些字节如何把能力、边界和恢复机制组织起来。
这一点对理解 Agent 特别重要。因为今天很多人一谈 AI 产品,还在用“大模型强不强”这把尺子衡量一切。但从 Claude Code 这次暴露出来的控制层看,真正的产品难点,已经从“回答质量”明显扩展到了“行动质量”。回答质量主要看模型;行动质量则要看会不会误触工具、会不会跑偏、会不会留下坏状态、会不会中断后失忆、会不会跨界越权。后者恰恰是系统工程,而不是单纯的模型工程。
边界提示: 会跑的演示骨架,和真正能扛长任务、跨工具、跨会话、跨权限的生产运行时,中间通常还隔着一整条工程化走廊。看清骨架很重要,但看清骨架不等于已经得到生命体。
这也是为什么“Claude Code 会不会因此被立刻复制”这个问题,至少从现有公开材料看,还很难给出夸张答案。更稳妥的判断是:外界确实因此看清了它的工程思路,但真正难复制的部分,往往恰恰藏在那些没有完全暴露、或者即使暴露了也需要长期调试和组织经验才能跑顺的地方。
震撼你的,通常是行数;真正决定价值的,通常是边界。
5 真正的信号,不是 51 万行,而是 AI 编程工具正在更像系统
如果一定要从这次事件里提炼一个更大的信号,我觉得重点不是“原来 Anthropic 也写了这么多代码”,而是:成熟的 AI 编程工具,真正难的部分大概率不只在模型,而在编排。
这件事为什么重要?因为很多人直到现在,还会把 AI 编程工具理解成“更聪明的补全器”或者“更会写代码的聊天机器人”。这当然不算错,但已经不够了。至少从 Claude Code 官方文档和这次暴露出来的结构一起看,它瞄准的早就不只是“帮你写一段函数”,而是“接住一个更长、更碎、更容易失控的工程流程”。
工程世界里真正昂贵的成本,本来就不只是敲代码。更贵的是这些东西:读代码库、切上下文、查日志、调命令、跑测试、串工具、处理中断、恢复现场、留下可复用结果。也就是说,程序员最耗神的工作,往往不是“打字”,而是“在多个系统之间来回协调”。Claude Code 这次暴露出来的骨架之所以值得看,正因为它让外界第一次比较具体地看到,一套 AI 编程工具到底是怎么把这些原本碎在各处的流程,慢慢往一个系统里收。
从 Anthropic 官方文档看,这条路线其实已经写在产品表面了。它强调 long-running tasks、多端接力、远程继续会话、@Claude 接入团队协作、用 MCP 接外部系统、用 hooks 包装流程、用 agent teams 分任务、用权限模式限制危险动作。
把这些能力单独看,会觉得像一串功能清单;但和这次泄漏的骨架放在一起看,它们更像同一件事的不同表面:Claude Code 想做的,不是一个只在编辑器侧边栏里蹦答案的助手,而是一套能被委托、被约束、被恢复、被协作的工程系统。
这也是我觉得最值得普通读者关心的一点。因为它意味着 AI 编程工具下一阶段的竞争,可能不再只是“谁写代码更像人”,而是“谁更像一套完整系统”。
前一种竞争更像模型竞赛,拼的是局部能力;后一种竞争更像基础设施竞赛,拼的是结构能力。
用户最后关心的,也不会只是“它写得对不对”,还会是“它能不能稳定跑长任务、能不能跨多个工具协同、能不能在权限边界内工作、能不能中断后继续、能不能接进团队流程”。
如果把这件事再拆开一点,下一阶段的 AI 编程工具,大概率至少会在五层上拉开差距:
-
模型层:能不能理解复杂代码、做出像样判断 -
工具层:能不能稳定读文件、跑命令、接外部系统 -
状态层:会话、记忆、快照、恢复做得够不够稳 -
策略层:权限、审批、白名单、自动拦截是不是可控 -
编排层:多步骤任务、多代理协作、长链路验证能不能跑顺
从这个角度再回看 Claude Code 泄漏,最值得写的就不是“Anthropic 的代码被看到了”,而是它把这五层里面至少后四层的轮廓,意外地暴露给了外界。 而这四层,正是过去很多人只看到界面、没看到成本的部分。
更克制一点说,这次泄漏未必会立刻改写行业格局,但它确实像一次被动透明化。它让外界第一次比较清楚地看到,AI 编程工具从“会聊天”走向“能工作”,中间要补上的,不是几句提示词,而是一整层系统工程。
再往深一层看,这甚至不只是 Claude Code 的问题。它更像是在提醒整个行业:Agent 真正的分水岭,未必是谁先把模型堆得更强,而是谁先把“工具调用、状态管理、权限控制、任务恢复、协作分工”这些脏活累活做扎实。 模型当然仍然是发动机,但一辆车能不能上路,从来不只取决于发动机。
这背后还有一个更现实的行业判断。过去一年,很多 AI 编程产品还在争“谁首屏更惊艳”“谁第一次生成更顺手”;但从公开资料和这次暴露出来的骨架看,Claude Code 代表的方向更像是在争谁先成为工程流程的操作系统。
它不是只想回答问题,而是想接住任务;不是只想给建议,而是想管理执行;不是只想写代码,而是想把读、改、跑、验、停、续都包进一个受控循环里。
从这个意义上说,Claude Code 这次被动透明化之后,外界看到的其实不是一份“产品内幕”,而是一张很清楚的路线图:AI 编程工具如果真要往 Agent 走,最后拼的不会只是模型 IQ,而是工程系统 IQ。
热闹会过去,真正留下来的,往往不是“谁泄漏了源码”,而是“我们终于看清了下一代 AI 工具到底像什么”。
【结尾】
这次泄漏最值得看的,不是 Anthropic 掉了多少面子,而是 Claude Code 露出了多少工程层。
当 AI 编程工具开始比拼权限、会话、工具编排、长任务和恢复能力时,主战场其实已经悄悄从“写代码”移到了“做系统”。
而这,可能才是这 51 万行代码真正让人警觉的地方。
往期精选公众号:Hive硅基秩序
夜雨聆风