乐于分享
好东西不私藏

Claude Code 51万行源码意外泄露!深扒Anthropic核心架构与多个未发布隐藏功能

本文最后更新于2026-03-31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Claude Code 51万行源码意外泄露!深扒Anthropic核心架构与多个未发布隐藏功能

快速摘要:2026331日,Anthropic 旗下的 AI 编程工具 Claude Code 的完整源代码因 npm 包中误带 Source Map 文件而意外泄露,超过 1900 个文件、51.2万行 TypeScript 代码被公之于众。泄露内容涵盖了工具系统、查询引擎、多智能体协调器、IDE 桥接层等核心模块,还曝光了多个未发布的隐藏功能——包括代号为"Kairos"的常驻智能体模式、"Buddy"电子宠物系统、以及专门防止内部信息外泄的"Undercover Mode"本文将从泄露原因、技术架构、隐藏功能、安全启示四个维度进行详细拆解,往下看有更详细的技术分析和操作要点。本文由 莫潇羽@源码七号站原创撰写,转载请注明出处。

一、事件始末:一个 .map 文件引发的”开源”风暴

2026年3月31日,安全研究员 Chaofan Shou 在检查 npm 注册表中 @anthropic-ai/claude-code 这个公开包时,发现了一个异常文件。除了常规的可执行文件 cli.js 之外,包里赫然多出了一个体积高达 59.8 MB 的 cli.js.map 文件。

对于不熟悉前端工程化的朋友,这里需要解释一下 Source Map 的概念。在现代 JavaScript/TypeScript 项目中,源代码在发布前通常会经过编译、打包、压缩等处理步骤,最终输出的是高度混淆的生产代码。Source Map 文件(扩展名为 .map)是一种映射文件,它能将压缩后的代码精确地映射回原始源代码,方便开发者在出现问题时进行调试。换句话说,只要拿到了 .map 文件,就可以近乎完整地还原出原始代码。

正常情况下,Source Map 文件绝不应该出现在生产环境或公开的 npm 包中——它只应存在于开发环境中用于调试。但这次,Anthropic 在构建发布流程中出现了配置疏漏,导致这个 .map 文件被一并打包到了公开的 npm 注册表中。更关键的是,这个 Source Map 文件引用了存储在 Anthropic R2 存储桶中的未混淆 TypeScript 源代码,使得任何人都可以通过该映射直接下载到完整的 src/ 目录。

消息一出,开发者社区瞬间炸锅。短短数小时内,就有人将处理好的源代码上传到了 GitHub 上的公开仓库。仓库地址为 https://github.com/instructkr/claude-code莫潇羽@源码七号站 已验证该地址有效),星标数迅速飙升。Reddit、Hacker News 等技术社区的讨论热度也急速攀升,全球开发者纷纷下载、分析、讨论这份意外曝光的代码。

Anthropic 方面在发现泄露后迅速做出了补救措施——推送了新的 npm 更新以移除 Source Map 文件,并从注册表中删除了早期版本。但正如技术圈那句老话所说:”互联网没有删除键”,GitHub 上的备份已经被永久保存下来了。

值得一提的是,这并非 Anthropic 在短期内的首次信息泄露。就在五天前的3月26日,一个 CMS 配置错误导致了未发布的”Claude Mythos”模型相关细节、博客文章草稿等大量内部资产被公开访问。连续两次安全事件,无疑给这家以安全和负责任著称的 AI 公司带来了不小的尴尬。


二、泄露的技术根因:npm 发布流程中那些容易踩的坑

理解这次泄露的根因,对于所有从事 Node.js 开发的工程师来说都是一堂宝贵的安全课。下面 莫潇羽@源码七号站 带大家从技术层面详细剖析这次事故是如何发生的。

2.1 Bun 构建工具的默认行为

Claude Code 使用 Bun 作为运行时和构建工具。Bun 的打包器(bundler)在默认配置下会自动生成 Source Map 文件,除非开发者显式地关闭这一选项。这意味着如果你在使用 Bun 进行项目构建时没有特别注意,.map 文件会默认存在于构建产物中。

对于使用 TypeScript 编译器(tsc)的项目,相关配置项是 tsconfig.json 中的 sourceMap 和 declarationMap 字段:

// tsconfig.json 中关闭 Source Map 生成{  "compilerOptions": {    "sourceMap": false,    "declarationMap": false  }}

而对于 Bun 的 bundler,则需要在构建脚本中明确指定不生成 Source Map。这个看似简单的配置项,就是这次事故的技术根因。

2.2 npm 发布机制的”陷阱”

