Claude Code源码泄露:51万行代码暴露的AI Agent真相

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

核心观点

Anthropic因npm打包失误意外泄露51.2万行Claude Code源码,这不仅是史上最大规模的代码泄露事件,更是一次珍贵的"架构公开课"。顶级AI Agent的核心壁垒从来不是模型本身,而是完整的工程runtime系统。

事件回顾:一个.map文件引发的"开源"风暴

2026年3月31日,区块链安全公司Fuzzland研究员Chaofan Shou在X平台率先爆料:Anthropic发布的npm包@anthropic-ai/claude-code版本2.1.88中,意外包含了一个约60MB的cli.js.map文件。

这个看似普通的source map文件,实际上包含了完整的源码映射——sources数组记录了文件路径,sourcesContent数组则存储了对应的完整源码内容。任何人只需下载这个JSON文件,就能完整提取出所有原始代码。

泄露规模令人咋舌:

  • 1906个TypeScript/TSX源文件
  • 51.2万行代码
  • 40+个工具模块
  • 数项尚未发布的核心功能

更值得玩味的是,这并非Anthropic近期首次犯错。就在3月26日,Fortune报道Anthropic因CMS配置错误意外公开了近3000个文件。5天后又是打包失误,整个Claude Code源码送了出去。一次是意外,两次就是模式了。

根因分析显示,这次泄露很可能踩中了Bun的已知坑。GitHub issue #28001早在三周前就被报告,但至今未修复。Claude Code恰好使用Bun构建,这才导致生产构建不该带出去的source map被打进了最终产物。

技术架构:五层系统揭示Agent真相

泄露的源码为外界提供了迄今最完整的Claude Code架构视图。还原后发现,Claude Code采用了清晰的五层架构设计:

第一层:入口与交互层

以React + Ink框架构建终端界面,运行于Bun运行时。main.tsx作为主入口文件长达4683行,负责CLI主入口与主界面调度、命令解析和状态管理。

第二层:对话编排层

QueryEngine.ts(1295行)和query.ts(1729行)构成对话编排核心,负责查询执行引擎和对话请求与主流程编排。这一层处理消息压缩、权限与中断恢复,是整个系统的"大脑皮层"。

第三层:提示词与记忆层

constants/prompts.ts和utils/claudemd.ts管理System Prompt、CLAUDE.md和动态上下文注入。这里采用了业界领先的"静态/动态分离"设计——SYSTEM_PROMPT_DYNAMIC_BOUNDARY常量将系统提示词拆成静态和动态两部分,静态部分全局缓存以节省计算开销。

第四层:工具与执行层

包含40+个独立模块,涵盖文件读写、Bash命令执行、LSP协议集成及子代理生成能力。Tool.ts(792行)定义了工具基类与工具抽象,构成一个功能完备的"万能工具箱"。

第五层:底层服务层

处理模型API、遥测、任务持久化、插件和后台agent能力。这一层是整个系统的"基础设施"。

这套架构最打动人的地方,不是某句神prompt,而是整套运行时细节:怎么切prompt静态/动态边界、怎么管理记忆优先级、怎么给工具做权限与模式控制、怎么把任务持久化、怎么跑多agent、怎么自动压缩上下文。

隐藏功能:彩蛋背后的产品野心

泄露代码中最令人意外的,是数项从未公开发布的功能。这些"彩蛋"不仅有趣,更揭示了Anthropic的真实产品路线图。

KAIROS:迈向7x24小时自主Agent

代号Kairos的模式是其中最引人瞩目的功能。代码显示,这是一个具备持久生命周期的自主守护进程,支持后台会话与记忆整合。相关feature flag包括:

  • KAIROS_DREAM:夜间记忆整合
  • KAIROS_GITHUB_WEBHOOKS:GitHub webhook监听
  • KAIROS_PUSH_NOTIFICATION:推送通知
  • KAIROS_CHANNELS:多频道通信

这意味着Claude可以化身为一个"永不离线"的AI智能体,在后台默默处理任务并不断加深对项目的理解。Anthropic的野心已经超越了"一问一答式agent",而是想做"个人开发代理人"。

Buddy System:程序员式恶趣味

代码中竟然内置了一个完整的电子宠物系统!从buddy/types.ts可以看到:

  • 18个物种(duck, goose, blob, cat, dragon等)
  • 5个稀有度等级(common到legendary)
  • 3种变体(hat/eye/shiny)
  • 5种属性(DEBUGGING/PATIENCE/CHAOS/WISDOM/SNARK)

最妙的是,所有物种名都没有直接写字面量,而是统一用String.fromCharCode(0x…)十六进制编码。原因竟然是其中一个物种名"capybara"撞上了内部模型代号扫描器的敏感词。

这就是典型的"大厂彩蛋味":不是随手写的玩笑功能,而是真的考虑了构建链、扫描器、内部代号约束之后,认真做出来的玩笑功能。

