Claude Code 源码阅读 Phase 1:Agent Loop 最小闭环阅读稿
目标不是逐行背源码,而是把模型调用、工具调用、上下文压缩、状态更新串成一条可执行的工程主线。
Source Reading
这个专栏用于系统记录 Claude Code 的源码阅读过程,从 CLI 入口、命令解析、上下文管理、Tool 调用、Agent Runtime、Memory、LLM 调用和结果回写等角度理解 AI Coding 工具的工程实现。
flowchart TD
A[CLI 入口] --> B[命令解析]
B --> C[上下文组装]
C --> D[Agent Runtime]
D --> E{是否需要工具}
E -->|是| F[Tool / Skill 调用]
F --> G[结果回填 Memory / Messages]
G --> D
E -->|否| H[LLM 输出最终结果]
D --> I[日志、权限、错误处理]
目标不是逐行背源码,而是把模型调用、工具调用、上下文压缩、状态更新串成一条可执行的工程主线。
围绕 Message 创建、工具调用配对、内部消息到 API 消息转换、token budget 自动继续策略梳理 Claude Code 的上下文结构。
围绕 Tool 接口、工具注册表、工具执行模块、多工具编排、query loop 回填梳理 Claude Code 如何把模型的 tool_use 变成本地动作。
围绕 Read、Glob、Grep 梳理 Claude Code 如何让模型观察本地代码库:先发现文件,再搜索内容,最后读取源码上下文。
围绕 PermissionMode、通用权限闸门、Bash 权限、安全解析、路径约束与权限结果回填,理解模型动作为什么必须由本地 runtime 裁决。
围绕 BashTool、runShellCommand、沙箱、timeout、后台任务、输出持久化和退出码语义,理解 Claude Code 如何执行真实 shell 动作。
围绕 AgentTool、runAgent、fork subagent、LocalAgentTask 与 SendMessage,梳理 Claude Code 如何把完整 Agent Loop 封装成子代理工具。
从 Agent Loop 的 messagesForQuery 出发,拆解 compact boundary、microcompact、autocompact、reactive compact、session memory compact。