npm 在决定哪些文件会被打包发布时,遵循一套特定的优先级规则。简单来说,有三种方式控制发布内容:

第一种是依赖 .gitignore 文件。如果项目中没有 .npmignore 文件,npm 会读取 .gitignore 的内容来决定排除哪些文件。但问题在于,构建产物(如 .map 文件)通常不会出现在 .gitignore 中——因为它们本来就不存在于源码仓库里,是在 CI/CD 构建过程中动态生成的。

第二种是使用 .npmignore 文件。这个文件专门用于告诉 npm 哪些文件不应被打包。但需要注意一个重要细节:如果项目中同时存在 .npmignore 和 .gitignore,npm 只会读取 .npmignore 而完全忽略 .gitignore。这是一个非常容易出错的地方。开发者可能更新了 .gitignore 却忘记同步更新 .npmignore,导致敏感文件被泄露。

第三种是在 package.json 中使用 files 字段做白名单。这是最安全的做法——只有明确列在 files 数组中的文件才会被发布。采用白名单策略(而非黑名单策略)可以从根本上防止意外文件被包含进 npm 包中。

// package.json 中使用 files 字段做白名单{  "name": "@your-org/your-package",  "files": [    "dist/cli.js",    "README.md"  ]}

在 Anthropic 的这次事故中,.map 文件应该是在构建阶段被生成后,由于发布配置(.npmignore 或 files 字段)不够严谨,被一同打包进了 npm 包中。

2.3 发布前自检的最佳实践

为了避免类似问题,每位 npm 包维护者在执行 npm publish 之前,都应该养成使用 npm pack --dry-run 命令进行预检查的习惯:

# 在正式发布前,先查看将要包含的所有文件npm pack --dry-run# 检查是否有 .map 文件混入npm pack --dry-run 2>&1 | grep "\.map$"

这条命令会列出所有将要被打包的文件,让你在正式发布之前有机会发现并排除不应公开的内容。如果你在输出中看到了任何 .map 文件或其他敏感文件,就应该立即修正配置后再发布。

此外,在 CI/CD 流程中也应当加入自动化检查步骤,确保每次自动发布时不会携带调试文件或其他敏感资料。比如可以在发布脚本中增加一个校验环节:

#!/bin/bash# 发布前自动检查是否包含 .map 文件MAP_COUNT=$(npm pack --dry-run 2>&1 | grep -c "\.map$")if [ "$MAP_COUNT" -gt 0 ]; then  echo "错误:检测到 $MAP_COUNT 个 .map 文件将被发布,请检查构建配置!"  exit 1fiecho "检查通过,准备发布..."npm publish

三、Claude Code 技术架构全景解读

泄露的代码让外界第一次有机会窥探到 Claude Code 的内部架构。莫潇羽@源码七号站 在仔细研读了多个技术分析资料后,为大家梳理出以下核心架构信息。从外部看,Claude Code 只是一个终端里的 AI 编程助手;从内部看,它是一个高度模块化、精心设计的大型工程系统。

3.1 整体技术栈

Claude Code 的技术选型非常有意思。根据泄露的代码结构和此前 Anthropic 工程师的公开分享,这个项目选择了以下核心技术栈:

开发语言选用 TypeScript,这是整个项目的主力语言,总代码量约 51.2 万行,分布在超过 1900 个文件中。运行时选用 Bun,而非更常见的 Node.js。Bun 提供了更快的启动速度和原生的 TypeScript 支持,对于一个需要频繁启动的 CLI 工具来说,这是一个务实的选择。终端 UI 框架选用 React + Ink,Ink 是一个让你能够用 React 组件来构建命令行界面的库,底层使用 Yoga 布局引擎进行终端内的弹性布局。CLI 解析框架选用 Commander.js,这是 Node.js 生态中最成熟的命令行参数解析库之一。

为什么要用 React 来写终端界面?这在很多人看来可能有些”大材小用”,但 Anthropic 的工程团队对此有明确的解释。他们提出了一个叫做”On Distribution”(在分布内)的概念——选择 AI 模型本身已经非常擅长的技术栈。TypeScript 和 React 是大语言模型训练数据中覆盖率非常高的技术,因此 Claude 模型对这些技术的理解和生成能力都很强。Anthropic 的工程师曾公开表示,Claude Code 中大约 90% 的代码是由 Claude 自己编写的。选择模型”擅长”的技术栈,使得 AI 能够更高效地参与甚至主导自身代码的迭代开发。

3.2 源码目录结构详解

泄露的源码展示了一个层次分明的目录结构,下面是核心部分的梳理:

src/├── main.tsx              # 入口文件,Commander.js CLI 解析 + React/Ink 渲染初始化├── commands.ts           # 命令注册表├── tools.ts              # 工具注册表├── Tool.ts               # 工具类型定义(约 29,000 行)├── QueryEngine.ts        # LLM 查询引擎(约 46,000 行)├── context.ts            # 系统/用户上下文收集├── cost-tracker.ts       # Token 消耗与成本追踪├── commands/             # 斜杠命令实现(约 50 个)├── tools/                # 智能体工具实现(约 40 个)├── components/           # Ink UI 组件(约 140 个)├── hooks/                # React Hooks├── services/             # 外部服务集成├── screens/              # 全屏 UI 界面(Doctor 诊断、REPL 交互等)├── types/                # TypeScript 类型定义├── utils/                # 工具函数├── bridge/               # IDE 桥接层(连接 VS Code / JetBrains)├── coordinator/          # 多智能体协调器├── plugins/              # 插件系统├── skills/               # 技能系统├── keybindings/          # 快捷键配置├── vim/                  # Vim 模式支持├── voice/                # 语音输入├── remote/               # 远程会话├── server/               # 服务器模式├── memdir/               # 持久化记忆目录├── tasks/                # 任务管理├── assistant/            # 助手模式(含 Kairos 相关功能)└── buddy/                # 电子宠物系统

这个目录结构透露出的信息量非常大。首先可以看到,这不仅仅是一个简单的”AI 聊天套壳”,而是一个具备完整工具链、多智能体协同能力、IDE 深度集成、以及多种交互模式的综合性开发平台。

3.3 核心模块深度剖析

接下来,让我们逐一深入了解 Claude Code 最核心的几个模块。

(一)查询引擎 QueryEngine.ts —— 整个系统的”大脑”

QueryEngine.ts 是整个代码库中最庞大的单一模块,代码量达到了惊人的约 46,000 行。它承担了 Claude Code 与大语言模型(LLM)交互的所有核心逻辑,可以说是整个系统的”大脑”。

这个模块负责的核心功能包括:管理所有与 Anthropic API 的通信,包括请求构建、响应解析和流式传输处理;精确追踪每次交互中的 Token 消耗,这对于成本控制至关重要;实现复杂的”工具调用循环”——当模型判断需要使用某个工具时,QueryEngine 会执行该工具、收集结果,然后将结果反馈给模型进行下一轮推理,如此循环直到任务完成;处理”思维链”(Chain of Thought)模式,支持模型的扩展思考能力;以及全面的重试逻辑和错误处理机制,确保在网络波动或 API 限流等场景下的稳健运行。

从泄露的代码中可以看到,QueryEngine 还支持多种 API Beta 特性的协商。在 constants/betas.ts 文件中,列出了 Claude Code 与 API 协商使用的所有 Beta 功能标识:

// constants/betas.ts 中的 Beta 功能标识(部分)'interleaved-thinking-2025-05-14'    // 交错思考模式'context-1m-2025-08-07'              // 百万 Token 上下文窗口'structured-outputs-2025-12-15'      // 结构化输出'web-search-2025-03-05'              // 网页搜索'advanced-tool-use-2025-11-20'       // 高级工具使用'effort-2025-11-24'                  // 推理力度控制'task-budgets-2026-03-13'            // 任务预算管理'prompt-caching-scope-2026-01-05'    // 提示词缓存范围控制'fast-mode-2026-02-01'               // 快速模式

这些标识揭示了 Anthropic 在 API 层面正在开发和测试的诸多前沿特性,比如百万 Token 的超长上下文窗口、任务预算管理机制等。

(二)工具系统 Tools —— 40 多个能力模块的”万能工具箱”

Claude Code 的工具系统采用了类似插件的架构设计。每一个独立的能力——无论是读写文件、执行 Bash 命令、搜索代码库还是进行网页抓取——都被封装成一个独立的、具有权限控制的工具模块。整个工具基础类型定义(Tool.ts)就有约 29,000 行代码,可见其复杂程度。

根据泄露的代码和公开的 SDK 文档,Claude Code 内置的工具大致涵盖以下几个大类:

文件操作类工具包括文件读取(Read)、文件写入(Write)、文件搜索(Grep,基于 ripgrep 实现,支持正则表达式)、目录列表(ListDir)等。这些工具让 Claude 能够像人类开发者一样浏览和修改项目文件。

命令执行类工具以 Bash 工具为核心,允许 Claude 在终端中执行各种系统命令。通过 Bash 这个”万能适配器”,Claude 可以调用任何人类开发者常用的命令行工具——git、npm、docker、make 等等。这种设计哲学的精妙之处在于:与其为每个外部工具编写专门的集成插件,不如直接赋予 AI 使用终端的能力,就像给它一双可以操作键盘的手。

代码智能类工具中最值得关注的是 LSP(Language Server Protocol)集成。LSP 是一种用于编辑器和语言服务器之间通信的开放协议,Claude Code 通过集成 LSP 可以获得实时的代码分析能力——包括类型检查、引用查找、符号重命名等。这让 AI 的代码理解能力远超简单的文本模式匹配。

网络相关工具包括网页获取(WebFetch)和网页搜索(WebSearch),让 Claude 能够在编码过程中查阅在线文档和搜索技术资料。

子智能体工具(AgentTool)允许 Claude 在需要时生成子智能体来处理特定子任务。这个设计实现了任务的分治策略——当面对一个复杂的大型任务时,主智能体可以将其分解为多个子任务,分别委派给子智能体处理,最后汇总结果。

此外还有笔记本编辑(NotebookEdit,用于操作 Jupyter Notebook)、任务列表管理(TodoWrite)、后台任务管理等工具。

每个工具都配有权限控制机制。 这是 Claude Code 安全架构中极其重要的一环。系统在每次工具调用之前都会进行权限检查——根据当前配置的权限模式(default、plan、bypassPermissions、auto 等),决定是直接执行、请求用户确认,还是拒绝操作。更有意思的是,代码中还发现了一个”权限解释器”(Permission Explainer)功能:当 Claude 需要请求用户批准某个操作时,它会调用一个单独的 LLM 请求来生成一段通俗易懂的风险说明。也就是说,Claude 用来解释”我为什么需要这个权限”的那段文字,本身也是由 AI 生成的。

安全防护方面同样考虑周到。受保护文件列表中包括 .gitconfig.bashrc.zshrc.mcp.json.claude.json 等敏感配置文件,这些文件被禁止自动编辑。路径遍历防护覆盖了 URL 编码绕过、Unicode 标准化攻击、反斜杠注入、大小写敏感路径操作等多种已知攻击向量。

(三)IDE 桥接系统 Bridge —— 连接编辑器的”神经通道”

bridge/ 目录下的代码实现了一个双向通信层,用于将 IDE 扩展(如 VS Code 和 JetBrains 系列 IDE)与 Claude Code CLI 连接起来。这意味着 Claude Code 不仅可以作为独立的终端工具使用,还能深度嵌入到开发者最常用的集成开发环境中。

这个桥接层支持实时的双向消息传递,IDE 可以向 Claude Code 发送请求(比如”解释选中的代码”、”重构这个函数”),Claude Code 也可以主动向 IDE 推送信息(比如代码修改建议、执行状态更新等)。这种双向通信的设计,为未来更深层次的 IDE 集成奠定了技术基础。

(四)多智能体协调系统 Coordinator —— 多个 AI “同时干活”

coordinator/ 目录揭示了 Claude Code 已经具备了多智能体协同工作的能力。这个协调器允许一个主智能体(Coordinator)调度多个从属智能体并行处理不同的子任务。

从技术实现上看,这个系统包含以下关键组件:TeamCreateTool 用于创建团队级别的并行工作流,多个子智能体可以同时处理不同模块的代码;协调器负责任务分配、进度追踪和结果汇总;子智能体之间通过共享任务列表进行协同,实现跨模块的并行实现。

想象一下这样的工作场景:你告诉 Claude”重构这个微服务的三个模块”,协调器可以同时启动三个子智能体分别处理各自的模块,最后统一汇总和整合,而不是串行地一个接一个处理。这将大幅提升大型项目中的开发效率。

(五)记忆与上下文管理 —— 让 AI “记住”你的项目

泄露代码中出现了多个与记忆相关的模块,展示了 Claude Code 在上下文管理方面的精细设计。

memdir/(持久化记忆目录)提供了跨会话的记忆存储能力。Claude Code 可以将对项目的理解、用户的偏好等信息持久化存储,在后续的会话中直接加载,避免每次都从零开始理解代码库。这个功能在实际使用中体现为 MEMORY.md 文件——Claude 会在使用过程中自动学习你的代码风格、项目规范、常用命令等,并将这些”记忆”写入 MEMORY.md 供后续会话参考。

context.ts 负责在每次会话启动时收集全面的系统和用户上下文信息,包括组织层面的策略配置、项目级别的 CLAUDE.md 指令文件、用户个人偏好等。这些上下文信息会被注入到 LLM 的系统提示词中,确保 Claude 从一开始就了解当前的工作环境。

