@rasbt Claude Code 真正的秘方(可能)不是模型
@rasbt Claude Code's Real Secret Sauce (Probably) Isn't the Model
有用户称 Claude Code 源代码在 GitHub 出现 TypeScript 快照,内容显示其会构建实时 repo context,复用 Prompt Cache,使用 Grep、Glob、LSP tools,减少 context bloat,维护结构化 Session Memory,并通过 forks 与 subagents 并行处理 summarization、memory extraction 等任务。

看来 Claude Code 的源代码今天泄露了。我在 GitHub 上看到了几份 TypeScript 代码库的快照。出于法律原因,我不想在这里贴链接,但其中有一些有教育意义的细节值得了解。
当然,Claude Code 在编码上的表现比 Claude web chat 更好,这大概已是常识,因为它并不只是一个加了 shell 的聊天界面,而更像是一个经过精心设计的工具,带有一些不错的 prompt 和 context 优化。
我还要说,虽然很多定性的编码表现来自模型本身,但我认为 Claude Code 之所以这么好,是因为这套软件 harness。也就是说,如果我们换入其他模型(比如 DeepSeek、MiniMax 或 Kimi),并针对这些模型稍作优化,也会得到很强的编码表现。
总之,下面是一些有意思的细节,供学习用途,帮助更好理解 coding agent 是如何工作的。
1. Claude Code 会构建实时 repo context
这也许是最明显的一点,但当你开始 prompt 时,Claude 会加载 main git branch、当前 git branch、最近的 commits 等信息,并把 CLAUDE.md 也作为 context。
2. 激进复用 Prompt Cache
看起来这里有类似边界标记的东西,用来分隔静态内容和动态内容。也就是说,静态部分会被全局缓存以保持稳定,这样昂贵的部分就不需要每次都重新构建和重新处理。
3. Tooling 比“和上传文件聊天”更好
prompt 似乎会要求模型使用专用的 Grep tool,而不是通过 Bash 调用 grep 或 rg,大概是因为专用 tool 有更好的权限处理,以及(也许)更好的结果收集。
还有一个专用的 Glob tool 用于文件发现。最后,它还有一个 LSP(Language Server Protocol)tool,用于 call hierarchy、查找 references 等。这相比 Chat UI 应该是很大的“增强”,后者(我认为)更多是把代码当作静态文本来看。
4. 尽量减少 Context Bloat
处理代码 repo 时,最大的问题之一当然是 context 大小有限。尤其是当我们和 agent 来回交互、反复读取文件、查看日志文件、长 shell 输出等情况时,更是如此。
Claude Code 里有很多 plumbing 来尽量减少这个问题。例如,它们确实有 file-read deduplication,会检查文件是否未发生变化,然后不再重新处理这些未变化的文件。
另外,如果 tool 结果变得过大,它们会被写入磁盘,而 context 中只使用一个 preview 加文件引用。
当然,和任何现代 LLM UI 类似,如果需要,它也会自动截断长 context,并运行 autocompaction(/summarization)。
5. 结构化 Session Memory
Claude Code 会为当前对话维护一个结构化的 markdown 文件,其中包含如下部分:
- Session Title
- Current State
- Task specification
- Files and Functions
- Workflow
- Errors & Corrections
- Codebase and System Documentation
- Learnings
- Key results
- Worklog
我会说,这有点像我们人类写代码的方式:保留笔记和摘要。
6. 它使用 Forks 和 Subagents
Claude Code 会用 subagents 并行化工作,这大概并不意外。长期以来,这基本上是它相对 Codex 的卖点之一(直到最近 Codex 也加入了 subagent 支持)。
在这里,fork 出来的 agents 会复用父级的 cache,同时知道 mutable states。因此,系统可以做一些旁路工作,比如 summarization、memory extraction 或 background analysis,而不会污染主 agent loop。
为什么这大概比在 Web UI 里写代码感觉更好、效果也更好
总的来说,Claude Code 比普通 web UI 更好用的原因并不是 prompt engineering 或更好的模型,而是上面列出的这些小的性能改进和 context 处理改进。当然,也有便利性:所有东西都在你的电脑上井井有条,而不是把文件上传到 Chat UI。