乐于分享
好东西不私藏

史上最强AI工具Claude Code 源码分析 – 项目概览与架构总览

史上最强AI工具Claude Code 源码分析 – 项目概览与架构总览

Claude Code 源码分析 – 项目概览与架构总览

版本: 2.1.88 | 运行时: Bun | 语言: TypeScript | UI框架: React (Ink)


一、项目简介

Claude Code 是 Anthropic 推出的命令行 AI 编码助手。它是一个终端原生应用,通过 React (Ink) 框架在终端中渲染富文本 UI,使用 Anthropic API 进行对话推理,并通过一套完善的工具系统(Tool System)与本地文件系统、Shell、LSP、MCP 等进行交互。


二、技术栈

层级
技术
说明
运行时
Bun
高性能 JS/TS 运行时,提供 bun:bundle 特性开关
语言
TypeScript (ESNext)
strict: false, JSX React
终端UI
React + Ink (定制版)
自带 Yoga 布局引擎、ANSI/CSI 解析器
构建
Bun bundler
build.ts 定义 60+ 特性开关
API
Anthropic SDK
支持 Bedrock、Vertex AI、Azure Foundry
状态管理
自建 createStore
类 Zustand 极简方案
包管理
Bun
bunfig.toml + bun.lock

三、顶层目录结构

claude-code/├── src/                          # 所有源代码│   ├── entrypoints/              # 入口点(CLI、MCP、SDK)│   ├── main.tsx                  # 主应用入口│   ├── query.ts                  # 核心查询循环│   ├── QueryEngine.tsx           # 查询引擎(消息累积、API调用编排)│   ├── Tool.ts                   # Tool 基础类型定义│   ├── tools.ts                  # 工具注册表│   ├── tools/                    # 40+ 工具实现(每个工具独立目录)│   ├── services/                 # 核心服务层│   │   ├── api/                  # API 通信(多后端支持)│   │   ├── compact/              # 上下文压缩(自动/微压缩/Snip)│   │   ├── mcp/                  # MCP 协议客户端│   │   ├── analytics/            # 遥测分析(DataDog + GrowthBook)│   │   ├── lsp/                  # 语言服务协议│   │   ├── oauth/                # OAuth 认证│   │   ├── tools/                # 工具执行引擎│   │   ├── plugins/              # 插件系统│   │   └── ...                   # 其他服务│   ├── state/                    # 状态管理(createStore + React Context)│   ├── components/               # UI 组件│   ├── hooks/                    # 90+ React Hooks│   ├── commands/                 # 50+ 斜杠命令│   ├── utils/                    # 200+ 工具函数│   │   ├── permissions/          # 权限系统(24个文件)│   │   ├── settings/             # 配置管理│   │   ├── hooks/                # 生命周期钩子│   │   ├── model/                # 模型抽象│   │   ├── telemetry/            # OpenTelemetry│   │   └── ...│   ├── ink/                      # 定制 Ink 终端UI框架│   ├── screens/                  # 页面(REPL、Doctor)│   ├── context/                  # React Context│   ├── constants/                # 常量定义│   ├── types/                    # 类型定义│   ├── schemas/                  # Schema 定义│   ├── bridge/                   # 远程桥接(CCR)│   ├── skills/                   # 技能系统│   └── keybindings/              # 快捷键系统├── build.ts                      # 构建脚本(60+ 特性开关)├── package.json                  # 项目元数据├── tsconfig.json                 # TypeScript 配置└── bunfig.toml                   # Bun 配置

四、系统架构总览图

4.1 整体架构层次