更引人注目的是 services/autoDream/ 目录下的”自动梦境”系统——一个后台运行的记忆整合引擎。这个系统会作为一个后台子智能体运行,在 Claude Code 空闲时对积累的上下文信息进行整理和提炼,类似于人类在睡眠中进行记忆整合的过程。虽然命名颇具浪漫色彩,但其本质是一个务实的工程方案:通过异步处理来优化长期记忆的质量,而不影响主交互流程的响应速度。

(六)启动优化与性能策略

Claude Code 作为一个 CLI 工具,启动速度直接影响用户体验。泄露的代码展示了 Anthropic 在启动优化方面下了不少功夫。

在 main.tsx 中,多个初始化任务被设计为并行预取,在其他模块加载之前就开始执行:

// main.tsx —— 在其他 import 之前以副作用方式触发startMdmRawRead()       // 预读取 MDM(移动设备管理)配置startKeychainPrefetch() // 预取密钥链信息

那些体积较大或使用频率较低的模块——如 OpenTelemetry(遥测)、gRPC、分析服务、以及部分功能门控的子系统——则通过动态 import() 延迟加载,仅在实际需要时才加载到内存中。这种策略有效地减少了冷启动时间,让用户在输入 claude 命令后能更快地进入交互状态。


四、隐藏功能大揭秘:那些尚未发布的”彩蛋”

除了核心架构之外,泄露代码中最引人注目的莫过于多个尚未对外发布的隐藏功能。这些功能都被置于编译时特性标志(Feature Flag)之后,在对外发布的版本中被完全剔除。

4.1 Kairos 模式:永不离线的 AI 守护进程

在 assistant/ 目录下,隐藏着一个代号为”Kairos”的功能模块——这可能是整个泄露代码中最具前瞻性的发现。

Kairos 不是一个普通的命令行交互模式,而是一个具备”持久生命”的自主守护进程。它被设计为一个常驻后台运行的 Claude 智能体,不需要等待用户输入指令就能主动观察、记录甚至执行操作。从代码分析来看,Kairos 模式有以下几个关键特征:

它维护追加式的每日日志文件,在一天中持续记录观察、决策和操作。系统以固定间隔接收 <tick> 提示,在每次”心跳”中决定是否需要主动采取某种行动,还是保持静默。为了避免影响用户正常工作,系统设定了 15 秒的阻塞预算——任何可能阻塞用户工作流超过 15 秒的主动操作都会被延后处理。

Kairos 还拥有普通 Claude Code 所没有的特殊工具集,虽然具体工具列表尚未完全公开,但可以推测包括文件系统监控、项目变更检测等能力。

这个功能被 PROACTIVE 和 KAIROS 两个编译时特性标志门控,在当前的公开版本中完全不可见。如果未来正式发布,它将把 Claude Code 从一个”被动响应的编程助手”升级为一个”主动协作的编程伙伴”。

4.2 ULTRAPLAN:远程深度规划模式

代码中还揭示了一个名为 ULTRAPLAN 的功能,它的设计理念相当大胆。当面对特别复杂的规划任务时,Claude Code 会将任务卸载到一个远程云容器运行时(CCR)中,使用更强大的模型(如 Opus 4.6)进行长达 30 分钟的深度思考。

整个流程是这样的:用户提出一个复杂任务,Claude Code 判断需要深度规划后启动 ULTRAPLAN 模式,任务被发送到远程 CCR 环境中运行。用户可以在浏览器中查看规划进度,完成后进行审批。一旦用户批准,系统会通过一个特殊的标记值 __ULTRAPLAN_TELEPORT_LOCAL__ 将规划结果”传送”回本地终端执行。

这个设计实现了本地工具轻量化与云端算力弹性化的结合,对于需要全局架构设计、大规模重构规划等重度任务来说,是一个很有想象力的解决方案。

4.3 Buddy System:工程师的电子宠物

这个发现大概是整个泄露代码中最让人会心一笑的部分了。在 buddy/ 目录下,Claude Code 的工程师们竟然内置了一套完整的电子宠物系统,设计风格类似于经典的拓麻歌子(Tamagotchi)。

这套系统的完整度令人惊讶:它包含 18 个不同的物种;每个物种都有稀有度等级划分;存在”闪光变体”(类似宝可梦中的异色个体);每只宠物都有详细的属性统计数据;最特别的是,每只宠物在第一次”孵化”时,会由 Claude 生成一段独特的灵魂描述。

这个功能通过 BUDDY 编译时特性标志门控,系统还被设计为具有确定性的扭蛋机制——也就是说物种的随机分配是可以被验证和复现的,而非完全随机。

