系统提示:5–10K Token 的工程系统
你在终端里敲的那一句话,模型实际收到的比你看到的多出一个数量级。Claude Code 的 system prompt 不是一个被「精心写好」的文本,而是一个被工程化拼装的运行时系统:它有缓存边界、有段落类型、有优先级 override、有模型版本兼容处理。这章拆开它的每一层。
工具系统:4个原语,59个工具
工具系统大概是 Claude Code 源码里规模最大的板块——约 50,000 行代码、59 个独立的工具目录。但把所有复杂度剥开,工具的本质可以归结为 4 种动作。
查询引擎:54,000 行里最不像代码的那一块
如果你只盯工具系统的 grep / Glob / FileEdit,看到的是「拼装好的乐高」。但乐高谁来驱动、怎么一轮轮地拼、拼到一半发现问题怎么回退——这些全靠查询引擎。源码里这一块接近 54,000 行,几乎全是状态机和恢复逻辑,是整个项目里最不像「应用代码」、最像「分布式系统核心」的一部分。
权限系统:信任是设计出来的
用 Auto 模式跑 Claude Code 的时候,每次操作自动放行这事儿看起来像「魔法」。但表象背后其实跑着两个 AI——一个执行你的任务,一个独立审查操作是否安全。权限系统就是这一整套审查机制的工程实现。
记忆系统:只记偏好,不记代码
Claude Code 的 auto memory 可能是你用了之后觉得最惊艳的功能之一。但看了源码才知道,「记住什么」和「不记什么」之间的权衡,比表面看起来讲究得多。
上下文管理:长对话的生存术
和 Claude 聊了很久之后,它偶尔会忘记你之前说过的某个要求。这不是它在敷衍你,而是上下文压缩的必然代价。源码里 Anthropic 在「保留什么」上做了非常精细的设计。
搜索:为什么 grep 打败了 RAG
这可能是整个源码里最反直觉的发现。当整个行业都在推进向量数据库和 Embedding 搜索时,Anthropic 选择了最朴素的那一条路。