本专题按原目录完整收录并结构化编排 Claude-Code-Source-Study 中文学习内容。
公开阅读,不设置会员门槛;本站仅作非商业学习编排;授权与改编边界以原项目许可证和完整说明为准。
本专题按原目录完整收录并结构化编排 Claude-Code-Source-Study 中文学习内容。
github-public-noncommercial-2026-07-11,匿名、免费、非商业学习本站仅进行学习路径组织、站内链接适配与阅读体验优化;不代表原作者对本站的合作、认证或背书。如权利方要求删除,我们会立即下架;授权或删除请求请通过本站首页底部公开联系方式联系。原始项目与后续更新请以源仓库为准,完整 MIT 许可文本收录在“阅读指引”文末。
先理解全书结构、推荐路线与章节之间的关系,再选择适合自己的阅读顺序。
从项目全景、启动链路、配置体系与迁移机制建立 Claude Code 的整体认知。
本章是《深入 Claude Code 源码》系列的开篇。我们将从技术栈选型、启动链路、模块依赖三个维度,建立对整个项目的全局认知。 当你面对一个约 1835 个 TypeScript 源码文件(含 .tsx)、最大单文件 main.tsx 4683 行的大型项目时,最大的挑战不是读懂某个函数,而是不知道从哪里开始读。
本章是《深入 Claude Code 源码》系列第 2 章。我们将深入 cli.tsx 和 main.tsx 的启动路径,揭示 Claude Code 团队如何将 CLI 启动时间优化到毫秒级别。 CLI 工具的第一印象就是启动速度。用户在终端输入 claude 并回车的那一刻,心理预期是"即时响应"。如果启动需要 2 秒,用户会觉得卡顿;如果需要 5…
本章是《深入 Claude Code 源码》系列第 3 章。我们将剖析 Settings 系统如何从 5 个正式配置源(加 1 个 Plugin 基底层)中读取、验证、合并配置,以及如何在运行时监听变更并热更新 —— 一个面向企业级部署的多层配置合并架构。除了文件层的合并管线之外,Claude Code 还有两条独立运行的组织级服务管线 —— serv…
本章是《深入 Claude Code 源码》系列第 4 章。我们将剖析 migrations/ 目录下 11 个迁移文件与 main.tsx 的 runMigrations() 调度,看 Claude Code 如何把"产品在用户身后偷偷换零件"这件事写成一组幂等、可独立 review、由版本号守护串行执行的小函数。
拆解 QueryEngine、System Prompt、上下文压缩、Prompt Cache 与 Thinking。
本章是《深入 Claude Code 源码》系列第 5 章。我们将深入 query.ts 这个 1729 行的核心文件,揭示一次完整的 AI 对话是如何被驱动的——从消息组装、API 调用、工具执行到错误恢复,理解这个 Agent 运行时的"心跳"。 如果把 Claude Code 比作一个人体,那 query.ts 就是它的心脏——对话循环的编排入口…
本章是《深入 Claude Code 源码》系列第 6 章。我们将深入 constants/prompts.ts(914 行)这个核心文件,揭示 Claude Code 如何通过精心设计的 System Prompt 架构,在「精确控制模型行为」和「最大化 Prompt Cache 命中率」之间取得平衡。
本章是《深入 Claude Code 源码》系列第 7 章。我们将深入分析 Claude Code 如何在有限的 context window 内支撑无限长度的对话——从 token 预算管理、多级压缩策略,到文件状态缓存与 compact 后恢复的设计。 范围说明:上下文的"构建"(System Prompt 组装、CLAUDE.md 注入、git…
本章是《深入 Claude Code 源码》系列第 8 章。我们将从一个横切视角,解析 Prompt Cache 机制如何贯穿 System Prompt、对话循环、上下文管理三大模块,以及 Fork Agent 如何通过精密的参数对齐实现跨进程缓存共享。 调用大模型 API 最大的成本来自 input tokens。在一个典型的 Claude Cod…
本章是《深入 Claude Code 源码》系列第 9 章。我们将深入分析 Claude Code 如何精细控制模型的推理深度——从 Extended Thinking 的三种模式、Effort 级别系统、ultrathink 关键词触发,到 Advisor 这一"更强模型审阅"机制。 这些机制共同回答了一个核心问题:在速度、质量和成本之间,如何给用户…
理解工具协议、注册表、双 Shell、文件与 LSP,以及通信调度工具。
本章是《深入 Claude Code 源码》系列第 10 章。我们将深入工具系统的核心设计:从 Tool 接口的核心方法,到 buildTool() 的 builder 模式,到 tools.ts 的注册表架构,再到 ToolSearch 的延迟加载机制,揭示一个生产级 AI Agent 如何管理一整族内置工具(具体清单与分类见 附录 A)和无限数量的…
本章是《深入 Claude Code 源码》系列第 11 章。BashTool 是 Claude Code 中代码量最大、安全逻辑最复杂的单个工具,总计 12,411 行代码。我们将从命令语义分析、多层安全防线、沙箱执行、输出处理、权限匹配五个维度,完整剖析它如何让 AI 安全地执行 Shell 命令;末尾再以 PowerShellTool 作为 Wi…
本章是《深入 Claude Code 源码》系列对工具家族的第二次深入。上一篇剖完了 Tool 接口、buildTool() 与 ToolSearch 的抽象骨架,这一篇把镜头收近到八个具体工具上:FileRead / FileWrite / FileEdit / NotebookEdit / Glob / Grep / LSPTool / REPLT…
本章是《深入 Claude Code 源码》系列对工具家族的第三次深入。前两篇分别讲了 Tool 协议骨架,以及文件、代码与 LSP 一族围绕"先读后写"这条暗规的工程一致性。这一篇把镜头掉转 180°:不再看 Agent 怎么动本地代码,而是看它怎么开口——怎么往外抓一段网页、怎么把自己挂到 cron 上、怎么和另一个 Agent 互相通讯、怎么向用…
学习 Agent 定义、Sub-Agent、任务模型、Coordinator 与定时调度。
本章是《深入 Claude Code 源码》系列第 14 章。我们将深入剖析 Agent 子系统的完整架构:从 Agent 定义的数据结构与加载机制,到 runAgent() 的完整生命周期,再到 createSubagentContext() 如何实现 context 隔离与选择性共享。 当你让 Claude Code 帮你"重构整个模块的测试"时,…
本章是《深入 Claude Code 源码》系列第 15 章。我们将深入 6 个内置 Agent 的 System Prompt 设计,揭示如何通过 prompt 工程将同一套工具系统塑造出截然不同的 Agent 人格与行为模式,并解析自定义 Agent 的 markdown frontmatter 配置全貌。
本章是《深入 Claude Code 源码》系列第 16 章。我们将深入分析 Claude Code 如何通过一套统一的任务系统,管理从后台 Shell 命令到多 Agent 并行协作的所有异步工作。 速查表:见 附录 E · TaskType 谱系(wire 字面量 / feature flag / 注册路径一表对照)。
本章是《深入 Claude Code 源码》系列第 17 章。前面几篇我们都在讨论「一次对话里模型怎么把事情做完」。这一篇换一个角度:如果根本没人盯着这个 REPL,事情还能继续往前推吗? 答案藏在两块看起来不相干、骨子里互相支撑的代码里: 我们先解释为什么把这两块放在同一章,然后分别拆开看,最后再回到引言里的问题。
覆盖 MCP、权限、Hooks、Skill、Plugin、Output Style 与 Feature Flag。
本章是《深入 Claude Code 源码》系列第 18 章。我们将剖析 Claude Code 如何实现 Model Context Protocol(MCP),包括类型系统设计、多层配置合并、传输层适配、连接生命周期管理、Tool 发现与代理,以及认证体系。 Claude Code 内置了 40+ 个工具(BashTool、FileEditTool…
本章是《深入 Claude Code 源码》系列第 19 章。我们将深入权限系统的完整架构:从权限模式、规则体系、决策管线到 AI Classifier 辅助判断,揭示一个生产级 AI Agent 如何在"自动化"与"安全"之间找到平衡。 传统 CLI 工具的权限模型很简单——用户敲什么命令就执行什么命令,责任完全在用户。但 AI Agent 改变了这…
本章是《深入 Claude Code 源码》系列第 20 章。我们将深入 Hooks 系统的完整实现,揭示 Claude Code 如何让用户在 AI 生命周期的关键节点注入自定义逻辑,以及这套系统在安全性、可扩展性和性能上的精巧设计。 想象一个场景:你希望 Claude Code 在每次执行 Write 工具后自动运行 prettier 格式化代码,…
本章是《深入 Claude Code 源码》系列第 21 章。前面 20 章我们深入分析了 Claude Code 的内部架构,现在是时候"反过来用"了 —— 站在扩展开发者的视角,理解如何编写自定义 Agent、Skill、Plugin 和 Hook 脚本。本章的独特价值在于:每一个配置字段、每一个行为约定,我们都能追溯到源码中的具体实现。
本章揭示 Claude Code 如何用一套代码库同时维护内部版和外部版两个产品。你将看到 Bun 的 feature() 编译期常量折叠、process.env.USERTYPE 构建时 --define 常量、MACRO. 构建时值注入、以及 GrowthBook A/B 测试平台如何在不同的时间维度上协同工作。
研究 API 重试、Bridge IPC、远程会话、DirectConnect 与企业代理。
本章是《深入 Claude Code 源码》系列第 23 章。我们将沿着一次 messages.create 调用从应用层进入传输层,看一个生产级 AI CLI 如何在不可靠网络、过期凭证、容量过载、TLS 拦截代理、空闲连接被回收等多重不确定性下保持稳定运行。 当你在本地调用一个 REST API 时,最简单的做法是失败就报错。但 Claude Co…
本章是《深入 Claude Code 源码》系列第 24 章。前面 23 章我们都把 Claude Code 当成一个跑在终端里的进程:你敲 claude、它开 REPL、你按回车、它回答、退出。这一篇换一个场景:你人在地铁上,会话却得继续跑。 读者第一次看到 bridge/ 这个目录、加上一旁同样陌生的 remote/、commands/bridge…
本章是《深入 Claude Code 源码》系列第 25 章。前一章我们看的是 Bridge IPC:本地 CLI 怎么被手机和浏览器接管。这一章把视角再切一次——这次本地 CLI 不是被接管者,而是接管者。我们看两段乍看八竿子打不着、实际上对称得很的代码:server/ 和 upstreamproxy/。
拆解 Ink、组件与主题、Keybindings、Vim、Voice、Buddy 与 Doctor 屏。
本章是《深入 Claude Code 源码》系列第 26 章,也是"终端 UI 与多模态输入"这一篇的开篇。前面几章我们走完了网络层的两条暗线(Bridge IPC、DirectConnect 与 Upstream Proxy),从这一章起视线转回 CLI 本机:用户敲下回车看到的那一帧画面,到底是怎么从一棵 React 树变成屏幕上 ANSI 字节的。
本章深入 Claude Code 的 components/design-system/ 目录,解析一套完整的终端 UI 设计系统是如何构建的 —— 从主题系统、基础组件到工具 UI 协议。 当你用 console.log 输出几行文字时,不需要设计系统。但当你的终端应用有流式输出、多工具并行进度条、权限确认对话框、Tab 切换面板、模糊搜索选择器、d…
本章是《深入 Claude Code 源码》系列第 28 章。我们把 keybindings/、vim/、voice/ 三套子系统放在一起讲,因为它们解决的是同一个问题的不同切面:Ink 给的是"按下了哪个键",这一层要回答的是"这一下按键意味着什么"。 当你打开终端,敲下 claude,REPL 起来之后再按下任意一个键,背后其实不止一条路。Ink…
本章是《深入 Claude Code 源码》系列第 29 章。我们要看的,是 buddy/ 目录下的 6 个源码文件,以及它们怎么悄悄接进 REPL、PromptInput、配置、附件、消息流——最后在一个本来全是黑底白字的终端里,挤出一只会眨眼、会冒话框、会被你按 Enter 摸一下脑袋的小动物。
本章是《深入 Claude Code 源码》系列对终端 UI 一族的最后一篇。前面几章已经讲清楚三件事:Ink 怎么把 React 搬进终端、设计系统怎么收敛颜色与边距、键盘事件怎么注入 React 树。这一篇换一个角度:当 CLI 真的出问题时,用户怎么自己看清"问题在哪里";当用户想换一种说话方式时,怎么用一份 markdown 把模型的开场白替换掉。
串联 Memory、命令系统、状态桥接,并总结可迁移的架构模式。
本章深入 Claude Code 的记忆系统。我们将看到,一个 AI Agent 如何在"无状态"的 LLM 对话模型上,构建出跨越单次会话、跨越多个项目、甚至跨越团队协作的持久化记忆能力。 LLM 天生是"金鱼记忆" —— 每次对话都是从零开始。用户上次告诉 Claude "我喜欢用 bun 而不是 npm",下次对话它就忘了。用户在项目里纠正了 C…
本章是《深入 Claude Code 源码》系列第 32 章。我们将深入 commands.ts 及其周边模块,揭示 Claude Code 如何将内建命令、用户自定义 Skill、Plugin 命令、Bundled Skill、MCP Skill 和 Workflow 命令统一到一套类型体系中,并实现懒加载、条件注册和动态发现。
本章是《深入 Claude Code 源码》系列第 33 章。我们将深入分析 Claude Code 如何用一个 35 行的极简 Store 实现,桥接 React UI 与非 React 业务逻辑之间的状态管理,并理解三层状态架构的设计哲学。 Claude Code 面临一个独特的状态管理难题:它既是一个 React 应用,又不完全是。
本章是《深入 Claude Code 源码》系列的终篇。我们将从前 33 章的源码分析中,提炼出 11 个可复用的架构模式。每个模式都附有 Claude Code 中的真实代码、适用场景和迁移要点。 在过去 33 章中,我们逐一拆解了 Claude Code 的每个子系统——从启动链路到对话循环,从工具系统到权限防线,从 Prompt Cache 到…
集中查阅工具、命令、Hooks、内置 Agent、TaskType 与模块章节矩阵。
生成脚本:scripts/gen-tool-table.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3 正交两维口径(family 与 register 互不强制):
生成脚本:scripts/gen-commands-table.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3
生成脚本:scripts/gen-hooks-table.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3
生成脚本:scripts/gen-agents-table.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3 正表:源码定义 6 个内置 agent(位于 tools/AgentTool/built-in/)。 副表(运行时可用集合受三类变量影响,见 tools/AgentTool/bu…
生成脚本:scripts/gen-tasktypes-table.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3 详细叙事:见 第 16 章 · 任务模型与 TaskType 谱系。本附录是速查表,C16 是叙事。 wire 字面量合计 7 个 = 4 默认注册 + 2 feature…
生成脚本:scripts/gen-module-matrix.ts;sourcecommit: 290fdc9481a70612bc5823aa4ed225c52c52aad3 当前 commit 下 orphans=0(孤儿统计已剔除 scripts/orphan-allowlist.txt 中的条目)。