源码深度学习 · 零基础友好

Claude Code CLI 源码学习

20 天 · 每天 30 分钟 · 逐层读懂一个真实的终端 AI 编码助手(claude-code-best · TypeScript + Bun + Ink)是怎么造出来的

00

开篇 · 这是个什么项目

我们要读的这个仓库 claude-code-best,是一个逆向实现(reverse-engineered)的 Anthropic Claude Code CLI——也就是"在终端里跟你结对编程的 AI 助手"的一个开源复刻版,而且加了不少官方没有的功能(远程控制、workflow 编排、语音等)。

🎯 一句话:它是一个跑在终端里的 AI Agent——你用自然语言下命令,它自己调用工具(读写文件、跑命令、搜索代码…)把编程任务干完。本教程带你逐层读懂"这样一个 Agent 从按下回车到干完活,内部到底发生了什么"。

它用 TypeScript 写、跑在 Bun 上、界面用 React + Ink 渲染到终端。规模不小:2500+ 个 .ts + 700+ 个 .tsx,还是个 monorepo。别被吓到——我们会顺着"一次对话的旅程"这条主线,把复杂度拆成 20 天可消化的小块。

为什么值得读? 因为它是当下最热的一类软件——"Agentic CLI"——的完整、真实实现。读懂它,你就理解了 agent 循环、工具调用、权限、MCP、终端 UI 这些 AI 应用的核心工程,能力可迁移到任何 AI 产品开发。
01

Agent 循环总图(动起来看)

整个 CLI 的灵魂就是一个循环。下面这颗发光的小球会绕着圈跑——它就是一次任务在 Agent 内部转的圈:你说话 → 模型思考 → 要用工具 → 执行工具 → 结果喂回模型 → 再思考……直到任务完成。今天不用懂细节,先把这个"圈"刻进脑子。

Agent
Loop
周而复始
直到完成
① 用户输入你的需求
② 请求模型拼上下文+工具
③ 流式回复文字/工具调用
④ 执行工具读写/跑命令
⑤ 回填结果喂回下一轮

落到这个项目里,这个圈由 src/QueryEngine.ts / src/query.ts 驱动,工具在 packages/builtin-tools,界面在 src/components(Ink)。这三块 + "什么时候停"的判断,就是核心中的核心(Day 03、06–10 细讲)。

ccb — 终端里的样子
帮我把 utils.ts 里的 fetchData 改成带重试的
● 我先看一下这个文件…
⎿ Read(utils.ts) ⎿ Edit(utils.ts) ✓ 已加上 3 次重试
02

怎么用这份教程

⏱️

每天 30 分钟

一天一个独立页面,跟着"今日小结 + 动手"收尾再关。

👶

零基础友好

不假设你懂 React/Ink/Bun/Agent,每个术语首次出现都有大白话解释。

📍

精确到行号

关键代码标 文件:行号,可在真源码里跳转对照。

一条主线:整份教程围绕"跟着一次对话走完全程"展开——从你敲下需求,到 Agent 调工具改完代码返回。每一天都是这条主线上的一站。
W1

第 1 周 · 建立心智

它是什么、怎么跑起来、Agent 循环、终端 UI
01

项目全景与模块地图

它是什么、技术栈(Bun/TS/Ink)、monorepo 结构、核心子系统一览。

≈30 min · 已就绪 NEW开始学 →
02

环境搭建与启动链

装 Bun、build、ccb 命令,从 cli.tsx 到 REPL 渲染的完整启动流程。

≈30 min开始学 →
03

Agent 循环总览

turn 循环:请求模型→检测工具调用→执行→回填→再循环,直到停。

≈30 min开始学 →
04

Ink 终端 UI 入门

React 怎么渲染到终端、REPL 组件树、消息列表与输入框。

≈30 min开始学 →
05

一次对话的完整旅程

把前 4 天串起来:从你敲回车到 Agent 改完代码返回的全链路。

≈30 min开始学 →
W2

第 2 周 · 核心引擎

QueryEngine、工具系统、内置工具、权限、上下文管理
06

QueryEngine 深入

驱动一轮对话的生成器、流式增量、如何检测并分派工具调用。

≈30 min开始学 →
07

工具系统 Tool 接口

一个工具要实现什么、怎么注册、怎么暴露给模型当 tool 定义。

≈30 min开始学 →
08

内置工具精读

Read/Write/Edit/Bash/Grep/Glob… 逐个看真实实现与执行管线。

≈30 min开始学 →
09

权限系统

permission 模式、工具调用的门禁、用户审批流、allow/deny 配置。

≈30 min开始学 →
10

上下文与 Token 管理

上下文压缩(compaction)、stop hooks、token 预算、什么时候结束一轮。

≈30 min开始学 →
W3

第 3 周 · 扩展能力

Slash 命令、MCP、Skills、事件 Hooks、子代理
11

Slash 命令系统

命令怎么定义/注册、"/x args" 怎么解析分派,精读若干内置命令。

≈30 min开始学 →
12

MCP 客户端

连接外部 MCP server(stdio/SSE/HTTP)、发现其工具、并入工具集。

≈30 min开始学 →
13

Skills 技能系统

SKILL.md 格式、发现与加载、如何被 Agent 触发调用。

≈30 min开始学 →
14

事件 Hooks 系统

PreToolUse/PostToolUse/Stop… settings.json 驱动的拦截钩子。

≈30 min开始学 →
15

子代理 / Task / coordinator

子 agent 怎么派生、并行、把结果汇回主循环。

≈30 min开始学 →
W4

第 4 周 · 平台化进阶

会话记忆、配置模型成本、TUI 深入、远程控制、构建收官
16

会话 / 历史 / 记忆

对话怎么存与恢复(--continue/--resume)、CLAUDE.md 记忆、memdir。

≈30 min开始学 →
17

配置分层与模型/成本

user/project/global 设置合并、模型选择、成本追踪。

≈30 min开始学 →
18

TUI 深入

输入框多行/粘贴/自动补全、键位系统、vim 模式、对话框浮层。

≈30 min开始学 →
19

远程控制 / daemon / workflow

手机/web 远程控制 Claude Code、bridge/daemon、workflow 多 agent 编排。

≈30 min开始学 →
20

构建/测试/native + 收官

build.ts、bun test、*-napi 原生包,全项目串讲与学习路线。

≈30 min开始学 →

📅 Day 01 已就绪,其余每天陆续上线。建议按顺序学。准备好了就从 Day 01 · 项目全景 开始。