虽然这看起来像是工程师在工作之余的趣味创作,但它也反映了 Anthropic 工程团队的文化氛围——在构建严肃的 AI 工具的同时,也不忘在代码中埋下一些轻松有趣的元素。

4.4 Undercover Mode:颇具争议的”卧底”模式

泄露代码中还暴露了一个叫做”Undercover Mode”(卧底模式)的功能,这个功能的存在引发了社区中不小的讨论。

根据 utils/undercover.ts 中的代码逻辑,当 Anthropic 内部员工(通过 USER_TYPE === 'ant' 标识识别)在公共或开源仓库中使用 Claude Code 时,Undercover Mode 会自动激活。该模式的核心功能是在系统提示词中注入一段严格的指令,要求 Claude 在生成的提交信息、PR 标题和 PR 描述中不得包含任何 Anthropic 内部信息。

被禁止出现的内容包括:内部模型代号(如 Capybara、Tengu 等动物名称)、未发布的模型版本号(如 opus-4-7、sonnet-4-8 等)、内部仓库或项目名称、内部工具名、Slack 频道名或内部短链接、”Claude Code”字样或任何表明操作者是 AI 的信息、以及 Co-Authored-By 等归属标记。

系统提示词中甚至包含了一句颇为生动的指令:”Do not blow your cover”(不要暴露你的身份)。

这个功能的存在说明 Anthropic 的员工在日常开发工作中确实大量使用 Claude Code 来参与开源项目的维护和开发。然而,这也引发了关于 AI 辅助编程透明度的讨论——当一个 AI 被刻意设计为隐藏自己的存在时,这是否影响了开源社区的信任基础?

当然,从 Anthropic 的角度来看,这个功能更多是出于商业保密的考虑——防止通过公开的 git 提交记录反推出内部正在开发的模型名称或项目细节。这是一个可以理解的安全需求,但其实现方式确实值得斟酌。

而最具讽刺意味的是:一个专门为防止信息泄露而设计的系统,最终却随着整个源代码一起被泄露了。

4.5 编译时特性标志机制

Claude Code 使用 Bun 的 bun:bundle 特性标志来管理这些隐藏功能。其工作原理是在编译阶段对代码进行静态分析,未激活的功能分支会被完全剔除(Dead Code Elimination),不会出现在最终的构建产物中。

import { feature } from 'bun:bundle'// 未激活的代码在构建时被完全剔除const voiceCommand = feature('VOICE_MODE')  ? require('./commands/voice/index.js').default  : null

泄露代码中发现的主要特性标志包括:PROACTIVE(主动模式)、KAIROS(常驻智能体)、BRIDGE_MODE(IDE 桥接)、DAEMON(守护进程模式)、VOICE_MODE(语音输入)、AGENT_TRIGGERS(智能体触发器)、MONITOR_TOOL(监控工具)、以及前面提到的 BUDDY(电子宠物)等。

这意味着当前公开版本的 Claude Code 只是完整系统的”冰山一角”——大量功能已经在代码库中实现并经过了一定程度的开发和测试,只是尚未对外开放。


五、架构设计哲学:从泄露代码中读出的工程智慧

抛开泄露事件本身的争议不谈,Claude Code 的代码库展现出了一些值得 AI 应用开发者深入学习的架构设计理念。莫潇羽@源码七号站 在此为大家提炼几个关键的设计哲学。

5.1 “原语优先”而非”集成优先”

Claude Code 并没有为每个外部工具(如 Git、Docker、npm 等)编写专门的集成插件。相反,它提供了一组基础的”能力原语”——读(Read)、写(Write)、执行(Execute)、连接(Connect)——并以 Bash 工具作为万能适配器。

这种设计的精妙之处在于:你不需要为世界上每一个开发工具都编写专门的 AI 集成代码。只要 AI 能够熟练使用终端,它就能操作任何人类开发者能操作的工具。这是一种”教 AI 钓鱼”而非”给 AI 鱼吃”的思路,大幅降低了系统的维护复杂度,同时极大地扩展了能力边界。

5.2 上下文窗口作为稀缺资源

Claude Code 的架构将大语言模型的上下文窗口视为一种稀缺资源来精心管理。这体现在多个层面:自动压缩机制会在上下文接近容量限制时,将较早的对话轮次替换为压缩摘要,释放空间的同时保留关键决策信息;子智能体提供了上下文隔离——将重度研究任务卸载到子智能体中处理,避免”污染”主窗口的上下文;前面提到的 autoDream 记忆整合系统通过异步处理来优化长期记忆,确保注入上下文的信息都是精炼过的高质量内容。

5.3 “模型即CEO”的运行时架构

