Claude Code — 源码泄露 (2026-03-31)
2026年3月31日,Anthropic 的 Claude Code CLI 完整源代码通过 npm 仓库中暴露的
.map文件泄露。
泄露经过
Chaofan Shou (@Fried_rice) 发现了这次泄露并公开发布:
“Claude code 源代码已通过 npm 仓库中的 map 文件泄露!”
发布的 npm 包中的 source map 文件包含了对完整的、未混淆的 TypeScript 源码的引用,该源码可从 Anthropic 的 R2 存储桶下载为 zip 压缩包。
概述
Claude Code 是 Anthropic 的官方 CLI 工具,让你可以直接从终端与 Claude 交互,执行软件工程任务——编辑文件、运行命令、搜索代码库、管理 git 工作流等。
本仓库包含泄露的 src/ 目录。
- 泄露日期:2026-03-31
- 语言:TypeScript
- 运行时:Bun
- 终端 UI:React + Ink(CLI 版 React)
- 规模:约 1,900 个文件,512,000+ 行代码
目录结构
src/
├── main.tsx # 入口(基于 Commander.js 的 CLI 解析器)
├── commands.ts # 命令注册
├── tools.ts # 工具注册
├── Tool.ts # 工具类型定义
├── QueryEngine.ts # LLM 查询引擎(核心 Anthropic API 调用)
├── context.ts # 系统/用户上下文收集
├── cost-tracker.ts # Token 成本追踪
│
├── commands/ # 斜杠命令实现(约 50 个)
├── tools/ # Agent 工具实现(约 40 个)
├── components/ # Ink UI 组件(约 140 个)
├── hooks/ # React hooks
├── services/ # 外部服务集成
├── screens/ # 全屏 UI(Doctor、REPL、Resume)
├── types/ # TypeScript 类型定义
├── utils/ # 工具函数
│
├── bridge/ # IDE 集成桥接(VS Code、JetBrains)
├── coordinator/ # 多 Agent 协调器
├── plugins/ # 插件系统
├── skills/ # 技能系统
├── keybindings/ # 快捷键配置
├── vim/ # Vim 模式
├── voice/ # 语音输入
├── remote/ # 远程会话
├── server/ # 服务器模式
├── memdir/ # 内存目录(持久化内存)
├── tasks/ # 任务管理
├── state/ # 状态管理
├── migrations/ # 配置迁移
├── schemas/ # 配置模式(Zod)
├── entrypoints/ # 初始化逻辑
├── ink/ # Ink 渲染器封装
├── buddy/ # 伙伴精灵(彩蛋)
├── native-ts/ # 原生 TypeScript 工具
├── outputStyles/ # 输出样式
├── query/ # 查询管道
└── upstreamproxy/ # 代理配置
核心架构
1. 工具系统 (src/tools/)
Claude Code 可以调用的每个工具都实现为一个独立模块。每个工具定义其输入模式、权限模型和执行逻辑。
| 工具 | 描述 |
|---|---|
BashTool | Shell 命令执行 |
FileReadTool | 文件读取(图片、PDF、笔记本) |
FileWriteTool | 文件创建/覆盖 |
FileEditTool | 部分文件修改(字符串替换) |
GlobTool | 文件模式匹配搜索 |
GrepTool | 基于 ripgrep 的内容搜索 |
WebFetchTool | 获取 URL 内容 |
WebSearchTool | 网页搜索 |
AgentTool | 子 Agent 生成 |
SkillTool | 技能执行 |
MCPTool | MCP 服务器工具调用 |
LSPTool | 语言服务器协议集成 |
NotebookEditTool | Jupyter 笔记本编辑 |
TaskCreateTool / TaskUpdateTool | 任务创建和管理 |
SendMessageTool | Agent 间消息传递 |
TeamCreateTool / TeamDeleteTool | 团队 Agent 管理 |
EnterPlanModeTool / ExitPlanModeTool | 计划模式切换 |
EnterWorktreeTool / ExitWorktreeTool | Git worktree 隔离 |
ToolSearchTool | 延迟工具发现 |
CronCreateTool | 定时触发器创建 |
RemoteTriggerTool | 远程触发 |
SleepTool | 主动模式等待 |
SyntheticOutputTool | 结构化输出生成 |
2. 命令系统 (src/commands/)
用户使用的以 / 为前缀的斜杠命令。
| 命令 | 描述 |
|---|---|
/commit | 创建 git 提交 |
/review | 代码审查 |
/compact | 上下文压缩 |
/mcp | MCP 服务器管理 |
/config | 设置管理 |
/doctor | 环境诊断 |
/login / /logout | 认证 |
/memory | 持久化内存管理 |
/skills | 技能管理 |
/tasks | 任务管理 |
/vim | Vim 模式切换 |
/diff | 查看变更 |
/cost | 查看使用成本 |
/theme | 更改主题 |
/context | 上下文可视化 |
/pr_comments | 查看 PR 评论 |
/resume | 恢复上次会话 |
/share | 分享会话 |
/desktop | 桌面应用交接 |
/mobile | 移动应用交接 |
3. 服务层 (src/services/)
| 服务 | 描述 |
|---|---|
api/ | Anthropic API 客户端、文件 API、引导程序 |
mcp/ | 模型上下文协议服务器连接和管理 |
oauth/ | OAuth 2.0 认证流程 |
lsp/ | 语言服务器协议管理器 |
analytics/ | 基于 GrowthBook 的功能标志和分析 |
plugins/ | 插件加载器 |
compact/ | 对话上下文压缩 |
policyLimits/ | 组织策略限制 |
remoteManagedSettings/ | 远程托管设置 |
extractMemories/ | 自动内存提取 |
tokenEstimation.ts | Token 计数估算 |
teamMemorySync/ | 团队内存同步 |
4. 桥接系统 (src/bridge/)
连接 IDE 扩展(VS Code、JetBrains)与 Claude Code CLI 的双向通信层。
bridgeMain.ts— 桥接主循环bridgeMessaging.ts— 消息协议bridgePermissionCallbacks.ts— 权限回调replBridge.ts— REPL 会话桥接jwtUtils.ts— 基于 JWT 的认证sessionRunner.ts— 会话执行管理
5. 权限系统 (src/hooks/toolPermission/)
在每次工具调用时检查权限。根据配置的权限模式(default、plan、bypassPermissions、auto 等)提示用户批准/拒绝或自动解决。
6. 功能标志
通过 Bun 的 bun:bundle 功能标志进行死代码消除:
import { feature } from 'bun:bundle'
// 非活动代码在构建时完全被移除
const voiceCommand = feature('VOICE_MODE')
? require('./commands/voice/index.js').default
: null
notable 标志:PROACTIVE、KAIROS、BRIDGE_MODE、DAEMON、VOICE_MODE、AGENT_TRIGGERS、MONITOR_TOOL
关键文件详解
QueryEngine.ts(约 46K 行)
LLM API 调用的核心引擎。处理流式响应、工具调用循环、思考模式、重试逻辑和 token 计数。
Tool.ts(约 29K 行)
定义所有工具的基础类型和接口——输入模式、权限模型和进度状态类型。
commands.ts(约 25K 行)
管理所有斜杠命令的注册和执行。使用条件导入根据环境加载不同的命令集。
main.tsx
基于 Commander.js 的 CLI 解析器 + React/Ink 渲染器初始化。启动时并行执行 MDM 设置、钥匙串预取和 GrowthBook 初始化以加快启动速度。
技术栈
| 类别 | 技术 |
|---|---|
| 运行时 | Bun |
| 语言 | TypeScript(严格模式) |
| 终端 UI | React + Ink |
| CLI 解析 | Commander.js(extra-typings) |
| 模式验证 | Zod v4 |
| 代码搜索 | ripgrep(通过 GrepTool) |
| 协议 | MCP SDK、LSP |
| API | Anthropic SDK |
| 遥测 | OpenTelemetry + gRPC |
| 功能标志 | GrowthBook |
| 认证 | OAuth 2.0、JWT、macOS 钥匙串 |
值得注意的设计模式
并行预取
通过并行预取 MDM 设置、钥匙串读取和 API 预连接来优化启动时间——在重型模块评估开始之前。
// main.tsx — 作为副作用在其他导入之前触发
startMdmRawRead()
startKeychainPrefetch()
懒加载
重型模块(OpenTelemetry ~400KB、gRPC ~700KB)通过动态 import() 延迟加载,直到实际需要时才加载。
Agent 群
通过 AgentTool 生成子 Agent,coordinator/ 处理多 Agent 编排。TeamCreateTool 支持团队级别的并行工作。
技能系统
在 skills/ 中定义的可重用工作流,通过 SkillTool 执行。用户可以添加自定义技能。
插件架构
内置和第三方插件通过 plugins/ 子系统加载。
免责声明
本仓库归档了 2026-03-31 从 Anthropic 的 npm 仓库泄露的源代码。所有原始源代码均为 Anthropic 的财产。
更多推荐


所有评论(0)