Undercover Mode:员工专属的"隐身衣"

utils/undercover.ts暴露了一个明确只给USER_TYPE=ant使用的内部逻辑。核心规则是:Anthropic员工在公开/开源仓库里使用Claude Code时,会自动进入Undercover Mode,而且没有force-off。

禁止泄露的信息包括:

  • 内部模型代号(Capybara、Tengu等)
  • 未发布模型版本(opus-4-7、sonnet-4-8)
  • 内部项目名(claude-cli-internal等)
  • "Claude Code"字样
  • 任何提到自己是AI的表述
  • Co-Authored-By等attribution

这段代码本身就很讽刺:Anthropic花大量工程资源防止AI输出泄密,结果在最传统的发布环节把整套源码都送了出去。

Fake Tools:反蒸馏的"数字迷彩"

代码中还发现了一个让人很难不多想的机制:Fake Tools反蒸馏系统。当反蒸馏开关打开时,Claude Code会在API请求中注入虚假的工具定义。

这意味着什么?如果有竞争对手试图通过录制API流量来训练自己的模型,拿到的将是被污染的数据。就像军事上的"数字迷彩",让敌方的侦察系统看到的是扭曲的信号。

更令人震惊的是,社区在代码中发现了多达44个编译时feature flags——这意味着有大量已经做完但尚未对外开放的功能,静静藏在开关后面。

六大技术杀手锏:不靠模型靠工程

AI大牛Sebastian Raschka深度拆解源码后,总结出Claude Code六大技术杀手锏:

1. 实时仓库上下文加载

启动时自动读取主分支、当前分支、最近提交记录,再加上CLAUDE.md,构建出一个动态的项目全景。这是网页版上传文件根本做不到的。

2. 激进的Prompt缓存复用

系统提示词被边界标记拆成静态和动态两部分。静态部分全局缓存,不用每次重建重处理,省下大量计算开销。源码注释提到,动态agent list会吃掉"~10.2% of fleet cache_creation tokens"。

3. 专用工具链

有专用的Grep工具(比在Bash里直接跑grep权限控制更好)、专用的Glob工具做文件发现、还有LSP工具做调用层级分析和引用查找。网页版把代码当静态文本看,Claude Code把代码当活的项目看。

4. 极致压缩上下文膨胀

文件读取去重(文件没变就不重新处理)、工具结果过大时写磁盘只留预览+引用、长上下文自动截断和摘要压缩。源码里明确写着:“The conversation has unlimited context through automatic summarization.”

5. 结构化会话记忆

Claude Code为每次对话维护一个结构化Markdown文件,包含会话标题、当前状态、任务规格、文件与函数、工作流、错误与修正、代码库文档、学习笔记、关键结果、工作日志。

6. Fork和子Agent并行

分叉出的Agent复用父级缓存,同时感知可变状态。这让系统可以在不污染主Agent循环的情况下做摘要、记忆提取或后台分析。

Claude Code之所以比网页版好用这么多,靠的不是模型本身,而是这套软件"外壳"。实时上下文加载、激进缓存复用、专用工具链、上下文压缩、结构化记忆、子Agent并行,这些工程优化的总和才是真正的护城河。

多Agent架构:Coordinator、Fork和四种内置Agent

泄露代码中最令人兴奋的,是对多Agent的支持深度远超外界想象。

Coordinator Mode:从执行者到调度者

当COORDINATOR_MODE打开时,主agent的角色不再是"自己干活",而更像一个PM/tech lead:拆解任务、分派子任务、收集结果、合并产出、控制允许使用的工具集合。

源码里甚至还有COORDINATOR_MODE_ALLOWED_TOOLS这样的限制集合,说明调度态和执行态拿到的工具并不完全一样。

Fork Subagent:临时分身机制

FORK_SUBAGENT更像一种轻量级的"开分身"机制。需要独立上下文、临时探索某个分支任务时,主agent可以fork一个子agent出去干活,再把结果回收。

四种内置Agent

从built-in agents相关代码里,可以明显看到Claude Code至少已经内置了几类角色:

  • Plan Agent:负责读需求、做规划、给出执行路径
  • Explore Agent:负责探索代码库、搜集线索
  • Verification Agent:专门找bug、做破坏式验证
  • Claude Code Guide Agent:更像产品/环境解释器

这说明Anthropic的多Agent策略,核心并不是做出一堆人格,而是把软件工程流程拆成不同认知工位。

社区反应:开发者集体"开箱行动"

事件曝光后的传播速度令人咋舌。按照保留的仓库截图统计:

  • 昨晚8点多:全网传播最广的相关仓库约18.7k Stars、27.1k Forks
  • 到今天早上10点:已冲到70.3k Stars、71.2k Forks

只过一个晚上,Star暴涨约5.16万,接近2.8倍,而且还在持续增长中。Fork数更是碾压Star数,全网60k人连夜"搬运"代码。

这已经不是普通的技术围观,而是一场全网开发者集体参与的"开箱行动":有人负责提取,有人负责镜像,有人负责分析,有人负责复刻。等平台开始补救,传播本身已经变成新的事实。

Anthropic反应迅速,通过DMCA版权投诉直接封杀了所有分享源码的链接。GitHub动作很快,所有涉及TypeScript原始代码的页面瞬间变黑。

更戏剧化的是,泄露者Sigrid Jin(instructkr)在极短时间内完成了一次罕见的"换壳手术":

  1. 先将整个庞大的TypeScript代码全量改写为Python
  2. 几小时后,整个代码又被Rust重构了一遍

instructkr用了team模式做并行的代码review,还用了team模式做并行的代码review,还用了team模式做并行的代码review,还用了ralph模式跑带有架构师级别验证的持续执行循环。最终的成果是一个符合"净室设计"(clean-room)标准的Python重写版,完美复刻了Claude Code的AI智能体框架的架构模式,绝对没有抄袭任何专有源码。

这意味着,Anthropic此前的版权投诉在它面前瞬间失效。这个名为claw-code的新仓库,不包含任何一行原有的TypeScript。

闭源的幻觉:代码不是护城河

过去几年,AI公司有一个默认逻辑:核心东西藏在闭源产品里,别人看不见,也就难以复制。

这次事件狠狠打碎了这个幻想。在现实世界里,很多"看不见"并不等于真正安全,它只是因为还没发生事故。一旦分发流程、工件管理或发布规范哪里失手,原本以为藏得很深的工程细节,就可能在24小时内被整个行业围观。

这会逼着所有AI公司重新思考:真正的壁垒到底在哪里?

从这次事件看,答案越来越清楚:真正难复制的,不会只是代码本身。更难复制的,是模型能力、训练和推理资源、产品迭代速度、组织效率、分发能力,以及把这些东西长期整合成用户体验的能力。

源码被看见当然会带来损失。但如果一家公司的优势主要建立在"别人没看过这份代码"之上,那反过来也说明,它的护城河可能没有自己想象得那么深。

AI安全最后还是败给了工程纪律——不是只有jailbreak、prompt injection、越权调用才叫安全;source map该不该带出去、调试工件该不该进生产包、发布链路是否可靠,同样是安全。越高级的AI产品,越离不开最基本的工程纪律。

行业影响:Agent生态或迎加速拐点

从产业影响角度审视,此次事件的意义可能超越一次技术事故本身。

顶级AI Agent的完整工程实现方案意外公开,将显著降低该领域的知识壁垒。开发者得以直接参照Claude Code的架构设计、提示词逻辑与工具调用机制进行学习与借鉴,缩短独立研发的探索周期。

这意味着接下来这条赛道会卷得更快,而且不是慢慢卷,是明显加速。当一个头部产品的工程实现被行业看过一遍后,很多团队对"AI coding agent应该怎么做"会迅速形成共识。

产品形态会收敛,大家不再在最底层的问题上浪费时间。工程套路会扩散,从上下文管理到工具编排,从权限边界到失败恢复,都有了现成范式可以参考。

然后竞争会往更上层走:谁的模型更强,谁的执行更稳,谁的失败率更低,谁的成本更可控,谁的交互更顺手。

上下文压缩怎么做?Agent长期记忆怎么管理?多Agent怎么防偷懒?MCP协议怎么安全调度?这些原本带着机密色彩的工程问题,现在全有了公开答案。

或许过几天,各家公司的Agent迎来大版本更新也不奇怪了。

个人思考:从"聊天机器人"到"Agent操作系统"

看完源码解读之后,我最大的感受不是"原来它藏了这么多功能",而是两个层面的观察:

第一,这不是一次普通泄露,而是被动公开课。

真正的问题已经不是"Claude Code这次到底泄了多少代码",而是"当一个头部AI agent的工程实现被全行业看过一遍之后,下一波追赶会来得有多快?"

第二,Anthropic确实在把coding agent当成一个新操作系统来做。

  • 模型只是CPU
  • Prompt是内核策略
  • 工具是外设
  • CLAUDE.md是层叠配置
  • Coordinator和KAIROS是进程系统
  • Buddy则像那个写在About页面里、让你确认这东西真有人每天在用的签名

这也解释了为什么今天大家讨论Claude Code,已经不能只讨论模型效果。真正的竞争,正在从"谁更会答题",切换到"谁能把agent变成可持续运行的软件系统"。

此次泄露虽未波及Claude核心模型权重或用户数据,但完整暴露了Claude Code的内部架构逻辑、系统提示词设计与工具调用机制。业内人士认为,此事件将实质性压缩AI Agent工程化的知识门槛,加速整个开发者生态的竞争演化。

Anthropic能做的,大概只剩下祈祷下次发包前,有人记得跑一遍npm pack --dry-run。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