docs: add Chinese translation of full architecture analysis (DOCUMENTATION.zh-CN.md)

This commit is contained in:
ComeOnOliver
2026-03-31 10:44:59 -07:00
parent a35b17ba05
commit c45730b025
3 changed files with 807 additions and 2 deletions
+2
View File
@@ -1,3 +1,5 @@
**[English](DOCUMENTATION.md)** | **[中文](DOCUMENTATION.zh-CN.md)**
# Claude Code — Source Code Documentation & Analysis
> **Claude Code** is Anthropic's official CLI for Claude. This document provides a comprehensive reverse-engineering analysis of its source code architecture, modules, and internal design patterns.
+801
View File
@@ -0,0 +1,801 @@
**[English](DOCUMENTATION.md)** | **[中文](DOCUMENTATION.zh-CN.md)**
# Claude Code — 源码文档与架构分析
> **Claude Code** 是 Anthropic 官方的 Claude CLI 工具。本文档提供了对其源码架构、模块和内部设计模式的全面逆向工程分析。
---
## 如何阅读本文档
本文档是对 Claude Code 源码树进行深度分析的成果。它面向希望了解 Claude Code 底层工作原理的**开发者和工程师**——包括其架构、模块边界、数据流和设计决策。
**结构:** 文档采用自顶向下的组织方式,从项目概览和技术栈开始,然后深入到各个主要子系统(工具、命令、状态、服务、UI)。每个章节都是独立的;你可以通过目录跳转到任意章节。
**受众:** 熟悉 TypeScript、React 和 CLI 工具的中高级开发者。有 AI/LLM 工具开发经验会有帮助,但不是必需的。
**范围:** 本文档涵盖源码树结构、模块清单和架构模式。不深入涉及运行时行为,也不包含性能基准测试或安全审计。
---
## 目录
1. [项目概览](#1-项目概览)
2. [技术栈](#2-技术栈)
3. [目录结构](#3-目录结构)
4. [入口点](#4-入口点)
5. [核心架构](#5-核心架构)
6. [工具系统](#6-工具系统)
7. [命令系统](#7-命令系统)
8. [状态管理](#8-状态管理)
9. [任务系统](#9-任务系统)
10. [服务与集成](#10-服务与集成)
11. [UI 层](#11-ui-层)
12. [工具函数](#12-工具函数)
13. [特殊模式](#13-特殊模式)
14. [插件与技能](#14-插件与技能)
15. [钩子与可扩展性](#15-钩子与可扩展性)
16. [文件统计](#16-文件统计)
17. [架构模式](#17-架构模式)
---
## 1. 项目概览
Claude Code 是一个功能丰富的交互式终端应用,允许直接在命令行中进行 AI 辅助软件工程。它提供:
- **交互式 REPL**,用于与 Claude 进行代码相关的对话
- **40+ 工具**,用于文件操作、Shell 执行、网络搜索等
- **100+ 斜杠命令**,用于提交、审查、调试等工作流
- **Agent/任务系统**,用于通过子 Agent 并行处理复杂工作
- **计划模式**,用于在编码前设计实现策略
- **MCPModel Context Protocol** 集成,提供可扩展的服务端工具
- **插件与技能系统**,用于用户自定义扩展
- **语音模式**、**桌面/移动端桥接**和**远程会话**
---
## 2. 技术栈
| 层级 | 技术 |
|----------------|--------------------------------------------------------------|
| 语言 | TypeScript (`.ts` / `.tsx`) |
| 运行时 | Bun(打包工具,通过 `bun:bundle` 实现特性标志) |
| UI 框架 | React + [Ink](https://github.com/vadimdemedes/ink)(终端 React 渲染器)|
| API 客户端 | `@anthropic-ai/sdk`Anthropic SDK |
| MCP | `@modelcontextprotocol/sdk` |
| CLI 框架 | `@commander-js/extra-typings` |
| 数据验证 | Zod v4 |
| 样式 | Chalk(终端颜色) |
| 状态管理 | Zustand 风格 Store + React Context |
---
## 3. 目录结构
```text
claude-code-analysis/
└── src/ # 所有源码(单一顶级目录)
├── main.tsx # 主引导与初始化
├── QueryEngine.ts # 对话循环编排器
├── Tool.ts # 工具类型定义与接口
├── Task.ts # 任务类型定义与生命周期
├── commands.ts # 命令注册表
├── tools.ts # 工具注册表与工厂
├── context.ts # 系统/用户上下文构建器
├── query.ts # 查询上下文准备
├── setup.ts # 启动阶段编排
├── history.ts # 聊天会话历史
├── cost-tracker.ts # Token 用量与定价
├── ink.ts # Ink 渲染封装
├── replLauncher.tsx # REPL React 组件启动器
├── tasks.ts # 任务执行管理器
├── commands/ # 101 个命令模块(斜杠命令)
├── tools/ # 41 个工具实现
├── services/ # 核心服务(API、MCP、分析等)
├── components/ # React/Ink UI 组件(130+ 文件)
├── utils/ # 工具函数(300+ 文件)
├── state/ # 应用状态管理
├── types/ # TypeScript 类型定义
├── hooks/ # React Hooks
├── schemas/ # Zod 验证模式
├── tasks/ # 任务类型实现
├── entrypoints/ # 入口点定义(CLI、SDK、MCP
├── bootstrap/ # 应用启动与全局状态
├── screens/ # 全屏 UI 布局
├── plugins/ # 插件系统(内置插件)
├── skills/ # 自定义技能系统(内置技能)
├── memdir/ # 内存目录自动发现
├── constants/ # 应用常量
├── migrations/ # 数据/模式迁移
├── ink/ # Ink 终端自定义
├── keybindings/ # 键盘绑定系统
├── context/ # React Context(信箱、通知)
├── query/ # 查询处理模块
├── outputStyles/ # 输出格式化样式
├── vim/ # Vim 模式集成
├── voice/ # 语音输入/输出
├── native-ts/ # 原生 TypeScript 绑定
├── assistant/ # Kairos(助手)模式
├── bridge/ # Bridge 模式(常驻远程连接)
├── buddy/ # Buddy/队友系统
├── coordinator/ # 多 Agent 协调
├── remote/ # 远程会话处理
├── server/ # 服务器实现
├── cli/ # CLI 参数解析
└── upstreamproxy/ # 上游代理设置
```
---
## 4. 入口点
### 主入口:`src/main.tsx`
主引导文件(约 1,400 行)。执行以下操作:
1. 通过 `startupProfiler.ts` 进行**启动性能分析**
2. **MDM(移动设备管理)** 原始数据预读取
3. **钥匙串预取**macOS OAuth + API 密钥并行读取)
4. 通过 Bun 的 `feature()` 进行**特性标志初始化**,实现死代码消除
5. 通过 Commander.js 进行 **CLI 参数解析**
6. **身份认证**API 密钥、OAuth、AWS Bedrock、GCP Vertex、Azure
7. **GrowthBook** 初始化(A/B 测试与特性标志)
8. **策略限制**和**远程托管设置**加载
9. **工具、命令、技能和 MCP 服务器**注册
10. 通过 `replLauncher.tsx` **启动 REPL**
### 其他入口点(`src/entrypoints/`
| 文件 | 用途 |
|---------------------|----------------------------------------------|
| `cli.tsx` | CLI 入口点,带 React/Ink UI 渲染 |
| `init.ts` | 引导初始化、版本检查 |
| `mcp.ts` | Model Context Protocol 集成 |
| `agentSdkTypes.ts` | Agent SDK 的类型定义 |
| `sandboxTypes.ts` | 沙箱执行环境类型 |
| `sdk/` | SDK 相关实现 |
### 启动阶段:`src/setup.ts`
负责编排:
- Node.js 版本验证
- 工作树初始化
- 会话与权限模式设置
- Git 根目录检测
- UDS 消息服务器启动
---
## 5. 核心架构
### 5.1 查询引擎(`src/QueryEngine.ts`
应用的核心(约 46KB)。管理用户与 Claude 之间的对话循环:
- **消息管理** — 维护包含用户、助手、系统和工具消息的对话历史
- **流式传输** — 实时 Token 流式传输与工具调用执行
- **自动压缩** — 当接近上下文窗口限制时自动压缩上下文
- **提示词缓存** — 通过缓存感知策略优化重复上下文
- **重试逻辑** — 处理 API 错误、速率限制和过载,支持退避策略
- **用量追踪** — 统计 Token 数量(输入/输出/缓存读取/缓存写入)和成本
- **工具编排** — 分发工具调用、收集结果、管理权限
### 5.2 上下文构建器(`src/context.ts`、`src/query.ts`
准备系统提示词和用户上下文:
- 发现并合并 `CLAUDE.md` 文件(项目级、用户级、全局级)
- 构建系统上下文(操作系统、Shell、平台、Git 状态)
- 集成用户上下文(权限、工作目录)
- 跨查询缓存上下文以提升性能
### 5.3 成本追踪(`src/cost-tracker.ts`
追踪每次会话的成本:
- 按模型统计 Token 数量(输入、输出、缓存读取/写入)
- 通过定价表计算美元成本
- 会话持续时间追踪
- 网络搜索请求计数
- 文件变更指标
---
## 6. 工具系统
### 架构(`src/Tool.ts`、`src/tools.ts`
每个工具都是一个自包含的模块,包含:
- **JSON Schema** 输入验证
- **权限模型**(询问/允许/拒绝模式)
- **进度追踪**类型
- **错误处理**和用户提示
### 完整工具清单(41 个工具)
#### 文件操作
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `FileReadTool` | 读取文件内容,支持行范围 |
| `FileWriteTool` | 创建或覆盖文件 |
| `FileEditTool` | 精确字符串替换编辑 |
| `GlobTool` | 基于模式的文件匹配 |
| `GrepTool` | 基于正则的内容搜索(基于 ripgrep) |
#### 代码执行
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `BashTool` | 执行 Shell 命令,支持超时 |
| `PowerShellTool` | 执行 PowerShell 命令(Windows |
| `REPLTool` | 执行 Python 代码(仅内部使用) |
| `NotebookEditTool`| Jupyter Notebook 单元格操作 |
#### 网络与搜索
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `WebFetchTool` | 获取并解析网页内容 |
| `WebSearchTool` | 互联网搜索 |
| `ToolSearchTool` | 搜索可用的延迟加载工具 |
#### Agent 与任务管理
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `AgentTool` | 生成子 Agent 进行并行工作 |
| `TaskCreateTool` | 创建新的后台任务 |
| `TaskGetTool` | 获取任务状态和结果 |
| `TaskUpdateTool` | 更新任务状态或描述 |
| `TaskListTool` | 列出所有任务及其状态 |
| `TaskStopTool` | 终止正在运行的任务 |
| `TaskOutputTool` | 流式读取任务输出 |
| `SendMessageTool` | 向运行中的 Agent 发送消息 |
#### 计划与工作流
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `EnterPlanModeTool` | 进入只读计划模式 |
| `ExitPlanModeTool` | 退出计划模式并获得批准 |
| `EnterWorktreeTool` | 创建隔离的 Git 工作树 |
| `ExitWorktreeTool` | 从工作树返回并携带变更 |
#### MCPModel Context Protocol
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `MCPTool` | 调用 MCP 服务器上的工具 |
| `McpAuthTool` | MCP 服务器认证 |
| `ListMcpResourcesTool` | 列出 MCP 服务器资源 |
| `ReadMcpResourceTool` | 读取特定 MCP 资源 |
#### 配置与系统
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `ConfigTool` | 读取/修改设置 |
| `SkillTool` | 执行用户自定义技能 |
| `AskUserQuestionTool` | 提示用户输入/确认 |
| `BriefTool` | 生成会话摘要 |
| `TodoWriteTool` | 管理待办事项列表 |
| `SleepTool` | 暂停执行指定时长 |
#### 团队与远程
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `TeamCreateTool` | 创建 Agent 团队 |
| `TeamDeleteTool` | 删除 Agent 团队 |
| `RemoteTriggerTool` | 触发远程任务执行 |
| `ScheduleCronTool` | 调度定时任务 |
| `LSPTool` | Language Server Protocol 集成 |
#### 内部工具
| 工具 | 用途 |
|-------------------|--------------------------------------------|
| `SyntheticOutputTool` | 用于结构化响应的合成输出 |
---
## 7. 命令系统
### 注册表(`src/commands.ts`
命令是 `src/commands/` 下的模块化目录,每个目录包含一个 `index.ts`(或类似文件),导出一个 `Command` 定义,包含名称、描述、处理函数和可选的别名。
### 完整命令清单(101 个模块)
#### Git 与版本控制
`commit``commit-push-pr``diff``branch``review``autofix-pr``pr_comments``teleport``rewind``tag`
#### 会话与历史
`session``resume``clear``compact``export``share``summary``context`
#### 配置与设置
`config``permissions``privacy-settings``theme``color``keybindings``vim``output-style``statusline``env`
#### Agent 与任务管理
`agents``tasks``brief`
#### 文件与代码操作
`files``add-dir``diff``debug-tool-call``copy`
#### 开发与调试
`doctor``heapdump``perf-issue``stats``bughunter``ctx_viz``ant-trace`
#### 身份认证
`login``logout``oauth-refresh`
#### 扩展与插件
`mcp``plugin``reload-plugins``skills`
#### 工作区
`plan``sandbox-toggle``init`
#### 信息与帮助
`help``version``cost``usage``extra-usage``release-notes``status``insights`
#### 平台集成
`desktop``mobile``chrome``ide``install``install-github-app``install-slack-app`
#### 记忆与知识
`memory``good-claude`
#### 模型与性能
`model``effort``fast``thinkback``thinkback-play``advisor`
#### 特殊操作
`bridge``voice``remote-setup``remote-env``stickers``feedback``onboarding``passes``ultraplan``rename``exit`
---
## 8. 状态管理
### Store 架构(`src/state/`
| 文件 | 用途 |
|-------------------|------------------------------------------------|
| `AppState.tsx` | React Context 提供者,带 `useAppState(selector)` Hook |
| `AppStateStore.ts`| 中心状态结构定义 |
| `store.ts` | Zustand 风格 Store 实现 |
### 关键状态字段
```typescript
{
settings: UserSettings // 来自 settings.json 的用户配置
mainLoopModel: string // 当前活跃的 Claude 模型
messages: Message[] // 对话历史
tasks: TaskState[] // 运行中/已完成的任务
toolPermissionContext: { // 每个工具的权限规则
rules: PermissionRule[]
bypassMode: 'auto' | 'block' | 'ask'
denialTracking: DenialTrackingState
}
kairosEnabled: boolean // 助手模式标志
remoteConnectionStatus: Status // 远程会话连接状态
replBridgeEnabled: boolean // 常驻桥接(CCR)状态
speculationState: Cache // 内联推测缓存/预览
}
```
---
## 9. 任务系统
### 任务类型(`src/Task.ts`
| 类型 | 描述 |
|-----------------------|-------------------------------------------------|
| `local_bash` | 本地 Shell 命令执行 |
| `local_agent` | 本地子 Agent(通过 AgentTool 生成) |
| `remote_agent` | 远程 Agent 执行 |
| `in_process_teammate` | 进程内队友(共享内存空间) |
| `local_workflow` | 本地多步骤工作流 |
| `monitor_mcp` | MCP 服务器监控任务 |
| `dream` | 自动梦境后台任务 |
### 任务生命周期
```text
pending -> running -> completed
-> failed
-> killed
```
### 任务状态结构
```typescript
{
id: string // 带类型前缀的唯一 ID(例如 "b-xxx" 表示 bash
type: TaskType
status: TaskStatus
description: string
startTime: number
endTime?: number
outputFile: string // 磁盘持久化输出
outputOffset: number // 当前读取位置
notified: boolean // 是否已报告完成
}
```
---
## 10. 服务与集成
### 10.1 API 客户端(`src/services/api/`
| 文件 | 用途 |
|-----------------------------|----------------------------------------------|
| `client.ts` | Anthropic SDK 客户端,支持多提供商 |
| `claude.ts` | 消息流式传输与工具调用处理 |
| `bootstrap.ts` | 启动时获取引导数据 |
| `usage.ts` | Token 用量记录 |
| `errors.ts` / `errorUtils.ts` | 错误分类与处理 |
| `logging.ts` | API 请求/响应日志 |
| `withRetry.ts` | 指数退避重试逻辑 |
| `filesApi.ts` | 文件上传/下载 |
| `sessionIngress.ts` | 远程会话桥接 |
| `grove.ts` | Grove 集成 |
| `referral.ts` | 推荐/通行证系统 |
**支持的提供商:**
- Anthropic 直连 API
- AWS Bedrock
- Google Cloud Vertex AI
- Azure Foundry
### 10.2 MCP 集成(`src/services/mcp/`
| 文件 | 用途 |
|-------------------------|------------------------------------------------|
| `client.ts` | MCP 客户端实现 |
| `types.ts` | 服务器定义与连接类型 |
| `config.ts` | 配置加载与验证 |
| `auth.ts` | MCP 服务器的 OAuth/认证 |
| `officialRegistry.ts` | 官方 MCP 服务器注册表 |
| `InProcessTransport.ts` | 进程内 MCP 传输 |
| `normalization.ts` | URL/配置规范化 |
| `elicitationHandler.ts` | 通过 MCP 提示用户 |
### 10.3 分析与遥测(`src/services/analytics/`
| 文件 | 用途 |
|-----------------------------|--------------------------------------------|
| `index.ts` | 事件日志 API |
| `growthbook.ts` | 特性标志与 A/B 测试 |
| `sink.ts` | 分析接收器配置 |
| `datadog.ts` | Datadog 集成 |
| `firstPartyEventLogger.ts` | 第一方分析 |
| `metadata.ts` | 事件元数据增强 |
### 10.4 上下文压缩(`src/services/compact/`
| 文件 | 用途 |
|----------------------------|---------------------------------------------|
| `compact.ts` | 完整上下文窗口压缩 |
| `autoCompact.ts` | 自动压缩触发器 |
| `microCompact.ts` | 选择性消息修剪 |
| `compactWarning.ts` | 压缩用户警告 |
| `sessionMemoryCompact.ts` | 跨压缩的记忆持久化 |
### 10.5 其他服务
| 目录/文件 | 用途 |
|-------------------------------|-------------------------------------------|
| `SessionMemory/` | 会话记忆持久化与转录 |
| `MagicDocs/` | 智能文档生成 |
| `AgentSummary/` | Agent 执行摘要 |
| `PromptSuggestion/` | 建议的后续提示词 |
| `extractMemories/` | 从对话中提取学习内容 |
| `plugins/` | 插件生命周期管理 |
| `oauth/` | OAuth 客户端流程 |
| `lsp/` | Language Server Protocol 客户端 |
| `remoteManagedSettings/` | 远程配置同步 |
| `settingsSync/` | 设置同步 |
| `teamMemorySync/` | 团队记忆同步 |
| `policyLimits/` | 速率限制与配额 |
| `autoDream/` | 自动梦境后台功能 |
| `tips/` | 上下文提示系统 |
| `toolUseSummary/` | 工具使用分析 |
| `voice.ts` / `voiceStreamSTT.ts` | 语音输入处理 |
---
## 11. UI 层
### 框架
UI 使用 **React** 构建,通过 **Ink** 渲染到终端。组件使用标准 React 模式(Hooks、Context、Props),但渲染为终端 ANSI 输出而非 DOM。
### 核心应用组件
| 组件 | 文件 | 用途 |
|--------------------|-------------------------------|-------------------------------|
| `App` | `components/App.tsx` | 根应用组件 |
| `REPL` | `screens/REPL.tsx` | 主 REPL 界面 |
| `Messages` | `components/Messages.tsx` | 对话消息列表 |
| `PromptInput` | `components/PromptInput/` | 带自动补全的用户输入 |
| `StatusLine` | `components/StatusLine.tsx` | 底部状态栏 |
### 组件分类
#### 消息展示
`Message.tsx``MessageRow.tsx``MessageResponse.tsx``MessageModel.tsx``MessageTimestamp.tsx``MessageSelector.tsx``messages/`(专用消息类型子目录)
#### 对话框与模态组件
`TrustDialog/``AutoModeOptInDialog.tsx``BypassPermissionsModeDialog.tsx``CostThresholdDialog.tsx``BridgeDialog.tsx``ExportDialog.tsx``InvalidConfigDialog.tsx``InvalidSettingsDialog.tsx``ManagedSettingsSecurityDialog/``IdeAutoConnectDialog.tsx``IdleReturnDialog.tsx``WorktreeExitDialog.tsx``RemoteEnvironmentDialog.tsx`
#### 代码展示
`HighlightedCode/``StructuredDiff/``FileEditToolDiff.tsx`
#### 设置与配置
`Settings/``ThemePicker.tsx``OutputStylePicker.tsx``ModelPicker.tsx``LanguagePicker.tsx`
#### 任务与 Agent UI
`tasks/``teams/``agents/``CoordinatorAgentStatus.tsx``TaskListV2.tsx``TeammateViewHeader.tsx`
#### 导航与搜索
`GlobalSearchDialog.tsx``HistorySearchDialog.tsx``QuickOpenDialog.tsx``SearchBox.tsx`
#### 设计系统
`design-system/``Spinner/``CustomSelect/``LogoV2/``HelpV2/`
#### 权限
`permissions/`(基于角色的访问对话框和提示)
---
## 12. 工具函数
`src/utils/` 目录包含 **300+ 文件**,提供底层功能。主要分类:
### Git 与版本控制
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `git.ts` | Git 命令封装 |
| `git/` | 扩展 Git 工具 |
| `gitDiff.ts` | Diff 生成与解析 |
| `gitSettings.ts`| Git 指令开关 |
| `github/` | GitHub API 辅助工具 |
| `worktree.ts` | Git 工作树自动化 |
### Shell 与进程
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `Shell.ts` | Shell 执行封装 |
| `shell/` | Shell 配置与辅助工具 |
| `bash/` | Bash 专用工具 |
| `powershell/` | PowerShell 工具 |
| `execFileNoThrow.ts` | 安全进程启动 |
| `process.ts` | 进程管理 |
### 认证与安全
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `auth.ts` | API 密钥、OAuth、AWS/GCP 凭证管理 |
| `secureStorage/`| 钥匙串集成(macOS) |
| `permissions/` | 权限规则、文件系统沙箱 |
| `crypto.ts` | 加密工具 |
| `sandbox/` | 沙箱环境 |
### 配置
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `config.ts` | `.claude/config.json` 管理 |
| `settings/` | `settings.json` 验证与应用 |
| `env.ts` | 静态环境变量 |
| `envDynamic.ts` | 动态环境检测 |
| `envUtils.ts` | 环境变量解析 |
| `managedEnv.ts` | 托管环境配置 |
### 文件系统
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `claudemd.ts` | CLAUDE.md 自动发现与解析 |
| `fileStateCache.ts` | 文件变更追踪 |
| `fileHistory.ts`| 文件快照(用于撤销) |
| `filePersistence/` | 持久化文件存储 |
| `glob.ts` | Glob 模式匹配 |
| `ripgrep.ts` | Ripgrep 集成 |
### AI 与模型
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `model/` | 模型选择与上下文窗口管理 |
| `modelCost.ts` | Token 定价表 |
| `thinking.ts` | 扩展思考模式配置 |
| `effort.ts` | 任务工作量级别管理 |
| `fastMode.ts` | 速度优化模式 |
| `advisor.ts` | AI 顾问集成 |
| `tokens.ts` | Token 计数与估算 |
### Agent 与集群
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `swarm/` | 多 Agent 集群协调 |
| `teammate.ts` | 队友/Agent 模式工具 |
| `forkedAgent.ts`| 分叉 Agent 进程管理 |
| `agentContext.ts`| Agent 执行上下文 |
### 性能与诊断
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `startupProfiler.ts` | 启动性能监控 |
| `headlessProfiler.ts`| 运行时性能分析 |
| `fpsTracker.ts` | 帧率指标 |
| `diagLogs.ts` | 诊断日志(无 PII) |
| `debug.ts` | 调试工具 |
### UI 辅助工具
| 文件/目录 | 用途 |
|-----------------|------------------------------------------------|
| `theme.ts` | 主题管理 |
| `renderOptions.ts` | Ink 渲染配置 |
| `format.ts` | 数字/时长格式化 |
| `markdown.ts` | Markdown 处理 |
| `cliHighlight.ts` | CLI 语法高亮 |
---
## 13. 特殊模式
### 13.1 Bridge 模式(`src/bridge/`
通过基于 WebSocket 的会话入口与 Claude.ai 保持常驻连接。支持持久化后台会话和远程访问。
### 13.2 Kairos / 助手模式(`src/assistant/`
企业助手功能:
- 后台任务处理
- 推送通知
- GitHub Webhook 订阅
- 远程任务监控
- 通过 `KAIROS` 标志进行功能门控
### 13.3 协调器模式(`src/coordinator/`
多 Agent 编排:
- 任务面板管理
- Agent 交互协调
- 通过 `COORDINATOR_MODE` 标志进行功能门控
### 13.4 语音模式(`src/voice/`
语音输入/输出支持:
- 语音转文字(STT)集成
- 文字转语音
- 语音转录
- 语音关键词检测
### 13.5 计划模式
用于在编码前设计实现策略的只读模式:
-`.claude/plans/` 中创建计划文件
- 限制工具为只读操作
- 执行前需要用户明确批准
-`EnterPlanModeTool` / `ExitPlanModeTool` 管理
### 13.6 工作树模式
用于安全实验的 Git 工作树隔离:
- 创建临时 Git 工作树
- 支持 tmux 会话管理
- 临时分支创建
- 变更可以合并或丢弃
### 13.7 Vim 模式(`src/vim/`
终端输入的 Vim 键绑定集成。
---
## 14. 插件与技能
### 插件系统(`src/plugins/`
- `plugins/bundled/` 中的**内置插件**(键盘快捷键、主题等)
- 通过 `PluginInstallationManager` 管理插件生命周期
- 用于插件管理的 CLI 命令
- 通过 `reload-plugins` 命令支持热重载
### 技能系统(`src/skills/`
- `skills/bundled/` 中的**内置技能**(提交、审查、简化等)
- 技能是可通过 `/skill-name` 调用的命名提示词
- 技能发现与执行引擎
- 变更检测支持实时更新
---
## 15. 钩子与可扩展性
### 钩子模式(`src/schemas/hooks.ts`
通过 Zod 验证定义:
- `HookEvent` — 执行前/执行后生命周期钩子
- `PromptRequest` / `PromptResponse` — 用户提示协议
- 同步和异步钩子响应模式
- 权限决策钩子
### React Hooks`src/hooks/`
| Hook | 用途 |
|---------------------|--------------------------------------------|
| `useSettings` | 设置变更检测 |
| `useTerminalSize` | 终端尺寸追踪 |
| `useExitOnCtrlC` | 信号处理 |
| `useBlink` | 光标闪烁动画 |
| `useDoublePress` | 双按键检测 |
| `useCanUseTool` | 工具权限验证 |
### 工具 Hooks`src/utils/hooks/`
用于 Shell 配置、权限状态和工具行为的额外 Hooks。
---
## 16. 文件统计
| 分类 | 数量 |
|-----------------------------|---------|
| **TypeScript 文件总数** | 1,884 |
| **命令模块** | 101 |
| **工具实现** | 41 |
| **UI 组件** | 130+ |
| **工具函数文件** | 300+ |
| **服务模块** | 35+ |
| **顶层源文件** | 18 |
| **入口点** | 6 |
| **`src/` 中的子目录** | 37 |
---
## 17. 架构模式
### 延迟加载与死代码消除
通过 `require()` 条件导入,由 Bun 的 `feature()` 标志门控。这使得在打包时可以对整个子系统(例如 `KAIROS``COORDINATOR_MODE`)进行 Tree-Shaking。
```typescript
const assistantModule = feature('KAIROS')
? require('./assistant/index.js')
: null;
```
### 基于工具的执行模型
与外部世界的每次交互都通过已注册的 `Tool` 进行。工具具有:
- 声明式 JSON Schema 输入
- 执行前的权限检查
- 执行期间的进度报告
- 结构化结果输出
### 命令模式
斜杠命令是模块化目录,每个目录导出一个 `Command` 对象。`commands.ts` 中的注册表将它们聚合在一起,支持可选的特性门控条件。
### 消息驱动架构
对话是一系列类型化消息(`UserMessage``AssistantMessage``SystemMessage``ProgressMessage` 等),由 `QueryEngine` 管理。工具结果作为 `ToolResultBlockParam` 消息注入。
### 上下文压缩
当对话上下文接近模型窗口限制时,系统自动压缩旧消息,同时保留关键上下文。提供多种策略:完整压缩、微压缩(选择性修剪)和会话记忆持久化。
### 权限优先安全模型
每次工具执行都经过权限检查。模式包括:
- **询问** — 每次操作都提示用户
- **自动允许** — 基于信任规则允许
- **拒绝** — 阻止特定操作
- **文件系统沙箱** — 将文件访问限制在项目目录内
### React 终端 UI
整个 UI 是通过 Ink 渲染的 React 组件树。这使得以下特性成为可能:
- 声明式 UI 更新
- 组件组合与复用
- 状态驱动渲染
- 针对终端特定行为的 Hooks(光标、窗口调整、键盘)
---
---
## 贡献
欢迎贡献!如果你发现了额外的架构细节、发现了不准确之处,或想扩展特定子系统的覆盖范围:
1. **Fork** 本仓库
2. 为你的更改**创建分支**`git checkout -b fix/tool-system-details`
3. **提交 Pull Request**,并附上清晰的描述说明你添加或修正了什么
请保持贡献的事实性和技术准确性。这是一份参考文档——推测内容应明确标注。
---
> **免责声明:** 这是一份非官方的独立分析。Claude Code 是 [Anthropic](https://www.anthropic.com/) 的产品。所有商标归其各自所有者所有。
*生成于 2025-03-31。基于对 Claude Code 源码树的分析。*
+4 -2
View File
@@ -3,7 +3,7 @@
# Claude Code 源码分析
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Documentation](https://img.shields.io/badge/docs-DOCUMENTATION.md-green.svg)](DOCUMENTATION.md)
[![Documentation](https://img.shields.io/badge/docs-DOCUMENTATION.md-green.svg)](DOCUMENTATION.zh-CN.md)
[![English](https://img.shields.io/badge/language-English-brightgreen.svg)](README.md)
[![中文](https://img.shields.io/badge/语言-中文-orange.svg)](README.zh-CN.md)
@@ -73,6 +73,8 @@ open DOCUMENTATION.md
---
📖 **[阅读完整分析 →](DOCUMENTATION.md)**
📖 **[阅读完整分析(中文)](DOCUMENTATION.zh-CN.md)**
📖 **[阅读完整分析(English](DOCUMENTATION.md)**
🇺🇸 **[English Version →](README.md)**