┌─────────────────────────────────────────────────────────────────┐│                        用户交互层                                 ││  ┌──────────┐  ┌──────────────┐  ┌──────────┐  ┌─────────────┐ ││  │ CLI 参数  │  │ REPL 交互界面 │  │ 斜杠命令  │  │ 快捷键系统  │ ││  └────┬─────┘  └──────┬───────┘  └────┬─────┘  └──────┬──────┘ ││       │               │               │               │        ││  ┌────┴───────────────┴───────────────┴───────────────┴──────┐ ││  │              React (Ink) 终端 UI 框架                      │ ││  │    Components │ Hooks │ Context │ State Store              │ ││  └────────────────────────┬──────────────────────────────────┘ │└───────────────────────────┼─────────────────────────────────────┘                            │┌───────────────────────────┼─────────────────────────────────────┐│                      核心引擎层                                   ││  ┌────────────────────────┴──────────────────────────────────┐ ││  │                    QueryEngine                             │ ││  │  ┌─────────────┐  ┌──────────────┐  ┌──────────────────┐ │ ││  │  │ 消息循环     │  │ API 流式调用  │  │ 上下文压缩       │ │ ││  │  │ (query loop)│  │ (streaming)  │  │ (compact/collapse)│ │ ││  │  └─────────────┘  └──────────────┘  └──────────────────┘ │ ││  └───────────────────────────────────────────────────────────┘ ││                            │                                    ││  ┌─────────────────────────┼─────────────────────────────────┐ ││  │                   工具执行引擎                              │ ││  │  ┌───────────────┐  ┌────────────────┐  ┌──────────────┐ │ ││  │  │ 权限检查       │  │ 流式工具执行器  │  │ 工具编排      │ │ ││  │  │ (permissions) │  │ (streaming)    │  │ (orchestr.)  │ │ ││  │  └───────────────┘  └────────────────┘  └──────────────┘ │ ││  └───────────────────────────────────────────────────────────┘ │└───────────────────────────┼─────────────────────────────────────┘                            │┌───────────────────────────┼─────────────────────────────────────┐│                      工具层                                      ││  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────────┐││  │ Bash │ │ File │ │ File │ │ Grep │ │ Glob │ │    Agent     │││  │ Tool │ │ Edit │ │ Read │ │ Tool │ │ Tool │ │    Tool      │││  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────────────┘││  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────────┐││  │ Web  │ │ MCP  │ │ LSP  │ │ Todo │ │ Task │ │   30+ 更多   │││  │Fetch │ │ Tool │ │ Tool │ │Write │ │Tools │ │              │││  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────────────┘│└───────────────────────────┼─────────────────────────────────────┘                            │┌───────────────────────────┼─────────────────────────────────────┐│                    基础设施层                                     ││  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐││  │ API 客户端    │ │ MCP 协议     │ │ 遥测与分析               │││  │ (多后端支持)  │ │ (外部工具)   │ │ (DataDog/GrowthBook/OTel)│││  └──────────────┘ └──────────────┘ └──────────────────────────┘││  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐││  │ 配置系统      │ │ 钩子系统     │ │ 认证系统                 │││  │ (分层配置)    │ │ (生命周期)   │ │ (OAuth/API Key/Bedrock)  │││  └──────────────┘ └──────────────┘ └──────────────────────────┘│└─────────────────────────────────────────────────────────────────┘

4.2 核心数据流

用户输入    │    ▼┌──────────┐     ┌──────────────┐     ┌───────────────┐│ TextInput │────▶│ QueryEngine  │────▶│ 构建 API 请求 ││  组件     │     │  消息循环     │     │ (system prompt│└──────────┘     └──────┬───────┘     │  + messages)  │                        │              └───────┬───────┘                        │                      │                        ▼                      ▼                 ┌──────────────┐     ┌───────────────┐                 │ 处理流式响应  │◀────│ Anthropic API │                 │ (逐块解析)   │     │ (多后端)      │                 └──────┬───────┘     └───────────────┘                        │                   ┌────┴────┐                   │ tool_use?│                   └────┬────┘                Yes ──┤  ├── No                     │    │              ┌──────┘    └──────┐              ▼                  ▼     ┌──────────────┐    ┌──────────────┐     │ 查找工具定义  │    │ 输出文本响应  │     │ (tools.ts)   │    │ 到终端 UI    │     └──────┬───────┘    └──────────────┘            │            ▼     ┌──────────────┐     │ 权限检查      │     │ (permissions) │     └──────┬───────┘            │            ▼     ┌──────────────┐     ┌───────────────┐     │ 工具执行      │────▶│ 产出结果消息   │     │ (tool.call())│     │ (tool_result) │     └──────────────┘     └───────┬───────┘                                   │                                   ▼                          返回 QueryEngine ──▶ 下一轮 API 调用

4.3 状态管理架构

┌─────────────────────────────────────────────────────┐│                   AppStateStore                      ││  (createStore<AppState> - 类 Zustand 极简实现)       ││                                                      ││  ┌─────────────────────────────────────────────────┐ ││  │ AppState 包含:                                   │ ││  │  • messages: Message[]        # 对话消息        │ ││  │  • toolPermissionContext      # 工具权限上下文   │ ││  │  • mcp: MCP 状态              # MCP 连接状态    │ ││  │  • tasks: Task[]              # 后台任务列表    │ ││  │  • fastMode: boolean          # 快速模式        │ ││  │  • effortValue                # 推理努力程度    │ ││  │  • todoItems                  # Todo 列表       │ ││  │  • ...更多状态                                  │ ││  └─────────────────────────────────────────────────┘ ││                                                      ││  API: getState() / setState() / subscribe()          │└──────────────┬──────────────────────────────────────┘               │    ┌──────────┴──────────┐    │  AppStateProvider   │    │  (React Context)    │    └──────────┬──────────┘               │    ┌──────────┴──────────────────────────────────┐    │                                              │    ▼                                              ▼┌──────────┐                              ┌──────────────┐│ UI 组件   │                              │ Hooks        ││ (REPL等) │                              │ (90+ hooks)  │└──────────┘                              └──────────────┘

五、核心模块概要

5.1 入口与启动

