Claude Code 源码泄露:44 个未发布功能与架构设计

深度The New Stack2026年4月1日8 分钟阅读
Claude Code 源码泄露:44 个未发布功能与架构设计
Anthropic 意外泄露了 Claude Code 的源码映射文件,暴露了 44 个编译时功能开关、多智能体集群架构和后台守护进程。分析显示,其权限隔离、子智能体协调等核心设计模式与 CrewAI、Google ADK 等开源框架不谋而合。

周三,安全研究员 Chaofan Shou 发现 Anthropic 在发布 Claude Code 2.1.88 版本时,附带了一个 59.8MB 的源码映射(Source Map)文件。这类文件通常用于调试时将打包后的生产代码映射回原始源码,而这次泄露的文件包含了 1900 个文件、总计 51.2 万行未混淆的 TypeScript 代码。

Anthropic 在几小时内撤下了该 npm 包,并确认这是人为失误导致的打包问题。但镜像早已被上传至 GitHub。据 The Register 报道,原始仓库在被替换为 Python 移植版本前,已被分叉超过 4.15 万次。

随后的报道多聚焦于个别趣味功能,比如电子宠物系统、动物代号。开发者 Wes Bos 发帖称,他直接去看了加载动画的动词列表,发现了 187 个,从“沉思”(Ruminating)、“哲学思考”(Philosophising)到“喋喋不休”(Flibbertigibbeting)和“光合作用”(Photosynthesizing)。

Claude Code leaked their source map, effectively giving you a look into the codebase.

I immediately went for the one thing that mattered: spinner verbs

There are 187 pic.twitter.com/zFW3ZrVz8G

— Wes Bos (@wesbos) March 31, 2026

但真正的故事在于架构层面。 根据 VentureBeatThe Register 以及众多开发者的独立分析,泄露的代码库展示了一个生产级智能体系统,其设计模式与开源生态正在竞相构建的模式高度一致。

对于熟悉操作系统内部原理的开发者来说,这些模式会感到似曾相识:带权限检查的系统调用接口、基于能力隔离的进程分叉、用于内存管理的后台守护进程,以及用于发布策略的编译时功能开关。

Claude Code 不是一个简单的聊天包装器。泄露的源码显示它是一个智能体操作系统,其架构直接映射到 CrewAIGoogle ADKLangGraphAWS Strands 等框架中,这些正是团队们正在评估用于生产部署的模式。

工具系统:系统调用接口

Claude Code 的工具系统包含超过 40 个独立的能力模块,每个模块都有自己的权限检查门。文件读取、bash 执行、网络抓取、LSP 集成和 MCP 服务器连接都作为独立的工具存在,智能体通过统一接口调用它们。仅基础工具定义就占了 2.9 万行 TypeScript 代码。

可以将其类比为 Unix 内核中的系统调用层。用户空间程序(LLM 推理循环)从不直接接触硬件(文件系统、终端、网络)。每次交互都通过一个经过权限检查的网关。

这种架构解决了与 Kubernetes RBAC 为 Pod 级 API 访问解决的相同问题。一个能读取文件但不能执行 bash 命令的智能体,其安全配置与拥有完整 shell 访问权限的智能体是不同的。

Claude Code 在工具级别强制执行这一点,独立控制每个能力,使得不同上下文可以授予不同的权限集。例如,当 Claude Code 在一个陌生的代码仓库中操作时,工具系统可以限制 shell 执行,同时允许文件读取和搜索,从而防止智能体在不受信任的环境中运行任意代码,同时又不影响其理解代码库的能力。这是细粒度的能力安全,泄露的代码显示 Anthropic 通过 POSIX 系统几十年来使用的相同架构模式来实施它。

位于工具系统之后的 4.6 万行查询引擎(Query Engine)处理所有 LLM API 调用、流式输出、缓存和编排。它是代码库中最大的单一模块,充当内核调度器,决定批处理哪些工具调用、缓存哪些响应,以及如何在长时间运行的会话中管理上下文窗口(Context Window)。

多智能体集群与进程编排

