https://github.com/huangserva/claude-code-cli 使用这个code base来研究一下claude code源码。
基础技术
Claud code 使用如下技术栈实现了交互式的命令行界面,让工程师可以直接在终端中与 Claude 协作,进行代码编写。
| 类别 | 技术 |
|---|---|
| 语言 | TypeScript / TSX |
| 运行时 | Bun |
| TUI | Ink(React) |
| CLI | Commander.js |
| 终端样式 | Chalk |
实现一个简单的code-gen-cli 有助于理解Claude code的基础技术。
https://github.com/JasonQQ/claude
系统架构图

系统架构图
用户的指令执行

用户的指令执行
任务系统

任务系统
工具的执行会转化成一个任务并且维护AppState,任务注册到AppState并且可以持久化。任务意味着也可以被结束(kill)。
上下文和记忆策略

多层次的策略管理
使用多层次的策略管理上下文,减少Token的消耗。
工具框架

工具框架
工具的接口定义:Tool<Input, Output, P>
工具使用ToolUseContext作为交互管道。
Multi-Agnet系统

Multi-Agnet系统
AgentTool可以fork多个sub-agents,这些子Agent继承了父Agent的工具、权限和上下文。
Bridge 系统
Bridge 系统(也称为远程控制 CCR)使得本地的 CLI 实例能够作为网页界面的远程执行环境。Bridge 的架构包含一个长轮询工作进程,该进程会将本地机器注册为一个可用的“环境”。