与传统的”代码控制流程”不同,Claude Code 采用的是”模型控制循环”的架构范式。在这种架构中,运行时本身是”笨”的——它只负责提供工具、管理权限、处理 I/O。而所有的决策——调用哪个工具、以什么顺序执行、何时结束任务——都由大语言模型来做出判断。

这种架构被一些研究者称为”TAOR”模式(Think-Act-Observe-Repeat,思考-行动-观察-重复)。模型先思考当前应该做什么,然后选择一个工具执行操作,观察工具返回的结果,最后决定是继续下一步操作还是结束任务。整个过程形成一个自主循环,直到任务完成。

5.4 会话即版本控制

泄露代码中还能看到,Claude Code 将对话会话设计得类似 Git 分支。会话不是用完即弃的,而是可以被检查点标记(checkpoint)、回滚(rollback)、或者分叉(fork)到新的探索路径中。这种设计让用户能够在 AI 辅助的编码过程中进行类似版本控制的操作——如果某个方向走不通,可以退回到之前的节点重新尝试。


六、Claude Code 实际使用入门指南

既然我们已经深入了解了 Claude Code 的内部架构,不妨也简要介绍一下它的基本使用方法,方便还没有体验过的朋友快速上手。这里 莫潇羽@源码七号站 给大家整理了一份新手友好的入门指引。

6.1 安装与配置

Claude Code 作为一个 npm 包分发,安装方式非常简单。首先需要确保你的系统已经安装了 Node.js(推荐 18.x 或更高版本)。然后通过以下命令全局安装:

npm install -g @anthropic-ai/claude-code

安装完成后,你需要配置 API 密钥才能使用。登录你的 Anthropic 账户获取 API Key,然后启动 Claude Code 时会引导你完成认证流程。

6.2 基本使用场景

安装配置完成后,在终端中输入 claude 即可启动。Claude Code 支持以下几类核心操作:

代码理解与探索。 当你进入一个不熟悉的项目时,可以直接用自然语言提问,Claude 会自主地探索文件系统、阅读相关代码、追踪引用关系,最终给出答案。比如你可以问”这个项目的认证系统是怎么实现的”,Claude 会自动阅读相关文件并给出综合性的解释。

代码编写与修改。 你可以用自然语言描述你需要实现的功能,Claude 会直接修改相关文件。比如”给用户模型添加一个邮箱验证字段,并更新相关的迁移文件”,Claude 会找到正确的文件、编写代码、并可能自动运行测试来验证修改。

Git 工作流管理。 Claude Code 可以处理常见的 Git 操作——提交代码、创建分支、发起 Pull Request 等。你可以说”把今天的修改提交到 feature-auth 分支,写一个有意义的 commit message”。

命令执行与调试。 通过内置的 Bash 工具,Claude 可以执行几乎任何终端命令——运行测试、安装依赖、启动服务、查看日志等。

6.3 进阶技巧

CLAUDE.md 项目指令文件。 在项目根目录下创建一个 CLAUDE.md 文件,你可以在其中写入项目特定的指令、编码规范、架构说明等。Claude 会在每次启动时自动读取这个文件,确保它对你的项目有正确的理解。

<!-- CLAUDE.md 示例 --># 项目指令## 编码规范- 使用 TypeScript strict mode- 组件使用函数式风格 + Hooks- 所有 API 接口需要编写单元测试## 项目结构- src/modules/ 下按业务模块组织代码- src/shared/ 存放公共组件和工具函数- 测试文件与源文件同目录,使用 .test.ts 后缀## 常用命令- `npm run dev` 启动开发服务器- `npm run test` 运行测试- `npm run lint` 代码检查

MCP(Model Context Protocol)集成。 Claude Code 支持通过 MCP 协议连接外部工具和数据源。你可以配置 MCP 服务器来扩展 Claude 的能力——比如连接数据库查询工具、项目管理系统、设计工具等。

权限模式选择。 根据你的使用场景,可以选择不同的权限模式。默认模式下每个敏感操作都需要你确认;如果你信任 Claude 的判断,可以启用更宽松的权限模式来减少交互确认的次数。


七、对开发者的安全启示与防护建议

这次泄露事件为整个开发者社区提供了宝贵的安全教训,尤其是在 npm 包管理和 CI/CD 流程方面。

7.1 npm 包发布的安全清单

经过这次事件,莫潇羽@源码七号站 建议每位 npm 包维护者建立并执行以下安全清单:

