# Step 75: 全面源码巡礼收尾
一句话导读:把 75 步教学版能力映射到真实 Claude Code 约 2039 个源码文件,确认我们复原的是 agent runtime 的架构骨架。
# 一、这一步做了什么(What)
step75 是整个 claude-learn 的收官复盘:不加新功能,而是把从 REPL、工具、QueryEngine、Agent、MCP/LSP、安全底层、Bridge/Web、多会话一路写出来的教学版,对照真实 claude-code-src/src 的目录结构、入口和构建方式。
它还给出架构脑图和“如果继续做 step76+,最值得补什么”的清单。
# 二、面试官视角:为什么要做?(Why)
面试题:从 step01 写到 step72 已经很完整,为什么最后还要做一次全源码巡礼?
因为单点功能容易让人误以为“Claude Code 就是聊天 + 工具”。全源码巡礼能把视角拉回系统层:真实产品是一个 agent runtime,有内核、工具、权限、会话、UI、协议、构建、遥测、安全和多入口。
| 局部视角 | 全局视角 |
|---|---|
| 会调用 API | 有 QueryEngine runtime |
| 有几个工具 | 有工具生态和权限系统 |
| 有网页 | 有 Bridge/Remote/SDK surface |
| 有日志 | 有隐私边界和遥测管线 |
# 三、原理:它是怎么工作的(How)
step75 的总架构:
用户输入 / Surface
→ createCore / 装配层
→ QueryEngine 无头内核
→ Tools / MCP / LSP / Web
→ Permissions / Sandbox / Hooks
→ Memory / Skills / Plugins
→ EngineEvent / SDKMessage
→ Session Storage / Cost / Telemetry
2
3
4
5
6
7
8
真实源码目录映射:
utils/ 设置、权限、session、token、缓存、上下文
components/ 终端 UI、权限弹窗、消息组件
commands/ slash commands
tools/ Bash/Read/Write/Web/MCP/Agent
services/ API、MCP、analytics、compact、policy
bridge/ remote control / bridge 会话
remote/ 远程 session 管理
entrypoints/ CLI、SDK、MCP 入口
2
3
4
5
6
7
8
阶段对照:
01-10 REPL/API/流式/持久化
11-20 工具系统与权限
21-29 prompt/token/cost/compact/model/style
30-34 QueryEngine 与事件流
35-45 Agent/Todo/Hooks/Skills/Plan/Context
46-53 Web/MCP/LSP/Plugins
57-63 权限/沙箱/缓存/设置/遥测
64-72 Ink/Web/Bridge/createCore/多会话
75 全源码巡礼
2
3
4
5
6
7
8
9
构建对照也很重要:教学版多为 Node + tsx;真实 restored 源码用 Bun,dev-entry.ts 先检查缺失 import,再进入 entrypoints/cli.tsx。
# 四、深入追问(面试常见 follow-up)
Q:这个项目最终复原的是 Claude Code 的全部吗?
A:不是。复原的是核心架构骨架:无头引擎、工具、权限、上下文、协议、多前端。真实产品还有大量生产纵深。
Q:最核心的一条主线是什么?
A:从脚本到 runtime:console + API → Tool Calling loop → QueryEngine → 多 surface + Bridge + session。
Q:如果继续做,优先补什么?
A:多会话持久化、取消/中断、统一控制协议、WebSocket 重连、成本状态恢复。它们都对应真实源码的纵深缺口。
Q:为什么真实源码有 2000 多文件,而教学版能压缩成 75 步?
A:教学版保留架构主干,砍掉平台兼容、灰度、采样、鉴权、复杂 UI、远程策略、构建裁剪等生产层。
# 五、踩坑 / 设计权衡
最后一步最容易写成“功能清单”。真正有价值的复盘是分清三类东西:我们抄对的形状、刻意简化的地方、未来最值得补的纵深。
# 六、与真实源码的对照
| 我们的实现 | Claude Code 源码 |
|---|---|
QueryEngine 教学内核 | src/QueryEngine.ts + transcript/status/abort |
ToolRegistry | src/tools/ 近 200 个工具相关文件 |
CommandRegistry | src/commands/ 完整 slash command 系统 |
createCore() | bootstrap + SDK/Bridge/CLI 分层装配 |
SessionManager | remote/sessionStorage/cost restore |
| 简单 Web UI | components/Ink/Web/Remote 多 surface |
| 本地遥测 JSONL | analytics sink、采样、PII 分列 |
# 七、一句话总结
claude-learn 的最终价值,是把一个 2039 文件级别的真实 agent 工程拆成可手写、可运行、可对照的路线,让“会调 API 的脚本”和“真正 agent runtime”的边界清清楚楚。
# 下一节预告
主线到这里收束。如果继续扩展,最自然的下一步是 step76 多会话持久化,对齐真实 sessionStorage.ts。