2026年3月31日,Anthropic 的 Claude Code CLI 完整源代码通过 npm 仓库中暴露的 .map 文件泄露。


泄露经过

Chaofan Shou (@Fried_rice) 发现了这次泄露并公开发布:

“Claude code 源代码已通过 npm 仓库中的 map 文件泄露!”

— @Fried_rice, 2026年3月31日

发布的 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 可以调用的每个工具都实现为一个独立模块。每个工具定义其输入模式、权限模型和执行逻辑。

工具描述
BashToolShell 命令执行
FileReadTool文件读取(图片、PDF、笔记本)
FileWriteTool文件创建/覆盖
FileEditTool部分文件修改(字符串替换)
GlobTool文件模式匹配搜索
GrepTool基于 ripgrep 的内容搜索
WebFetchTool获取 URL 内容
WebSearchTool网页搜索
AgentTool子 Agent 生成
SkillTool技能执行
MCPToolMCP 服务器工具调用
LSPTool语言服务器协议集成
NotebookEditToolJupyter 笔记本编辑
TaskCreateTool / TaskUpdateTool任务创建和管理
SendMessageToolAgent 间消息传递
TeamCreateTool / TeamDeleteTool团队 Agent 管理
EnterPlanModeTool / ExitPlanModeTool计划模式切换
EnterWorktreeTool / ExitWorktreeToolGit worktree 隔离
ToolSearchTool延迟工具发现
CronCreateTool定时触发器创建
RemoteTriggerTool远程触发
SleepTool主动模式等待
SyntheticOutputTool结构化输出生成

2. 命令系统 (src/commands/)

用户使用的以 / 为前缀的斜杠命令。

命令描述
/commit创建 git 提交
/review代码审查
/compact上下文压缩
/mcpMCP 服务器管理
/config设置管理
/doctor环境诊断
/login / /logout认证
/memory持久化内存管理
/skills技能管理
/tasks任务管理
/vimVim 模式切换
/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.tsToken 计数估算
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(严格模式)
终端 UIReact + Ink
CLI 解析Commander.js(extra-typings)
模式验证Zod v4
代码搜索ripgrep(通过 GrepTool)
协议MCP SDK、LSP
APIAnthropic 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 的财产。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