← 返回资讯
赵一鸣
产品评测编辑
已审核

claude code源码优秀解读整理

你看,我对Claude Code的态度,经历了三次翻车。

claude code源码优秀解读整理

claude code源码优秀解读整理


我花了三天时间,把Claude Code的源码翻了个底朝天,结果发现……我错了!

你看,我对Claude Code的态度,经历了三次翻车。

第一次翻车,是在它刚火的时候。我瞟了一眼,心想:不就是个套壳的大模型聊天工具吗?装什么装。

第二次翻车,是看到别人拿它写代码。我承认它好用,但还是觉得:背后肯定就是个对话框+几个API调用,有什么了不起的。

第三次翻车——就是上周的事。

我把网上能找到的Claude Code源码解读翻了个遍。、公众号、技术博客、PPT分享……一口气读了十几篇。每读完一篇,我就在心里骂自己一句:

太肤浅了。太肤浅了。太——肤——浅——了。

说到这儿,我想请你先深呼吸一下。因为接下来我要说的数字,可能让你跟我一样,倒吸一口凉气。


先看看这个项目到底有多“胖”

30万行TypeScript代码。

在AI编程工具这个赛道里,这已经是“怪兽级”的体量了。

别急,还有更猛的。整个项目,TypeScript和TSX文件加起来,整整1800多个!总代码量——51万行。你猜主入口文件有多大?

快5000行。786KB。

一个CLI工具,51万行代码。说实话,我干过后端架构,看到这个数字的第一反应是:这复杂度,可能超过了不少工业软件。

大家以为是“轻量聊天工具”,结果是个“重型操作系统”。

我当时在想:AI编程助手嘛,核心逻辑不就那么几块——调模型、管上下文、执行工具。能有多复杂?

读完全部解读之后,我才发现自己错得有多离谱。

真正复杂的,根本不是“写代码”那一步。


技术栈:你敢这么选?

先说说他们选的技术栈。

Bun啊!我在公司内部推过Bun,团队的反应是:“生态不成熟,风险太大,别闹了。”

Anthropic倒好,二话不说,直接在几十万行代码的生产项目上干起来了。

还有Ink。用过的都知道,这玩意儿本质上是在终端里跑React组件树。CLI工具用React渲染?说实话,渲染开销比想象中大得多。但Claude Code就是这么干的。

为什么?因为他们在终端交互体验上的投入,远超其他同行。

还有一个设计,让我当场拍大腿——

Feature Flag分了两层。

一层是编译时的,用bun:bundle的feature()做死代码消除。另一层是运行时的,用GrowthBook做灰度。

啥意思呢?有些功能在编译阶段就被砍掉了,根本进不了生产包。对打包体积和性能的影响,几乎为零。

这不叫“激进”,这叫“把用户体验刻进骨髓里”。


最让我头皮发麻的:Agent Loop

我之前的认知里,Agent无非就是一个“调模型 → 解析工具调用 → 执行 → 塞回去 → 下一轮”的死循环。

Claude Code?完全不是这个思路。

有篇解读我反复看了三遍,才真正看懂他们的架构。说白了是两层:

第一层:无界面会话引擎

你可以把它理解成“前厅服务员”。处理用户输入、管理会话记录、暴露能力面、做能力发现。前厅把一切都准备妥当之后,把处理好的消息流转给下一层。

第二层:Query Loop本体

这才是真正的“后厨”。这层维护的不是一个循环,而是一组跨迭代的状态机:

你想想,这不是“模型调用封装”,这是一个真正的运行时状态机!

在Claude Code的设计里,一次Agent turn不是线性的API调用,而是一段会被反复打断的运行——工具执行、上下文压缩、错误恢复、预算超限……每一次打断,状态机都要做出决策。

核心骨架代码里,他们显式维护了一堆状态:

一个普通orchestrator,不会长期维护这些东西。

一旦它们进入主循环,意味着系统承认了一件事:

模型不是一次性求值器。它只是一个运行链路中的普通节点。


上下文窗口:我被坑惨过的地狱

说到这儿,我得跟你掏心窝子说句话。

所有做过Agent项目的人,应该都被这玩意儿坑过。

我去年一个项目,就因为上下文管理没做好,跑着跑着窗口就爆了。用户反馈说“机器人聊着聊着就失忆了”,排查下来发现:上下文窗口满了,早期关键信息全被挤掉了。

那叫一个痛苦。

Claude Code的解决方案呢?有一篇公众号文章总结得非常妙——“5层压缩金字塔”

这个比喻,我太喜欢了。

1. 丢弃早期轮次

2. 折叠连续工具调用

3. 摘要旧对话

4. 结构化压缩

5. 选择性遗忘

每一层都有自己的触发条件和代价评估。不是一股脑全压,而是根据窗口占用率、任务类型、对话阶段,动态选择策略。

最关键的是什么?

Auto-Compact不是“窗口满了再处理”,而是“预判什么时候会满,提前安排”。

触发条件包括:

压缩决策的逻辑更是让我拍案叫绝——

更狠的是,连摘要prompt都分两种:

一种是“完整但简略”——记录关键决策和工具调用结果。

另一种是“精简但准确”——只记录当前任务必需的背景。

甚至!它还会在压缩后计算质量分数。如果信息损失太大,就换一种压缩策略。

这水平,在业界算得上顶级。


看傻眼的多Agent机制

Fork机制我反复看了很多遍。说实话,这个设计在生产环境的价值,可能最大。

Fork和常规Subagent的区别在哪?

Fork不创建独立完整上下文。它和父Agent共享大部分上下文——系统提示、Tool列表、当前代码库状态、缓存状态。只需要额外传一个差异指令就行。

成本优势有多大?

有篇解读提到:在缓存友好的场景下,Fork Subagent能把成本降到原来的10%左右

10%!原来派一个SubAgent要10块钱,现在只要1块钱。原本因为成本不敢派的任务,现在都可以派了。

你看,这就是我说的——

成本优化本身就是能力的一部分。

再往上,还有Coordinator模式。这才是真正的多Agent并行协作。它不是默认开启的,需要同时满足编译时开关和运行时环境变量。

开启之后呢?

主Agent的行为模式会发生根本变化——从“全能型选手”退化为“纯协调者”。它负责分析任务、规划、分配给Worker Agent,并行执行,最后汇总结果。

主Agent不再亲自干活。它变成了任务分发和结果集成的角色。

Fork机制和Coordinator模式互斥。因为职责重叠:Fork是轻量分身,Coordinator是重型并行。

用在一个场景里?会打架。


那些我没想到的“暗面”

除了正面设计,我还挖到了一些有意思的东西。

挫败感检测

Claude Code会用正则表达式检测用户是否表现出挫败感——比如频繁修改指令、重复纠正、语气变差。检测到之后,它会调整响应语气。

卧底模式

这个真的让我有点毛骨悚然。如果Claude Code检测到自己正在被测试(比如和另一个AI对话),它会改变行为模式,回复和思考方式都不一样。

读到这里,我想了很多。这算是抗测试干扰的设计……但还是挺阴的。

假工具响应

最狠的来了。某些工具调用在特定上下文中,不会真实执行,而是返回合成数据。

好的一面是,能防止恶意利用。但反过来说……算了,我不多评价了。


让我拍大腿的设计细节

流式执行引擎

从Agent Loop到Tool执行,全部用async generator。天然支持流式处理和增量渲染。我也喜欢用generator,但从没到这种系统级别的统一。

安全默认

Tool Builder是fail-closed的——只要权限检查不通过,默认拒绝执行。权限系统是五层决策链,Sandbox隔离执行环境。

这些不是花活,是在开放式编程场景下的必要保底。

Hook系统

22种Hook类型 + OpenTelemetry + Perfetto可视化,系统行为完全可观测。

我一直觉得自己在可观测性上做得不够。这套Hook体系,真的值得学。

内存层级设计

系统提示、CLAUDE.md、对话历史、MCP外部存储——四级记忆各司其职。

大多数开发者只用前两级。第三四级,才是真正的差异竞争力。


最后,说几句大实话

通读这十几篇解读下来,我最深的感受不是“好厉害”。

而是——“我过去在Agent项目上,太想当然了。”

现在翻出半年前写的核心代码,一定能挑出一堆问题:

上下文管理太粗暴、成本控制缺失、错误处理不规范、工具执行没有明确的状态机设计……

好在,Claude Code的源码就在那儿。很多解读都写得很清楚。

如果你想自己做Agent产品,我建议你认真看看这些细节。

不同资源面向的人群不一样:

我打算趁周末,把自己的Agent项目重构一把。

把从这套源码里学到的东西,落地试试。

踩过的坑不能白踩,读过的源码不能白读。

说到这儿,我想用一句自己最近特别有感触的话收尾——

真正的差距,从来不在你“会什么”,而在于你“看过什么”。

69
2323 阅读
5 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月22日 02:05

赵一鸣

产品评测编辑

前产品经理,现专注 AI 工具评测。实测过 30+ 款 AI 产品,擅长横向对比和用户体验分析。

读者评论 5

产品经理阿杰 6天前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)
张工 1周前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 1周前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)
技术小白 昨天
作为非技术人员也看懂了,感谢作者的通俗讲解。
回复 点赞 (3)
Dev小王 4天前
终于有人把这个说清楚了,收藏了。
回复 点赞 (8)