Claude Code 源码泄露深度剖析:Anthropic AI 编程助手的架构全解密
2026 年 3 月 31 日,安全研究员 Chaofan Shou (@Fried_rice) 发现 Anthropic 的 npm 包中暴露了 .map 文件,意外泄露了 Claude Code CLI 工具的完整 TypeScript 源码。这份源码被迅速归档到 GitHub 仓库 instructkr/claude-code,短短数小时内便获得了近 600 Stars 和 900+ Forks。
“Claude code source code has been leaked via a map file in their npm registry!”
— @Fried_rice, 2026-03-31
作为一个每天都在使用 Claude Code 的重度用户,我第一时间深入研究了这份泄露的源码。本文将从项目架构、核心系统设计、技术栈选型三个维度,全面拆解 Anthropic 是如何构建这个 51 万行代码 的 AI 编程 CLI 工具的。
一、泄露始末:一个 Source Map 引发的”事故”
怎么泄露的?
npm 发布的包中包含了一个 .map 文件(Source Map),该文件包含了指向完整、未混淆的 TypeScript 源码的引用。更关键的是,源码 zip 包直接托管在 Anthropic 的 R2 存储桶上,任何人都可以下载。

如上图所示,@anthropic-ai/claude-code 包的 2.1.88 版本中,cli.js.map 文件高达 59.8 MB——这个 Source Map 文件包含了完整的源码映射,使得任何人都能还原出原始的 TypeScript 代码。
泄露的规模
| 指标 | 数据 |
|---|---|
| 文件数量 | ~1,900 个文件 |
| 代码行数 | 512,000+ 行 |
| 语言 | TypeScript (strict) |
| 运行时 | Bun |
| UI 框架 | React + Ink (终端 UI) |
这不是一个简单的 CLI 工具——这是一个完整的、复杂的多层架构系统。
二、整体架构一览
src/
├── main.tsx # CLI 入口(Commander.js 解析器)
├── QueryEngine.ts # 对话引擎核心(~46K 行)
├── Tool.ts # 工具类型定义(~29K 行)
├── commands.ts # 命令注册中心(~25K 行)
├── query.ts # 查询执行循环
├── context.ts # 系统/用户上下文构建
├── cost-tracker.ts # Token 费用追踪
│
├── tools/ # 40+ 内置工具实现
├── commands/ # 50+ 斜杠命令实现
├── components/ # 144 个 React/Ink UI 组件
├── hooks/ # 80+ React Hooks
├── services/ # 外部服务集成层
├── bridge/ # IDE 桥接层(VS Code/JetBrains)
├── coordinator/ # 多 Agent 协调器
├── skills/ # 技能系统
├── plugins/ # 插件系统
├── state/ # 全局状态管理
├── vim/ # Vim 模式
├── voice/ # 语音输入
├── remote/ # 远程会话
├── server/ # 服务器模式
├── memdir/ # 持久化记忆系统
├── tasks/ # 任务管理
├── screens/ # 全屏 UI(Doctor、REPL、Resume)
├── schemas/ # Zod 配置校验
└── entrypoints/ # 多入口初始化逻辑
接下来逐一深入每个核心子系统。

三、核心系统深度剖析
3.1 工具系统(Tool System)— 一切能力的基石
Claude Code 的所有”能力”都通过工具(Tool)暴露给 LLM。每个工具都是一个自包含的模块,定义了输入 Schema、权限模型和执行逻辑。
src/tools/ 目录下共有 40+ 个工具实现:
| 工具分类 | 工具名 | 功能 |
|---|---|---|
| 文件操作 | FileReadTool |
读取文件(支持图片、PDF、Notebook) |
FileWriteTool |
创建/覆写文件 | |
FileEditTool |
局部文件修改(字符串替换) | |
| 搜索 | GlobTool |
文件模式匹配搜索 |
GrepTool |
基于 ripgrep 的内容搜索 | |
| 执行 | BashTool |
Shell 命令执行 |
PowerShellTool |
Windows PowerShell 执行 | |
REPLTool |
交互式 REPL | |
| 网络 | WebFetchTool |
URL 内容抓取 |
WebSearchTool |
网页搜索 | |
| Agent | AgentTool |
子 Agent 生成 |
SendMessageTool |
Agent 间消息传递 | |
TeamCreateTool/TeamDeleteTool |
团队 Agent 管理 | |
| 协议 | MCPTool |
MCP 服务器工具调用 |
LSPTool |
语言服务器协议集成 | |
| 任务 | TaskCreateTool/TaskUpdateTool |
任务创建与管理 |
TaskGetTool/TaskListTool |
任务查询 | |
| 模式 | EnterPlanModeTool/ExitPlanModeTool |
计划模式切换 |
EnterWorktreeTool/ExitWorktreeTool |
Git Worktree 隔离 | |
| 其他 | SkillTool |
技能执行 |
ScheduleCronTool |
定时任务调度 | |
SleepTool |
主动模式等待 | |
SyntheticOutputTool |
结构化输出生成 | |
ToolSearchTool |
延迟工具发现 |
架构亮点:每个工具都是声明式的——通过 Schema 定义输入、通过权限模型定义安全边界、通过独立模块实现逻辑。这种设计使得新增工具的成本极低,同时确保了 LLM 能准确理解每个工具的能力边界。
3.2 命令系统(Command System)— 用户交互的前门
src/commands/ 目录下有 50+ 个斜杠命令,涵盖开发工作流的方方面面:
核心开发命令:
/commit— Git 提交/diff— 查看变更/review— 代码审查/compact— 上下文压缩
配置与管理:
/config— 设置管理/mcp— MCP 服务器管理/memory— 持久化记忆管理/skills— 技能管理/hooks— 钩子配置
高级功能:
/vim— Vim 模式切换/doctor— 环境诊断/cost— 使用费用查看/context— 上下文可视化/desktop//mobile— 跨平台交接
有趣的发现:源码中还有一些未公开的命令,比如 good-claude(给 Claude 正向反馈?)、buddy(伴侣精灵,一个彩蛋功能)、bughunter(自动化 Bug 搜索)、chrome(Chrome 扩展集成)等。
3.3 QueryEngine — 对话引擎的心脏
QueryEngine.ts 是整个 Claude Code 最核心的文件,约 46,000 行代码。它负责:
- 流式响应处理:与 Anthropic API 的流式通信
- 工具调用循环:LLM 输出 → 解析工具调用 → 执行工具 → 结果回传 → LLM 继续
- Thinking 模式:Extended Thinking(扩展思考)的启用与管理
- 重试逻辑:API 错误的优雅降级与重试
- Token 计数:精确的 Token 使用量追踪
这是一个经典的 Agent Loop 实现——LLM 不断”思考-行动-观察”,直到任务完成或需要用户输入。
3.4 权限系统(Permission System)— 安全的守门人
src/hooks/toolPermission/ 实现了一套多层权限模型。每次工具调用都会经过权限检查:
工具调用请求 → 权限检查 → [自动通过 | 提示用户 | 拒绝]
支持多种权限模式:
default— 默认模式,危险操作需确认plan— 计划模式,仅允许只读操作auto— 自动模式,信任所有操作bypassPermissions— 跳过权限(开发/测试用)
这解释了为什么 Claude Code 在执行文件写入、Shell 命令等操作前会弹出确认提示——不是 LLM 在”犹豫”,而是权限系统在拦截。
3.5 Bridge 系统 — IDE 集成的桥梁
src/bridge/ 实现了 CLI 与 IDE 扩展之间的双向通信层:
bridgeMain.ts— 桥接主循环bridgeMessaging.ts— 消息协议bridgePermissionCallbacks.ts— 权限回调replBridge.ts— REPL 会话桥接jwtUtils.ts— JWT 认证sessionRunner.ts— 会话执行管理
这套 Bridge 系统使得 VS Code 和 JetBrains 插件能够与底层的 Claude Code CLI 共享同一个会话和上下文,实现了“一个引擎,多个前端”的架构。
3.6 Agent 协调系统 — 从单 Agent 到多 Agent
src/coordinator/ 虽然目前只有一个 coordinatorMode.ts 文件,但结合 AgentTool、SendMessageTool、TeamCreateTool 等工具,可以看出 Claude Code 已经构建了一套多 Agent 协调机制:
- AgentTool:生成子 Agent 处理独立子任务
- SendMessageTool:Agent 间通信
- TeamCreateTool:创建 Agent 团队并行处理
useSwarmInitialization.ts/useSwarmPermissionPoller.ts— Swarm 模式初始化与权限轮询
这意味着 Claude Code 可以同时启动多个 Agent 并行工作,类似于一个软件工程团队的分工协作模式。

