Claude Code CLI 源码学习
20 天 · 每天 30 分钟 · 逐层读懂一个真实的终端 AI 编码助手(claude-code-best · TypeScript + Bun + Ink)是怎么造出来的
开篇 · 这是个什么项目
我们要读的这个仓库 claude-code-best,是一个逆向实现(reverse-engineered)的 Anthropic Claude Code CLI——也就是"在终端里跟你结对编程的 AI 助手"的一个开源复刻版,而且加了不少官方没有的功能(远程控制、workflow 编排、语音等)。
🎯 一句话:它是一个跑在终端里的 AI Agent——你用自然语言下命令,它自己调用工具(读写文件、跑命令、搜索代码…)把编程任务干完。本教程带你逐层读懂"这样一个 Agent 从按下回车到干完活,内部到底发生了什么"。
它用 TypeScript 写、跑在 Bun 上、界面用 React + Ink 渲染到终端。规模不小:2500+ 个 .ts + 700+ 个 .tsx,还是个 monorepo。别被吓到——我们会顺着"一次对话的旅程"这条主线,把复杂度拆成 20 天可消化的小块。
Agent 循环总图(动起来看)
整个 CLI 的灵魂就是一个循环。下面这颗发光的小球会绕着圈跑——它就是一次任务在 Agent 内部转的圈:你说话 → 模型思考 → 要用工具 → 执行工具 → 结果喂回模型 → 再思考……直到任务完成。今天不用懂细节,先把这个"圈"刻进脑子。
Loop周而复始
直到完成
落到这个项目里,这个圈由 src/QueryEngine.ts / src/query.ts 驱动,工具在 packages/builtin-tools,界面在 src/components(Ink)。这三块 + "什么时候停"的判断,就是核心中的核心(Day 03、06–10 细讲)。
怎么用这份教程
每天 30 分钟
一天一个独立页面,跟着"今日小结 + 动手"收尾再关。
零基础友好
不假设你懂 React/Ink/Bun/Agent,每个术语首次出现都有大白话解释。
精确到行号
关键代码标 文件:行号,可在真源码里跳转对照。
项目全景与模块地图
它是什么、技术栈(Bun/TS/Ink)、monorepo 结构、核心子系统一览。
环境搭建与启动链
装 Bun、build、ccb 命令,从 cli.tsx 到 REPL 渲染的完整启动流程。
Agent 循环总览
turn 循环:请求模型→检测工具调用→执行→回填→再循环,直到停。
Ink 终端 UI 入门
React 怎么渲染到终端、REPL 组件树、消息列表与输入框。
一次对话的完整旅程
把前 4 天串起来:从你敲回车到 Agent 改完代码返回的全链路。
QueryEngine 深入
驱动一轮对话的生成器、流式增量、如何检测并分派工具调用。
工具系统 Tool 接口
一个工具要实现什么、怎么注册、怎么暴露给模型当 tool 定义。
内置工具精读
Read/Write/Edit/Bash/Grep/Glob… 逐个看真实实现与执行管线。
权限系统
permission 模式、工具调用的门禁、用户审批流、allow/deny 配置。
上下文与 Token 管理
上下文压缩(compaction)、stop hooks、token 预算、什么时候结束一轮。
Slash 命令系统
命令怎么定义/注册、"/x args" 怎么解析分派,精读若干内置命令。
MCP 客户端
连接外部 MCP server(stdio/SSE/HTTP)、发现其工具、并入工具集。
Skills 技能系统
SKILL.md 格式、发现与加载、如何被 Agent 触发调用。
事件 Hooks 系统
PreToolUse/PostToolUse/Stop… settings.json 驱动的拦截钩子。
子代理 / Task / coordinator
子 agent 怎么派生、并行、把结果汇回主循环。
会话 / 历史 / 记忆
对话怎么存与恢复(--continue/--resume)、CLAUDE.md 记忆、memdir。
配置分层与模型/成本
user/project/global 设置合并、模型选择、成本追踪。
TUI 深入
输入框多行/粘贴/自动补全、键位系统、vim 模式、对话框浮层。
远程控制 / daemon / workflow
手机/web 远程控制 Claude Code、bridge/daemon、workflow 多 agent 编排。
构建/测试/native + 收官
build.ts、bun test、*-napi 原生包,全项目串讲与学习路线。
📅 Day 01 已就绪,其余每天陆续上线。建议按顺序学。准备好了就从 Day 01 · 项目全景 开始。