模块
文件
职责
CLI 入口
src/entrypoints/cli.tsx
处理快速路径(–version等)、环境初始化、动态导入
主入口
src/main.tsx
Commander.js 命令定义、初始化遥测/MDM、启动REPL
全局初始化
src/entrypoints/init.ts
认证、配置、遥测sink初始化
REPL 启动
src/replLauncher.tsx
启动交互式循环
REPL 界面
src/screens/REPL.tsx
主交互界面组件

5.2 核心引擎

模块
文件
职责
查询循环
src/query.ts
AsyncGenerator 驱动的消息循环
查询引擎
src/QueryEngine.tsx
消息累积、API调用编排、工具结果收集
工具类型
src/Tool.ts
Tool/Tools 接口、ToolUseContext 定义
工具注册
src/tools.ts
导入并注册所有可用工具

5.3 服务层

服务
目录
职责
API通信
services/api/
多后端API客户端(直连/Bedrock/Vertex/Azure)
上下文压缩
services/compact/
自动压缩、微压缩、Snip压缩
MCP协议
services/mcp/
外部工具集成协议
工具执行
services/tools/
流式执行、编排、钩子
分析遥测
services/analytics/
DataDog、GrowthBook、事件日志
LSP
services/lsp/
语言服务协议管理
OAuth
services/oauth/
认证流程
插件
services/plugins/
插件安装管理

5.4 基础设施

模块
目录
职责
权限
utils/permissions/
多层权限检查、命令分类、安全检测
配置
utils/settings/
分层配置、MDM、远程同步
钩子
utils/hooks/
生命周期钩子执行
遥测
utils/telemetry/
OpenTelemetry、Perfetto
模型
utils/model/
模型选择、别名、提供商抽象

六、关键设计决策

6.1 特性开关(Feature Flags)

使用 Bun 的编译时特性开关 feature('FLAG_NAME'),在构建时通过死代码消除(DCE)移除不需要的功能。build.ts 中定义了 60+ 个特性开关,实现:

  • • 内部 vs 外部构建: 内部版本(ant)包含额外的工具和服务
  • • 渐进式发布: 通过 GrowthBook 远程控制功能开关
  • • 平台差异化: 不同平台启用不同特性

6.2 工具系统设计

每个工具是一个独立目录,包含:

  • • XXXTool.ts — 工具实现(buildTool() 工厂)
  • • UI.tsx — 终端 UI 渲染
  • • prompt.ts — 系统提示词
  • • constants.ts — 常量

统一的 buildTool() 接口确保所有工具实现一致的权限检查、输入验证、执行和渲染逻辑。

6.3 上下文压缩策略

采用多层压缩策略管理上下文窗口:

  1. 1. Snip — 剪裁最早的历史消息
  2. 2. 微压缩(MicroCompact) — 压缩特定工具输出(不调用API)
  3. 3. 上下文折叠(Context Collapse) — 将冗长输出折叠为摘要
  4. 4. 自动压缩(AutoCompact) — 使用 AI 生成摘要替代历史消息
  5. 5. 响应式压缩(ReactiveCompact) — 在 prompt-too-long 错误后触发

6.4 多后端 API 支持

API 层抽象了多个后端:

  • • 直连 — Anthropic API(OAuth/API Key)
  • • AWS Bedrock — 通过 AWS SDK
  • • Google Vertex AI — 通过 Google Auth
  • • Azure Foundry — 通过 Azure 认证

6.5 安全架构

多层防御策略:

  1. 1. Zod schema 输入验证
  2. 2. 路径安全检查(UNC、设备文件、敏感目录)
  3. 3. 可配置的 allow/deny/ask 规则
  4. 4. bypass 免疫的安全检查
  5. 5. Pre/Post 工具钩子
  6. 6. AI 安全分类器(Auto 模式)
  7. 7. 危险命令模式检测

七、代码规模统计

类别
数量
说明
工具实现
40+
每个工具独立目录
斜杠命令
50+
每个命令独立目录
React Hooks
90+
涵盖UI/权限/通知/IDE集成等
工具函数
200+
按功能分子目录
服务模块
20+ 子目录
核心业务逻辑
特性开关
60+
编译时条件编译
权限文件
24
多层安全检查

八、文档导航

序号
文档
内容
02
CLI入口与启动流程
cli.tsx → main.tsx → REPL 启动链路
03
核心查询引擎
query.ts 消息循环、流式处理、错误恢复
04
工具系统
buildTool 工厂、40+ 工具实现分析
05
API通信层
多后端支持、流式传输、重试机制
06
上下文压缩
五层压缩策略详解
07
权限与安全
多层防御、分类器、安全检查
08
MCP协议
外部工具集成、连接管理
09
状态管理与UI
createStore、Ink框架、组件体系
10
命令与Hooks
斜杠命令注册、生命周期钩子
11
遥测与配置
DataDog、GrowthBook、分层配置
12
特性开关与构建
build.ts、DCE、发布流程