四、服务层架构
src/services/ 是外部依赖集成的汇聚点:
| 服务 | 说明 |
|---|---|
api/ |
Anthropic API 客户端、文件 API、Bootstrap |
mcp/ |
Model Context Protocol 服务器连接管理 |
oauth/ |
OAuth 2.0 认证流程 |
lsp/ |
Language Server Protocol 管理器 |
analytics/ |
GrowthBook 特性标志与分析 |
plugins/ |
插件加载器 |
compact/ |
对话上下文压缩 |
extractMemories/ |
自动记忆提取 |
tokenEstimation.ts |
Token 数量估算 |
teamMemorySync/ |
团队记忆同步 |
policyLimits/ |
组织策略限制 |
remoteManagedSettings/ |
远程托管设置 |
MagicDocs/ |
智能文档 |
PromptSuggestion/ |
提示词建议 |
autoDream/ |
自动梦境(?神秘功能) |
特别值得关注的是 extractMemories 服务——Claude Code 的记忆系统不仅仅是被动存储,还能主动从对话中提取有价值的信息并持久化。这解释了为什么 Claude Code 用久了会越来越”懂你”。
五、UI 组件体系 — 终端里的 React
Claude Code 使用 React + Ink 构建终端 UI,这是整个项目最”意外”的技术选型之一。src/components/ 下有 144 个 UI 组件,这几乎是一个中型 Web 前端应用的规模。
部分关键组件:
App.tsx— 应用根组件CoordinatorAgentStatus.tsx— 多 Agent 状态展示ContextVisualization.tsx— 上下文可视化ContextSuggestions.tsx— 上下文建议DiagnosticsDisplay.tsx— 诊断信息展示AutoUpdater.tsx— 自动更新ConsoleOAuthFlow.tsx— OAuth 认证流程DevBar.tsx— 开发者工具栏
配套的 80+ React Hooks 覆盖了几乎所有状态管理场景:
useVimInput.ts— Vim 模式输入处理useVoice.ts/useVoiceIntegration.tsx— 语音输入集成useSwarmInitialization.ts— Swarm 模式初始化useScheduledTasks.ts— 定时任务调度useMemoryUsage.ts— 内存使用监控useTerminalSize.ts— 终端尺寸自适应useVirtualScroll.ts— 虚拟滚动(性能优化)
六、技术栈深度解析
| 类别 | 技术 | 选型理由分析 |
|---|---|---|
| 运行时 | Bun | 极快的启动速度 + 原生 TypeScript 支持 |
| 语言 | TypeScript (strict) | 类型安全,512K 行代码必须强类型 |
| 终端 UI | React + Ink | 声明式 UI,组件复用,开发效率高 |
| CLI 解析 | Commander.js | 成熟的 CLI 参数解析框架 |
| Schema 校验 | Zod v4 | 运行时类型校验 + TypeScript 类型推断 |
| 代码搜索 | ripgrep | 极快的代码搜索引擎 |
| 协议 | MCP SDK + LSP | 标准化的工具/语言服务器协议 |
| API | Anthropic SDK | 官方 SDK |
| 遥测 | OpenTelemetry + gRPC | 标准化可观测性 |
| 特性标志 | GrowthBook | A/B 测试与灰度发布 |
| 认证 | OAuth 2.0 + JWT + macOS Keychain | 多层认证体系 |
为什么选 Bun 而不是 Node.js?
Bun 提供了几个关键优势:
- 启动速度:比 Node.js 快数倍,CLI 工具对冷启动时间敏感
- 原生 TypeScript:无需编译步骤
- Bundle 特性标志:
bun:bundle的feature()机制实现了编译时死代码消除
import { feature } from 'bun:bundle'
// 未启用的功能代码在构建时被完全移除
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: null
目前已知的特性标志:PROACTIVE、KAIROS、BRIDGE_MODE、DAEMON、VOICE_MODE、AGENT_TRIGGERS、MONITOR_TOOL。
为什么用 React 写终端 UI?
这看似反直觉,但有深层考量:
- 声明式渲染:终端 UI 的状态管理同样复杂(权限弹窗、多 Agent 状态、流式输出),React 的声明式模型大大降低了复杂度
- 组件复用:144 个组件之间存在大量复用关系
- Hooks 生态:80+ 自定义 Hooks 实现了关注点分离
- Bridge 复用:同一套组件逻辑可以通过 Bridge 在 IDE 中复用
七、启动优化 — 毫秒级的细节打磨
Claude Code 的启动序列经过精心优化:
// main.tsx — 在其他模块加载之前就作为副作用触发
startMdmRawRead() // 预读 MDM 设置
startKeychainPrefetch() // 预取 Keychain 凭据
并行预取策略:MDM 设置读取、Keychain 访问、API 预连接和 GrowthBook 初始化全部并行执行,避免串行等待。
懒加载策略:重模块(OpenTelemetry ~400KB、gRPC ~700KB)通过动态 import() 延迟加载,只在实际需要时才引入。
八、几个有趣的发现
1. Buddy 系统(彩蛋)
src/buddy/ 目录——一个”伴侣精灵”系统。虽然目前看起来是个彩蛋功能,但谁知道 Anthropic 会不会把它变成一个正式功能?
2. autoDream 服务
src/services/autoDream/ ——“自动梦境”?名字非常神秘。可能与 Claude 的后台思考或记忆整理相关。
3. 隐藏命令
源码中存在许多未公开的命令:
good-claude— 给 Claude 正向反馈bughunter— 自动化 Bug 猎手chrome— Chrome 浏览器集成btw— 顺便说一下(?)ant-trace— Anthropic 内部追踪mock-limits— 模拟速率限制(测试用)heapdump— 堆内存快照
4. KAIROS 特性标志
在特性标志中出现的 KAIROS 是什么?Kairos 在希腊语中意为”恰当的时机”——可能是某个与时间相关的高级 Agent 调度功能。
九、架构设计的核心思想总结
经过深入分析,Claude Code 的架构体现了几个核心设计理念:
1. 工具即能力(Tools as Capabilities)
LLM 的所有交互能力都通过标准化的 Tool 接口暴露,每个工具都是自描述的(Schema + 权限 + 执行逻辑)。这种设计使得:
- 新增能力 = 新增一个工具模块
- LLM 能通过 Schema 精确理解工具的输入输出
- 权限系统能细粒度控制每个工具的执行
2. Agent 是一等公民
Agent 不是一个事后想法,而是从架构层面就支持的核心概念。子 Agent 生成、Agent 间通信、团队协作都有专门的工具和服务支撑。
3. 声明式优于命令式
从 React/Ink 的 UI 渲染到 Zod Schema 的类型校验,再到工具定义的声明式接口,整个项目都倾向于声明式编程范式。
4. 性能是设计约束
Bun 运行时、并行预取、懒加载、编译时死代码消除——这些优化不是事后补丁,而是从技术选型阶段就考虑在内的设计决策。
十、写在最后
Claude Code 是目前市面上最复杂的 AI 编程 CLI 工具之一。51 万行 TypeScript 代码、40+ 工具、50+ 命令、144 个 UI 组件——这不是一个简单的”API 包装器”,而是一个完整的软件工程平台。
这次源码泄露让我们得以窥见 Anthropic 在 AI 工具链上的工程投入之深。对于开发者而言,这份源码是学习大型 TypeScript 项目架构、Agent 系统设计、终端 UI 开发的绝佳教材。
注意:本文仅作技术分析用途。源码的所有权归属 Anthropic,请勿将其用于商业目的。
参考链接:
Claude Code 源码泄露深度剖析:Anthropic AI 编程助手的架构全解密
Cloudflare免费无限邮箱教程:一个域名搞定所有AI账号注册