1.1 表面之下:Claude Code 不只是一个 CLI

章节目标:建立对 Claude Code 的整体认知——它是什么、能做什么、和普通 CLI 工具有什么本质区别。


你以为的 Claude Code

大多数人第一次见到 Claude Code,认为它就是一个命令行版的 ChatGPT:在终端里问问题,得到答案,仅此而已。

$ claude "帮我写一个 Python 快速排序"

这个认知只对了 5%。


真实的 Claude Code

打开源码,第一件事就会颠覆这个认知。方案汇总.md 里有一句精准的总结:

Claude Code 表面是一个 CLI 工具,实际上是一套完整的 AI Agent 操作系统

让我们把这句话拆开理解。

它是一个 Agent,不是一个聊天机器人

普通聊天机器人的工作流程是:输入 → 输出

Claude Code 的工作流程是:输入 → 思考 → 工具调用 → 观察结果 → 再思考 → 再工具调用 → ... → 输出

这个"思考-行动-观察"的循环,就是 Agent 循环(ReAct 模式)。Claude Code 可以:

它有 1,987 个源文件

这不是数字游戏。一个"简单的 CLI 工具"不会有将近 2000 个文件。这个规模意味着:

子系统规模
工具系统53 个工具
斜杠命令87 个命令
UI 组件148 个终端组件
自定义 Hooks87 个
Bridge 远程控制33 个文件

它有隐藏的"操作系统层"

Claude Code 还包含大量外部用户看不见的系统(通过编译开关裁剪):


一个完整的请求发生了什么

让我们跟踪一个典型请求的完整生命周期,感受一下它的复杂度:

你输入: "帮我重构这个文件,让它更简洁"
         │
         ▼
[1] main.tsx 接收输入,创建 React 状态更新
         │
         ▼
[2] QueryEngine 开始新的对话 Turn
    - 构建 System Prompt(注入 git 状态、CLAUDE.md 内容、工具描述)
    - 从 bootstrap/state.ts 读取全局配置
         │
         ▼
[3] query.ts 启动主循环
    - 格式化消息发给 Claude API(Anthropic / Bedrock / Vertex)
    - 流式接收响应
         │
         ▼
[4] Claude 返回:「我需要先读取这个文件」
    → 触发 FileReadTool
    → 权限检查(canUseTool)
    → 执行读取
    → 结果返回给 Claude
         │
         ▼
[5] Claude 返回:「现在我来修改它」
    → 触发 FileEditTool
    → 权限检查(是否在允许路径内?)
    → 执行修改
    → 结果返回给 Claude
         │
         ▼
[6] Claude 返回最终文字响应
    - query.ts 循环结束
    - 会话历史持久化到磁盘
    - 成本追踪更新
         │
         ▼
[7] Ink UI 渲染最终输出到终端

这是一次"简单"的文件重构请求背后发生的事情。而如果你启用了 Coordinator 模式,步骤 [4] 和 [5] 可能会并行地分发给多个 Worker。


三个维度理解 Claude Code

维度描述类比
功能维度它能做什么一个非常强大的程序员助手
架构维度它怎么组织一个分层的 Agent 操作系统
源码维度它怎么实现精心设计的 TypeScript 工程

本教程的六个章节,就是从这三个维度,由浅入深地展开。


下一步