Skip to content
 
 

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Claude 代码源码快照(用于安全研究)

本仓库镜像了一份公开暴露的 Claude Code 源码快照,该源码于 2026 年 3 月 31 日 通过 npm 安装包中的源码映射文件(source map)被公开获取。本仓库仅用于教育、防御性安全研究及软件供应链分析。


研究背景

本仓库由一名在校大学生维护,研究方向包括:

  • 软件供应链暴露与构建产物泄露
  • 软件工程安全实践
  • 智能体开发工具架构
  • 真实命令行工具系统的防御性分析

该归档文件旨在支持以下用途:

  • 教学研究
  • 安全研究实践
  • 架构审查
  • 软件打包与发布流程缺陷讨论

本仓库不主张对原始代码拥有任何所有权,也不应被视为 Anthropic 官方仓库。


该公开快照的暴露经过

Chaofan Shou (@Fried_rice) 公开发布称,在 npm 安装包中暴露的 .map 文件可直接访问 Claude Code 源码:

"Claude 代码源码通过其 npm 仓库中的映射文件泄露了!

@Fried_rice, March 31, 2026

展示图片

该公开源码映射文件指向了 Anthropic R2 存储桶中未做混淆处理的 TypeScript 源码,使得 src/ 目录快照可被公开下载。


仓库范围

Claude Code 是 Anthropic 推出的命令行工具,用于在终端中与 Claude 交互,执行代码编辑、运行命令、搜索代码库、协调工作流等软件工程任务。

本仓库包含用于研究与分析的 src/ 目录镜像。

  • 公开暴露发现时间: 2026-03-31
  • 开发语言:TypeScript
  • 运行环境:Bun
  • 终端界面:React + Ink
  • 代码规模:~1,900 files, 512,000+ lines of code

目录结构

src/
├── main.tsx                 # 入口调度(基于 Commander.js 的命令行逻辑)
├── commands.ts              # 命令注册
├── tools.ts                 # 工具注册
├── Tool.ts                  # 工具类型定义
├── QueryEngine.ts           # 大语言模型查询引擎
├── context.ts               # 系统/用户上下文收集
├── cost-tracker.ts          # Token 用量计费统计
│
├── commands/                # 斜杠命令实现(约 50 个)
├── tools/                   # 智能体工具实现(约 40 个)
├── components/              # Ink 界面组件(约 140 个)
├── hooks/                   # React 钩子
├── services/                # 外部服务集成
├── screens/                 # 全屏界面(诊断、REPL、会话恢复)
├── types/                   # TypeScript 类型定义
├── utils/                   # 工具函数
│
├── bridge/                  # IDE 与远程控制桥接
├── coordinator/             # 多智能体协调器
├── 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 创建子智能体
SkillTool 执行技能
MCPTool 调用 MCP 服务端工具
LSPTool 语言服务协议集成
NotebookEditTool 编辑 Jupyter 笔记本
TaskCreateTool / TaskUpdateTool 创建与管理任务
SendMessageTool 智能体间消息通信
TeamCreateTool / TeamDeleteTool 团队智能体管理
EnterPlanModeTool / ExitPlanModeTool 切换计划模式
EnterWorktreeTool / ExitWorktreeTool Git 工作树隔离
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 命令行的双向通信层。

  • bridgeMain.ts — 桥接主循环
  • bridgeMessaging.ts — 消息协议
  • bridgePermissionCallbacks.ts — 权限回调
  • replBridge.ts — REPL 会话桥接
  • jwtUtils.ts — 基于 JWT 的认证
  • sessionRunner.ts — 会话执行管理

5. 权限系统(src/hooks/toolPermission/

每次工具调用都会进行权限检查。系统会向用户请求允许/拒绝,或根据配置的权限模式自动处理(defaultplanbypassPermissionsauto 等)。

6. 功能开关

通过 Bun 的 bun:bundle 功能开关实现死代码剔除:

import { feature } from 'bun:bundle'

// 未启用的代码会在构建时完全剔除
const voiceCommand = feature('VOICE_MODE')
  ? require('./commands/voice/index.js').default
  : null

主要开关:PROACTIVEKAIROSBRIDGE_MODEDAEMONVOICE_MODEAGENT_TRIGGERSMONITOR_TOOL


关键文件详情

QueryEngine.ts (~46K 行)

大语言模型 API 调用的核心引擎,负责处理流式响应、工具调用循环、思考模式、重试逻辑与 Token 计数。

Tool.ts (~29K 行)

定义所有工具的基础类型与接口,包括输入结构、权限模型与进度状态类型。

commands.ts (~25K 行)

管理所有斜杠命令的注册与执行,根据运行环境使用条件导入加载不同的命令集合。

main.tsx

基于 Commander.js 的 CLI 解析器与 React/Ink 渲染器初始化入口。启动时并行加载 MDM 配置、钥匙串预取与 GrowthBook 初始化,以实现更快启动。


技术栈

分类 技术
运行时 Bun
语言 TypeScript (严格模式)
终端界面 React + Ink
CLI 解析 Commander.js
结构校验 Zod v4
代码搜索 ripgrep
通信协议 MCP SDK, LSP
API Anthropic SDK
监控遥测 OpenTelemetry + gRPC
功能开关 GrowthBook
认证 OAuth 2.0, JWT, macOS Keychain

核心设计模式

并行预加载

为优化启动速度,在加载大量模块之前,会并行预取 MDM 配置、钥匙串数据与 API 预连接。

// main.tsx — 在其他模块导入前执行
startMdmRawRead()
startKeychainPrefetch()

懒加载

大型模块(OpenTelemetry、gRPC、分析服务等)通过动态 import() 延迟加载,仅在实际需要时才引入。

智能体集群

通过 AgentTool 创建子智能体,由 coordinator/ 模块负责多智能体协同调度,TeamCreateTool 支持团队级并行工作。

技能系统

skills/ 中定义可复用工作流,通过 SkillTool 执行,用户可自定义扩展技能。

插件架构

内置插件与第三方插件统一通过 plugins/ 子系统加载管理。


研究与所有权声明

  • 本仓库为一名大学生维护的教育与防御性安全研究归档项目
  • 用途仅限研究源码暴露问题、打包流程缺陷与现代智能体 CLI 架构。
  • 原始 Claude Code 源码版权归 Anthropic 所有。
  • 本仓库与 Anthropic 无任何关联,未获得其认可、授权或维护

About

Claude 代码快照(用于研究)。所有原始源代码均为 Anthropic 所有

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages