🔍 Claude Code 源码解读:为什么它用起来手感就是比别人好?

原文导读
2026年3月31日,安全研究者 Chaofan Shou 发现 Anthropic 发布到 npm 的 Claude Code 包中,source map 文件没有剥离。这意味着:Claude Code 完整的 TypeScript 源码,51.2万行,1903个文件,就这样公开在了互联网上。
@YukerX 带著三个问题读了这份源码:
- Claude Code 和其他 AI 编程工具本质区别是什么?
- 为什么它写代码”手感”就是比别人好?
- 51万行代码里,到底藏了什么秘密?
读完之后核心结论:这不是一个 AI 编程助手,这是一个以 LLM 为内核的操作系统。
一、三种完全不同的安全哲学
想象你雇了一个远程程序员,给他你电脑的访问权限。不同工具设计理念完全不同:
- Cursor:每次敲命令都要你点一次”允许”。简单粗暴,但你得一直盯着。
- GitHub Copilot Agent:给它一个全新虚拟机,在里面随便折腾,完了提交上来你再合并。安全,但它看不到你本地环境。
- Claude Code:直接用你的电脑,但给你配了一套极其精密的安检系统——能做什么不能做什么,哪些需要你点头,哪些可以自己来,
rm -rf都要经过九层审查才能执行。
这就是三种完全不同的设计哲学。Anthropic 选择了最难的一条路——因为只有这样,AI 才能真正用你的终端、你的环境、你的配置干活,这才是”真正帮你写代码”,而不是”在干净房间里给你写段代码你自己复制过来”。
代价是什么?他们为此写了 51 万行代码。
二、第一个秘密:提示词不是写出来的,是”拼装”出来的
打开 src/constants/prompts.ts,你会看到 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 缓存分界线:
- 分界线以上:静态内容,Claude API 可以缓存它们,节省 token 费用
- 分界线以下:动态内容——你当前的 Git 分支、CLAUDE.md 项目配置、偏好记忆……每次对话都不一样
这意味着什么?
Anthropic 把提示词当成编译器输出来优化:静态部分相当于”编译后的二进制”,动态部分就是”运行时参数”。好处:
- ✅ 省钱:静态部分走缓存,不重复计费
- ✅ 快:缓存命中直接跳过 token 处理
- ✅ 灵活:动态部分让每次对话都能感知当前环境
每个工具自带一份写给 AI 看的使用说明书
更惊艳的设计:每个工具目录下都有一个 prompt.ts ——这不是写给人看的文档,这是专门写给 LLM 看的行为准则。每次 Claude Code 启动,这些规则都会注入系统提示词。
这就是为什么 Claude Code 不会乱来,而有些工具就是会——不是模型更聪明,是提示词里已经把规矩讲清楚了。
三、第二个秘密:42 个工具,但大部分你看不见
打开 src/tools.ts,注册中心总共有 42 个工具,但大部分你从来不会直接看见——很多工具是延迟加载的,只有 LLM 真正需要时,才通过 ToolSearchTool 按需注入。
为什么这么设计?因为每多一个工具,系统提示词就要多一段描述,token 就要多花一份钱。如果你只是改一行代码,它不需要加载”定时任务调度器”和”团队协作管理器”。
还有更聪明的设计:CLAUDE_CODE_SIMPLE=true 环境变量可以让 Claude Code 只剩三个工具:Bash、读文件、改文件——这给极简主义者留了后门。
设计细节体现理念:
- fail-closed 设计:如果工具作者忘了声明安全属性,系统默认假设它”不安全、可写”——宁可过度保守,也不漏掉一个风险。
- 先读后改铁律:
FileEditTool会检查你有没有用FileReadTool读过这个文件,如果没有直接报错,不让改。这就是为什么 Claude Code 不会随便覆盖你文件——它被强制要求先理解再修改。
四、第三个秘密:记忆系统——它真的”认识你”
用过 Claude Code 的人都有感受:它好像真的认识你。你告诉它”不要在测试里 mock 数据库”,下次对话它就不会再 mock。你告诉它”我是后端工程师,React 新手”,它解释前端代码就会用后端类比。
这背后是一套完整的记忆系统:
用 AI 来检索记忆:Claude Code 用另一个 AI(Claude Sonnet)决定”哪些记忆和当前对话相关”。不是关键词匹配,不是向量搜索——是小模型快速扫描所有记忆文件标题描述,选出最多 5 个最相关的,注入当前对话上下文。策略就是**”精确优先”**——宁可漏掉,也不塞进不相关的污染上下文。
KAIROS 模式:夜间”做梦”整理记忆:最科幻的部分。长会话记忆不是存在结构化文件,而是按日期追加日志。低峰期(”夜间”)
/dream技能会运行,把原始日志蒸馏结构化主题文件——AI 在”睡觉”的时候整理记忆。这已经不是工程,这是仿生学。
五、第五个秘密:它不是一个 Agent,是一群
当你让 Claude Code 做复杂任务,它可能悄悄做这件事:生成子 Agent。而且子 Agent 有严格的注入:”你是工人,不是经理,别想着再雇人,自己干活”。
**Coordinator 模式:**协调者模式下,Claude Code 变成纯粹任务编排者,自己不干活,只分配:
- 只读研究任务:并行跑
- 写文件任务:按文件分组串行跑(避免冲突)
Prompt Cache 极致优化:为了最大化子 Agent 缓存命中率,所有 fork 子 Agent 工具结果用相同占位符文本——因为 Claude API 的 prompt cache 是按字节前缀匹配,如果前缀完全一致,只有第一个需要冷启动,后面九个直接命中缓存。每次调用省几美分,大规模使用就能省下大钱。这就是细节里的魔鬼。
六、第六个秘密:三层压缩,让对话”永不超限”
所有 LLM 都有上下文窗口限制,对话越长,迟早会超。Claude Code 设计了三层压缩:
- 第一层:微压缩——只压缩旧的工具调用结果,把”10分钟前读的 500 行文件内容”替换成
[Old tool result content cleared],提示词主线完全保留。 - 第二层:自动压缩——当 token 消耗接近窗口 87% 自动触发,失败三次后停止,避免死循环。
- 第三层:完全压缩——AI 总结:让 AI 对整段对话生成摘要,用摘要替换所有历史消息。总结时严格指令:”你任务就是总结,别干别的”,避免总结过程中又调用工具浪费 token。
压缩后的 token 预算分配:
- 文件恢复:50,000 tokens
- 每个文件上限:5,000 tokens
- 技能内容:25,000 tokens
这些数字不是拍脑袋——都是”保留足够上下文继续工作”和”腾出足够空间接收新消息”之间的平衡点。
总结:51万行代码告诉我们什么
AI Agent 90% 的工作量在”AI”之外:51 万行代码,真正调用 LLM API 部分可能不到 5%。剩下 95% 是什么?安全检查(18 个文件只为一个 BashTool)、权限系统、上下文管理、错误恢复、多 Agent 协调、性能优化。如果你在做 AI Agent 产品,脚手架够不够结实,才是真正的考验。
好的提示词工程是系统工程:不是写一段漂亮 prompt 就完事。Claude Code 是 7 层动态组装,每个工具自带独立说明书,缓存边界精确划分,这是工程化的提示词管理,不是手工艺。
为失败设计:每个外部依赖都有对应的失败策略,fail-closed 设计哲学。
Anthropic 真把 Claude Code 当操作系统做:42 个工具 = 系统调用,权限系统 = 用户权限管理,技能系统 = 应用商店,MCP 协议 = 设备驱动,Agent 蜂群 = 进程管理,上下文压缩 = 内存管理,记录持久化 = 文件系统。这真不是”聊天机器人加几个工具”,这是以 LLM 为内核的操作系统。
结论
51 万行代码,1903 个文件,18 个安全文件只为一个 Bash 工具,九层审核只为让 AI 安全帮你敲一行命令。
Anthropic 的答案:要让 AI 真正有用,你不能把它关在笼子里,也不能放它裸奔。你得给它建一套完整的信任体系。这套信任体系的代价,就是 51 万行代码。
原文:@YukerX
本文整理自推文,不构成任何投资建议