在 package.json 中始终使用 files 字段白名单,明确指定哪些文件应该被发布,拒绝一切”默认包含”的风险。在构建配置中显式关闭 Source Map 生成,或确保 .map 文件在发布前被删除。每次发布前运行 npm pack --dry-run 进行预检,确认没有敏感文件混入。在 CI/CD 流水线中加入自动化校验步骤,将文件检查集成到发布流程中,而非依赖人工审查。定期审计已发布的包内容,使用 npm pack 下载自己发布的包并检查其中的文件列表。

7.2 Source Map 管理的注意事项

Source Map 文件是前端开发中非常有用的调试工具,但在生产环境中必须谨慎处理。历史上已经有多起因 Source Map 泄露而导致的安全事件——有些案例中甚至暴露了硬编码在源代码中的 API 密钥和其他凭证信息。

对于 Bun 用户,需要注意 Bun 的 bundler 默认会生成 Source Map,需要显式关闭。对于 Webpack 用户,生产构建应使用 devtool: 'hidden-source-map' 或直接设为 false。对于 Vite 用户,可以通过 build.sourcemap: false 关闭。无论使用什么构建工具,都应在 CI/CD 的构建后步骤中增加一个清理脚本,删除所有 .map 文件:

# 构建后清理 Source Map 文件find dist/ -name "*.map" -type f -delete

7.3 更广泛的供应链安全思考

值得注意的是,Claude Code 的这次 Source Map 泄露并非发生在真空中。就在同一天,npm 生态还经历了另一起严重的安全事件——每周下载量过亿的 axios 包被供应链攻击,攻击者劫持了维护者的 npm 凭证并发布了携带远程访问木马的恶意版本。

同一天、同一个注册表、一起蓄意攻击、一起配置疏忽。这两起事件虽然性质不同,但根因都指向同一个问题——npm 生态的发布流程缺乏足够严格的安全门禁。axios 的问题是发布操作绕过了 CI/CD 直接进行,Claude Code 的问题是构建产物缺少发布前的自动化审查。

对于包维护者来说,这是一个强烈的信号:发布到 npm 的每一次操作都是一个信任决策。你的发布流程有多严谨,你的用户就有多安全。


八、这次泄露意味着什么?

从更宏观的视角来看,这次 Claude Code 的源码泄露揭示了当前 AI 编程工具领域的几个重要趋势。

首先是 AI 编程工具的工程复杂度已经远超想象。51万行代码、40多个工具模块、多智能体协调系统、记忆整合引擎——Claude Code 的规模和复杂度表明,构建一个真正实用的 AI 编程工具绝不是简单地”套壳 API”就能实现的。权限系统、安全防护、上下文管理、性能优化等工程挑战,每一个都需要大量的设计和实现工作。

其次是 AI 编程的未来形态正在加速进化。从泄露的 Kairos 模式、ULTRAPLAN、多智能体协同等功能可以看出,Anthropic 对 AI 编程工具的构想远不止当前的交互式对话模式。未来的 AI 编程助手可能是一个常驻后台、主动观察、能够调度多个子智能体并行工作的”编程伙伴”。

再次是 开源与闭源的边界正在变得模糊。不管 Anthropic 的初衷如何,这次泄露客观上让整个开发者社区有机会学习和借鉴一个业界前沿 AI 工具的内部实现。代码中展现的架构模式——原语优先、上下文经济、模型驱动循环等——对于任何正在构建 AI 应用的团队都有参考价值。

最后,这次事件也再次证明了一个朴素的道理:安全是一个持续的过程,而非一次性的检查。即使是 Anthropic 这样以安全著称的公司,也会在看似微不足道的构建配置上栽跟头。对于每一位开发者来说,建立系统化的安全流程、在 CI/CD 中嵌入自动化检查、定期审计发布产物,这些看似繁琐的步骤恰恰是防止类似事故的最有效手段。


九、总结

Claude Code 源码泄露事件无疑是 2026 年开发者社区的一个标志性事件。它不仅让我们窥见了业界前沿 AI 编程工具的内部架构,也为整个行业敲响了供应链安全的警钟。

对于 AI 应用开发者,这份代码展示了如何构建一个真正实用的 AI 编程系统——从工具架构设计、上下文管理、到多智能体协同,每一个方面都有值得学习的地方。对于 npm 包维护者,这是一个关于发布流程安全的绝佳案例——一个 .map 文件就能让整个代码库暴露在阳光下。

技术在不断进步,安全意识也需要同步提升。希望这篇文章能帮助你在享受 AI 工具带来的效率提升的同时,也不忘守护好自己的代码安全。

本文由 莫潇羽@源码七号站(www.fuyuan7.com)原创撰写,转载请注明出处。

PS:获取更多AI&新自媒体&电商&源码等干货教程,请搜索访问我们的网站 [源码七号站],一个安静的AI互助学习社区。