first commit
This commit is contained in:
171
claude-code-中文Wiki/README.md
Normal file
171
claude-code-中文Wiki/README.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# Claude Code 源码中文 Wiki
|
||||
|
||||
本文件说明:总索引文档,介绍整个 Wiki 的结构和各部分内容。
|
||||
|
||||
## 概述
|
||||
|
||||
Claude Code 是 Anthropic 开发的 CLI 工具,用于在终端环境中与 Claude 交互完成软件工程任务。本 Wiki 基于 2026-03-31 通过 npm source map 泄露的源码进行详细分析。
|
||||
|
||||
## 项目规模
|
||||
|
||||
- **文件数量**:约 1900 个文件
|
||||
- **代码规模**:512K+ 行代码
|
||||
- **源码泄露时间**:2026-03-31(通过 npm source map)
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 组件 | 技术 |
|
||||
|------|------|
|
||||
| 运行时 | Bun |
|
||||
| 语言 | TypeScript |
|
||||
| 终端 UI | React + Ink |
|
||||
| CLI 框架 | Commander.js |
|
||||
| 参数校验 | Zod v4 |
|
||||
| 代码搜索 | ripgrep |
|
||||
| 构建工具 | Bun bundle |
|
||||
|
||||
## Wiki 结构
|
||||
|
||||
### 1. 架构总览 (`01-架构总览.md`)
|
||||
|
||||
介绍 Claude Code 的整体架构设计,包括:
|
||||
- 项目背景与定位
|
||||
- 技术栈详解
|
||||
- 核心架构设计
|
||||
- 源码泄露事件
|
||||
|
||||
### 2. 核心模块详解 (`02-核心模块详解.md`)
|
||||
|
||||
详细分析以下核心文件的实现原理:
|
||||
|
||||
| 文件 | 功能 |
|
||||
|------|------|
|
||||
| `src/main.tsx` | CLI 入口点,应用程序初始化 |
|
||||
| `src/QueryEngine.ts` | LLM 查询引擎核心,处理流式响应、工具调用循环、思考模式、重试逻辑、token 计数 |
|
||||
| `src/Tool.ts` | 工具基类和接口定义,工具注册表核心 |
|
||||
| `src/commands.ts` | 命令注册中心,所有 slash command 的注册和管理 |
|
||||
| `src/context.ts` | 系统/用户上下文收集,Git 状态、CLAUDE.md 处理 |
|
||||
| `src/cost-tracker.ts` | Token 成本追踪,费用计算 |
|
||||
| `src/query.ts` | 查询管道,消息处理循环 |
|
||||
|
||||
### 3. 工具系统 (`03-工具系统.md`)
|
||||
|
||||
详细介绍所有内置工具的实现:
|
||||
|
||||
**文件操作工具**
|
||||
- `BashTool` - 执行 Shell 命令
|
||||
- `FileReadTool` - 读取文件(支持文本、图片、PDF、Jupyter Notebook)
|
||||
- `FileWriteTool` - 写入文件
|
||||
- `FileEditTool` - 编辑文件(支持 Search/Replace 模式)
|
||||
- `GlobTool` - 文件模式匹配
|
||||
- `GrepTool` - 代码搜索
|
||||
- `NotebookEditTool` - Jupyter Notebook 编辑
|
||||
|
||||
**Web 工具**
|
||||
- `WebFetchTool` - 获取网页内容
|
||||
- `WebSearchTool` - 网络搜索
|
||||
|
||||
**Agent 与团队工具**
|
||||
- `AgentTool` - 创建和管理子 Agent
|
||||
- `TeamCreateTool` - 创建 Agent 团队
|
||||
- `TeamDeleteTool` - 删除团队
|
||||
- `SendMessageTool` - 向团队成员发送消息
|
||||
|
||||
**任务管理工具**
|
||||
- `TaskCreateTool` - 创建任务
|
||||
- `TaskGetTool` - 获取任务详情
|
||||
- `TaskUpdateTool` - 更新任务状态
|
||||
- `TaskListTool` - 列出任务
|
||||
- `TaskStopTool` - 停止任务
|
||||
- `TaskOutputTool` - 获取任务输出
|
||||
- `TodoWriteTool` - 待办事项管理
|
||||
|
||||
**模式与工作流工具**
|
||||
- `EnterPlanModeTool` - 进入计划模式
|
||||
- `ExitPlanModeTool` - 退出计划模式
|
||||
- `EnterWorktreeTool` - 进入 Git Worktree
|
||||
- `ExitWorktreeTool` - 退出 Git Worktree
|
||||
|
||||
**搜索与技能工具**
|
||||
- `ToolSearchTool` - 工具搜索
|
||||
- `SkillTool` - 技能执行
|
||||
- `MCPTool` - Model Context Protocol 工具
|
||||
|
||||
**其他工具**
|
||||
- `LSPTool` - 语言服务器协议工具
|
||||
- `CronCreateTool` - 创建定时任务
|
||||
- `RemoteTriggerTool` - 远程触发器
|
||||
- `SleepTool` - 延迟执行
|
||||
- `SyntheticOutputTool` - 结构化输出
|
||||
|
||||
## 核心概念
|
||||
|
||||
### 1. 工具系统 (Tool System)
|
||||
|
||||
Claude Code 的工具系统基于 `Tool` 基类构建,每个工具实现:
|
||||
- `call()` - 工具执行逻辑
|
||||
- `description()` - 工具描述
|
||||
- `inputSchema` - 输入参数校验
|
||||
- `checkPermissions()` - 权限检查
|
||||
- `renderToolUseMessage()` - 渲染工具使用消息
|
||||
- `renderToolResultMessage()` - 渲染工具结果消息
|
||||
|
||||
### 2. 查询引擎 (Query Engine)
|
||||
|
||||
QueryEngine 是核心查询处理组件:
|
||||
- 管理对话生命周期
|
||||
- 处理流式 API 响应
|
||||
- 执行工具调用循环
|
||||
- 支持思考模式 (Thinking Mode)
|
||||
- 实现自动压缩 (Auto-compact) 机制
|
||||
|
||||
### 3. 命令系统 (Command System)
|
||||
|
||||
命令系统支持多种命令类型:
|
||||
- `prompt` - 展开为提示文本发送给模型
|
||||
- `local` - 本地执行的命令
|
||||
- `local-jsx` - 本地执行并渲染 Ink UI
|
||||
|
||||
### 4. 上下文管理 (Context Management)
|
||||
|
||||
上下文系统收集:
|
||||
- Git 状态信息
|
||||
- CLAUDE.md 文件内容
|
||||
- 用户上下文
|
||||
- 系统上下文
|
||||
|
||||
### 5. 成本追踪 (Cost Tracking)
|
||||
|
||||
成本追踪系统记录:
|
||||
- 输入/输出 Token 数量
|
||||
- 缓存读写 Token
|
||||
- Web 搜索请求次数
|
||||
- API 调用时长
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
claude-code-源码/
|
||||
├── src/
|
||||
│ ├── main.tsx # CLI 入口
|
||||
│ ├── QueryEngine.ts # 查询引擎
|
||||
│ ├── Tool.ts # 工具基类
|
||||
│ ├── commands.ts # 命令注册
|
||||
│ ├── context.ts # 上下文收集
|
||||
│ ├── cost-tracker.ts # 成本追踪
|
||||
│ ├── query.ts # 查询管道
|
||||
│ ├── tools/ # 工具实现
|
||||
│ │ ├── BashTool/
|
||||
│ │ ├── FileReadTool/
|
||||
│ │ ├── FileEditTool/
|
||||
│ │ ├── AgentTool/
|
||||
│ │ └── ...(其他工具)
|
||||
│ └── ...(其他模块)
|
||||
└── package.json
|
||||
```
|
||||
|
||||
## 扩展阅读
|
||||
|
||||
- 深入理解工具系统请阅读 `03-工具系统.md`
|
||||
- 深入理解核心模块请阅读 `02-核心模块详解.md`
|
||||
- 架构概览请阅读 `01-架构总览.md`
|
||||
Reference in New Issue
Block a user