泄露的源码显示,Claude Code 可以生成具有受限工具集的子智能体,每个都在隔离的上下文中运行。Anthropic 称此系统为“集群”(swarms),由 tengu_amber_flint 功能开关控制。该架构既支持使用 AsyncLocalStorage 进行上下文隔离的进程内队友,也支持在独立的 tmux 或 iTerm2 窗格中运行的基于进程的队友,并使用颜色编码的输出进行视觉区分。团队内存同步机制保持智能体间的协调。

这是基于能力安全的进程分叉。父智能体识别出一个可并行化的任务,生成具有其自身权限子集的子智能体,并收集它们的结果。子智能体无法提升自己的访问权限,只能在父智能体定义的边界内操作。

这与容器编排的类比是直接的。在 Kubernetes 中,控制器生成具有特定资源限制和 RBAC 绑定的 Pod。在 Claude Code 中,协调器生成具有特定工具权限和上下文边界的子智能体。

CrewAI 通过其“团队”(crew)抽象达到了类似的模式,其中具有定义角色的智能体在共享任务上协作。Google ADK 使用分层智能体树,根智能体将任务委托给子智能体。LangGraph 将相同的流程建模为有向图中的节点,具有明确的状态转换。这四个系统解决的是同一个问题:复杂任务需要多个并行运行的推理线程,它们共享选择性上下文,并合并输出。Anthropic 在闭源 CLI 中构建了它的版本,而开源生态则使用不同的隐喻构建了等效版本。模式的趋同比实现细节更重要。

KAIROS 与梦想系统:后台服务

泄露中最具揭示性的功能是 KAIROS,这是一个在源码中被提及超过 150 次的自主守护进程模式。KAIROS 将 Claude Code 从一个请求-响应工具转变为一个持久化的后台进程。它维护仅追加的每日日志文件,接收周期性的 <tick> 提示,让其决定是主动行动还是保持静默,并强制执行 15 秒的阻塞预算,确保主动操作永远不会中断开发者工作流超过短暂停顿的时间。

可以把 KAIROS 想象成 AI 智能体的 systemd 服务。它启动、持久化、监视并按自己的时间表行动。当处于活动状态时,它使用一种称为“简报”(Brief)的特殊输出模式,提供简洁的响应,适合一个不应淹没终端的持久助手。

配套功能 autoDream 作为分叉的子智能体运行在 services/autoDream/ 目录中。在空闲期间,它通过合并跨会话的观察、消除逻辑矛盾并将试探性笔记转化为确认事实来执行记忆巩固。这是智能体状态的垃圾回收。操作系统运行后台进程来整理内存碎片、合并日志和清理缓存。autoDream 对智能体在连续数天或数周使用中积累的知识做着同样的事情。

目前讨论的主要开源智能体框架都尚未发布可比的背景自主功能。CrewAI、LangGraph、Google ADK 和 AWS Strands 都运行在请求-响应或工作流触发模式下。最接近的等效物是 Nous Research 的 Hermes Agent,它最近添加了具有会话记忆的持久化多智能体配置文件,但没有实现 KAIROS 所具有的主动观察和巩固循环。在 Anthropic 隐藏在功能开关后构建的内容与开源生态目前提供的内容之间,差距在这个类别中最为明显。

编译时功能开关:发布策略

泄露的源码包含 44 个编译时功能开关(Feature Flags)。其中至少有 20 个控制着已构建并测试过、但未出现在外部发布版本中的能力。KAIROS、协调器模式、带有完整按键通话接口的语音模式、ULTRAPLAN(一种将复杂任务卸载到运行 Opus 4.6 的云容器中长达 30 分钟的远程规划模式),以及 Buddy(拥有 18 个物种和稀有度等级的电子宠物式伴侣)都位于在外部构建中编译为 false 的开关之后。

这是成熟的平台工程团队发布软件的方式。Chrome、Android 以及 Google 和 Meta 的大型基础设施项目都使用编译时功能开关来将功能完成与功能发布解耦。

工程师持续将完成的代码合并到主分支。产品经理为构建目标、用户细分或部署环选择性地启用开关。用户看到的发布节奏(每两周一次新的 Claude Code 功能)并不反映开发节奏,后者要快得多。代码库还区分了“仅限内部”(Ant-only)工具(专为 Anthropic 员工加载)和面向所有用户的外部工具。

内部工具包括遥测仪表板、模型切换覆盖和“卧底模式”(Undercover Mode)系统,该系统防止 Claude 在为公共开源仓库做贡献时泄露 Anthropic 的内部代号。

Anthropic built an entire subsystem to prevent its AI from leaking internal details in git commits, then leaked the subsystem itself through a build configuration oversight.

讽刺的是,Anthropic 构建了整个子系统来防止其 AI 在 git 提交中泄露内部细节,却因为一个构建配置疏忽泄露了该子系统本身。

源码还暴露了“卧底模式”旨在隐藏的内部模型代号。根据对泄露的迁移目录的分析,“Capybara”指的是 Claude 4.6 的一个变体(即之前报道中称为“Mythos”的模型),“Fennec”对应 Opus 4.6,而一个名为“Numbat”的未发布模型仍在测试中。内部基准测试显示,最新的 Capybara 迭代有 29-30% 的错误声明率,较早期版本的 16.7% 有所退步,同时还配备了一个“自信度平衡权重”,旨在防止模型过于激进地重写代码。

后续影响

Claude Code 源码的意外发布提供了一个罕见的架构基准。权限控制的工具系统、多智能体集群、用于内存管理的后台守护进程和编译时功能开关并非 Anthropic 独有的发明。CrewAI、Google ADK 和 LangGraph 通过完全独立的开发路径,在能力隔离和智能体协调方面得出了类似的解决方案。这三个层面的趋同证实,无论由谁构建,这些模式正在成为生产级智能体系统的标准架构。

跨会话的背景自主性和记忆巩固是 Claude Code 领先幅度最大的领域。目前审查的智能体框架中,没有一个发布了任何可与 KAIROS 或 autoDream 相媲美的功能。既然成千上万的开发者有了一个具体的参考实现可供研究,这个差距将会更快地缩小。

架构细节引人入胜,安全影响则立竿见影。泄露的源码暴露了 Claude Code 确切的权限强制执行逻辑、其钩子编排路径,以及它用于决定何时在陌生仓库中执行代码的信任边界。

“Your build pipeline is now part of your attack surface, and a single misconfigured ignore file can turn your most sophisticated product into an open blueprint.”

攻击者现在有了针对这些特定机制制作利用仓库的路线图。时机让情况更糟。在泄露发生几小时内,广泛使用的 Axios npm 包发生了另一起供应链攻击,向 1.14.1 和 0.30.4 版本注入了远程访问木马。据 VentureBeat 报道,任何在 3 月 31 日 00:21 至 03:29 UTC 之间通过 npm 安装或更新 Claude Code 的人,都可能拉取了受感染的依赖项。

Anthropic 此后已将其原生安装程序指定为推荐安装方法,完全绕过了 npm 依赖链。Bun 的打包器默认生成源码映射文件,除非显式禁用,这暗示了 59.8MB 的 .map 文件如何最终出现在 npm 包中的可能机制,尽管 Anthropic 尚未确认导致此问题的具体构建配置。

对于每个通过包管理器发布 AI 智能体的团队来说,教训是直白的:你的构建流水线现在已成为攻击面的一部分,一个配置错误的忽略文件就能让你最复杂的产品变成公开的蓝图。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

Simon Willison 正在重构 LLM Python 库的抽象层,以支持服务器端工具执行等新功能。他利用 Claude Code 分析了四大 LLM 提供商的客户端库,生成了用于测试的 curl 命令和 JSON 输出。这些调研材料已开源,旨在帮助设计更通用的 API 抽象。

深度Simon Willison·4月5日·1 分钟

智能体技能——包含程序性知识和可执行资源的结构化包,供智能体在推理时动态加载——已成为增强 LLM 智能体的可靠机制。然而,推理时技能增强存在根本性限制:检索噪声引入无关指导,注入的技能内容带来大量 token 开销,而模型从未真正习得它所遵循的知识。我们提出一个问题:技能是否可以被内化到模型参数中,使其在无需任何运行时技能检索的情况下实现零样本自主行为?我们提出 Skill0,一个专为技能内化设计的上下文强化学习框架。Skill0 引入了一种训练时课程,从提供完整技能上下文开始,逐步撤除。技能按类别离线分组,并与交互历史一起渲染为紧凑的视觉上下文,教授模型工具调用和多轮任务完成。动态课程机制…

深度·4月5日·17 分钟

评论