本目录中的源码由
cli.js.map中的sources与sourcesContent还原得到,重点保留包自身的src/**源文件。这份 README 不是简单目录说明,而是一份面向源码阅读者的技术导读首页。
这份还原源码对应的是 Claude Code 2.1.88 的终端 Agent 工程。它不是单纯的命令行脚本集合,而是一套完整的终端应用与 agent 执行系统,主要包括:
- 启动与运行模式装配
- 命令系统
- 工具系统
- 交互式终端 UI
- 查询执行内核
- 任务与状态管理
- MCP / 插件 / 技能扩展能力
从源码结构上看,这个项目更像“终端中的多层 Agent 平台”,而不是单一用途的 CLI。
这份还原源码主要用于回答四类问题:
- Claude Code 的整体架构是什么
- 命令系统如何组织
- 工具系统如何装配与裁剪
- 从启动到工具执行的主链路如何贯通
- 包入口:
node_modules/@anthropic-ai/claude-code/cli.js - Source Map:
node_modules/@anthropic-ai/claude-code/cli.js.map - 还原源码:
reconstructed/src - 还原摘要:
reconstructed/restore-summary.json
本次共还原出约 1902 个包自身源码文件。
这次分析已经拆成四份文档,分别解决不同层次的问题:
-
README.md总览文档,适合先建立整体认识,先看项目定位、架构、流程和推荐阅读顺序。 -
COMMANDS_ANALYSIS.md命令系统清单、分类与职责分析,适合回答“这个 CLI 暴露了哪些命令入口,它们大致属于什么类别”。 -
TOOLS_ANALYSIS.md工具系统装配逻辑、能力矩阵与风险面分析,适合回答“模型到底能调用哪些能力,这些工具如何被筛选和组合”。 -
EXECUTION_FLOW.md主执行链分析,覆盖main.tsx -> REPL / QueryEngine -> query -> tools,适合回答“从启动到工具执行的主流程到底怎么跑起来”。 -
SOURCE_INDEX.md全量目录与文件索引,适合逐目录检索文件用途,按目录分组列出每个文件并附带作用说明。
从还原出的源码结构看,这不是一个“普通命令行工具”,而是一个终端中的 agent 系统。它同时具备:
- 命令系统
- 工具执行系统
- 交互式终端 UI
- 会话与状态管理
- 多任务 / 多代理支持
- MCP / 插件 / 技能扩展机制
- 远程连接与桥接能力
flowchart TD
A["main.tsx<br/>系统启动与总装配"] --> B["commands.ts / commands/<br/>命令入口层"]
A --> C["tools.ts / Tool.ts / tools/<br/>工具系统"]
A --> D["components + screens + ink<br/>终端交互层"]
A --> E["QueryEngine.ts + query.ts<br/>查询执行内核"]
A --> F["Task.ts + tasks/ + state/<br/>任务与状态层"]
A --> G["services/<br/>外部服务与集成"]
A --> H["utils + hooks + constants + types<br/>基础设施层"]
flowchart LR
A["启动 CLI"] --> B["main.tsx 解析参数、权限、模式"]
B --> C["加载命令池 getCommands()"]
B --> D["加载工具池 getTools()"]
B --> E["setup() + 初始化状态"]
E --> F{"运行模式"}
F -->|"交互模式"| G["launchRepl() -> REPL.tsx"]
F -->|"非交互模式"| H["QueryEngine.submitMessage()"]
G --> I["handlePromptSubmit()"]
I --> J["processUserInput()"]
J --> K["query()"]
H --> K
K --> L["runTools() / StreamingToolExecutor"]
L --> M["具体 Tool 实现"]
M --> N["更新消息、任务、状态与 UI"]
关键文件:
src/main.tsxsrc/setup.tssrc/context.tssrc/bootstrap/
职责:
- 解释命令行参数
- 初始化权限和配置
- 装配命令池与工具池
- 初始化应用状态
- 决定进入 REPL 还是 headless 路径
关键文件:
src/commands.tssrc/commands/
职责:
- 定义 CLI 的命令入口面
- 组合内置命令、技能命令、插件命令和 MCP 命令
- 通过 feature flag 与运行环境控制命令可见性
详细分析见:
COMMANDS_ANALYSIS.md
关键文件:
src/tools.tssrc/Tool.tssrc/tools/src/utils/toolPool.ts
职责:
- 定义工具抽象与执行上下文
- 装配工具池
- 按权限、模式和 feature flag 过滤工具
- 与 MCP 工具及代理限制联合裁剪最终工具集
详细分析见:
TOOLS_ANALYSIS.md
关键文件:
src/QueryEngine.tssrc/query.tssrc/utils/handlePromptSubmit.tssrc/utils/processUserInput/processUserInput.ts
职责:
- 把用户输入转换成查询
- 组织 system prompt、messages、上下文和工具集
- 处理流式响应
- 识别并执行 tool use
- 把工具结果重新注入对话循环
详细分析见:
EXECUTION_FLOW.md
关键目录:
src/components/src/screens/src/ink/
职责:
- 构建交互式终端 UI
- 展示消息、任务、权限请求和状态变化
- 驱动 REPL 输入输出体验
关键文件:
src/Task.tssrc/tasks/src/state/src/history.ts
职责:
- 定义任务数据模型
- 管理本地任务、代理任务、后台任务
- 管理会话状态与应用状态
关键目录:
src/services/src/remote/src/server/src/bridge/src/plugins/src/skills/
职责:
- 连接外部平台与协议
- 支持 MCP、插件、技能、远程会话和桥接模式
按文件数量看,这份源码最重的几层是:
| 目录 | 文件数 | 判断 |
|---|---|---|
utils/ |
564 | 基础设施最重,说明底层能力极多 |
components/ |
389 | 终端 UI 复杂度很高 |
commands/ |
207 | 命令系统非常丰富 |
tools/ |
184 | 工具系统是核心能力层 |
services/ |
130 | 外部集成面较广 |
hooks/ |
104 | 交互层状态与副作用复杂 |
ink/ |
96 | 终端渲染层不是薄壳 |
src/main.tsxsrc/commands.tssrc/tools.tssrc/Tool.tssrc/QueryEngine.tssrc/query.ts
src/commands.tsCOMMANDS_ANALYSIS.mdsrc/commands/
src/Tool.tssrc/tools.tsTOOLS_ANALYSIS.mdsrc/tools/
EXECUTION_FLOW.mdsrc/main.tsxsrc/screens/REPL.tsxsrc/utils/handlePromptSubmit.tssrc/query.ts
SOURCE_INDEX.md
main.tsx是系统装配器,不是单纯入口脚本commands.ts决定外部命令接口面tools.ts决定模型可见工具集合Tool.ts定义工具契约与工具执行上下文REPL.tsx是交互态控制中心query.ts是真正的执行内核Task.ts主要是任务模型定义,具体任务执行更多落在tasks/*