Claude Code Source Notes
Claude Code 源码阅读系列
这个系列先从一次普通任务的运行主线开始:入口、队列、REPL、query loop、模型流、工具关口和恢复记录先串起来, 再逐篇拆 Memory、上下文、工具、权限、MCP、subagent、hooks、transcript、resume 和 prompt cache。
源码证据来自公开镜像,产品契约来自 Claude Code 与 Anthropic 官方文档。每篇只描述当前公开代码可见的客户端机制。
不先钻某个机制,而是沿 CLI、REPL、队列、query()、模型流、工具关口、
messages、transcript 和 resume 建立源码阅读路线。
沿 CLAUDE.md、auto memory、session memory、agent memory 和
prependUserContext(),拆开长期规则怎样投影到下一轮模型请求。
从 context.ts、query.ts、microcompact、auto compact 和 prompt cache
入口出发,拆开 Claude Code 如何把一长串工作会话变成下一次模型请求。
从 ToolUseContext、query()、runTools()
和 runToolUse() 出发,拆开模型提出 tool_use 后,
runtime 怎样校验、调度、过权限闸并回填 tool_result。
沿 ToolPermissionContext、permission modes、allow/deny/ask 规则、
PreToolUse、PermissionRequest 和拒绝回填,拆开副作用怎样被运行时收口。
沿 getCommands()、slash command、SkillTool、MCP 连接和
assembleToolPool(),拆开扩展能力怎样进入本轮命令表与工具池。
沿 AgentTool、runAgent()、fork path、worker tool pool
和 createSubagentContext(),拆开子代理怎样重建一份可控上下文。
沿 HOOK_EVENTS、getMatchingHooks()、executeHooks()、
PreToolUse、SessionStart、Stop 和 compact hooks,
拆开 hooks 怎样接入运行时边界。
沿 recordTranscript()、loadConversationForResume()、
processResumedConversation() 和 REPL /resume,
拆开旧会话怎样恢复成可继续执行的 runtime。
沿 cache_control、稳定前缀、动态工具避让、fork cache-safe params、
cached microcompact 和 cache break detection,拆开性能为什么来自请求形状。