部分内容可能来自网络或者由AI生成。
如有雷同,纯属巧合,仅供学习参考之用。


前言:书籍核心定位与全局主旨

市面上绝大多数 Claude Code 教程均聚焦使用层、提示词、操作技巧,而本书是唯一聚焦底层源码、工程架构、Agent 运行内核、商业化底层逻辑的深度解析手册。

本书核心主旨一句话总结:Claude Code 的价值不在于“会写代码”,而在于它是第一个实现了「工业级、可落地、可自主迭代、全链路闭环」的软件研发 AI Agent 工程范式。其源码架构奠定了下一代 AI 编程工具、自主研发智能体、软件自动化工程的底层标准,是价值数十亿美元的 AI 软件工程蓝本。

本书核心破除两大认知误区:

1. Claude Code 不是“对话+代码补全”的简单封装,而是一套具备自主感知、决策、工具调度、自我校验、故障自愈的完整智能体系统;

2. 其核心壁垒不是 Claude 大模型本身,而是源码层的工程架构、任务调度机制、上下文管理、安全沙箱、迭代闭环设计

一、全局认知:Claude Code 的产品与工程底层本质

1. 产品本质:从“代码工具”到“全链路研发Agent”

传统 AI 编码工具(Copilot、CodeLlama)的定位是被动代码补全工具,触发逻辑是“用户输入→模型生成→用户校验”,无自主决策、无任务拆解、无工程感知。

而 Claude Code 源码定义的核心定位是:终端原生、工程感知、自主驱动、闭环交付的软件研发智能体

它可以独立完成:项目结构解析、需求拆解、文件定位、代码编写、依赖安装、语法校验、单元测试、报错修复、代码重构、Git 提交、日志排查的全流程自主研发,完全复刻人类开发者的工作链路。

2. 商业价值核心:为何是数十亿美元工程蓝图?

书中明确核心判断:AI 行业的下半场,模型能力将趋于同质化,工程架构与 Agent 落地能力将成为核心壁垒

Claude Code 源码开源的不是工具,是一套通用软件自动化工程框架。这套框架可以迁移到后端开发、前端工程、运维部署、测试自动化、代码审计、项目重构等所有研发场景,重构整个软件工程行业的生产方式,这也是其百亿级商业价值的核心来源。

二、源码整体架构:五层分层核心设计(全书核心骨架)

通过对源码的模块化拆解,本书提炼出 Claude Code 最核心的五层分层架构,这是其区别于所有竞品的核心工程设计,层层解耦、各司其职、闭环运行。

1. 第一层:交互接入层(终端交互内核)

核心源码能力:基于 Terminal 终端原生交互,脱离 IDE 依赖,实现跨平台、跨项目、跨环境通用接入。

核心设计亮点:

  • 原生监听终端指令、用户输入、会话上下文;

  • 支持会话持久化、断点续任务,关闭终端后可接续未完成的工程任务;

  • 统一指令解析器,兼容 Plan/Auto/Review 所有运行模式的指令分发。

核心价值:实现无侵入式工程接入,不绑定编辑器,适配所有研发环境,通用性远超 IDE 插件类工具。

2. 第二层:任务决策层(Agent 大脑核心)

这是 Claude Code 源码的核心精髓,也是普通代码工具与工业级 Agent 的分水岭。该模块完全由工程代码驱动,而非模型驱动。

核心源码逻辑:

  • 需求解析与意图识别:拆解用户模糊需求,区分新增、修改、重构、修复、优化五类任务类型;

  • 任务拆解算法:将复杂工程任务拆解为最小可执行单元,规避大模型一次性修改大量代码导致的逻辑崩坏;

  • 决策路由机制:根据任务风险等级,自动匹配规划模式(Plan)或自动模式(Auto),高风险任务强制进入人工审核链路。

书中重点强调:大模型负责“生成内容”,任务决策层负责“控制行为”,没有这一层工程约束,AI 编码永远只能是玩具级工具。

3. 第三层:工程感知层(项目理解内核)

绝大多数 AI 编码工具的致命缺陷:无全局工程感知,只能理解单文件代码,不懂项目架构、依赖关系、工程规范。

Claude Code 源码独创工程全景扫描机制,核心能力:

  • 自动遍历项目目录结构,识别项目技术栈(Vue/React/Java/Go/Python 等);

  • 解析依赖文件、工程配置、路由规则、模块引用关系;

  • 构建项目代码知识图谱,理解模块联动逻辑,避免改 A 崩 B 的代码耦合问题;

  • 自动识别工程规范、代码风格、注释规则,保证输出代码贴合原有项目风格。

核心价值:实现懂项目、懂架构、懂规范的智能化编码,而非无脑生成代码。

4. 第四层:工具执行层(能力落地引擎)

该层是 Claude Code 落地能力的核心,封装了全套可自主调用的工程工具链,源码中实现了工具标准化调用协议

核心工具模块:

  • 文件操作工具:批量增、删、改、查、合并代码文件;

  • 终端命令工具:自主执行安装、编译、打包、运行、测试命令;

  • 代码校验工具:语法检测、格式校验、类型校验、报错捕获;

  • 版本控制工具:自主 Git 暂存、提交、分支管理、代码对比;

  • 日志排查工具:自动解析报错堆栈,定位代码问题根因。

核心设计:所有工具调用均有权限校验、日志记录、回滚机制,出错可一键恢复工程状态,解决 AI 修改代码不可逆的行业痛点。

5. 第五层:安全与自愈层(工业级保障)

这是 Claude Code 能够落地企业级工程的核心底牌,也是源码中最具商业价值的隐形壁垒。

核心源码机制:

  • 风险分级机制:将文件修改、命令执行、代码删除划分为低/中/高三级风险,高风险操作强制人工确认;

  • 实时快照回滚:任务执行前自动备份文件,出现代码报错、工程崩坏立即回滚;

  • 自我校验闭环:生成代码后自动编译、自测、排查问题,自我修复 Bug;

  • 上下文降噪机制:自动清理无效上下文,解决长工程任务的上下文溢出、模型失忆问题。

三、源码核心关键机制(全书硬核重点)

1. Plan 规划模式的底层源码逻辑

书中指出,Plan 模式并非简单的“先思考再执行”,而是一套标准化工程评审协议

源码执行链路:需求输入 → 工程扫描 → 问题定位 → 方案推演 → 修改清单生成 → 风险评估 → 等待人工确认 → 批量执行。

核心价值:从源码层面杜绝 AI 自由发挥,把 AI 的修改权限关进工程规范的笼子里,是复杂项目落地的核心保障。

2. 上下文动态管理机制(行业最优解)

大模型编码最大痛点:长项目上下文过载、关键信息丢失、重复修改、逻辑错乱。

Claude Code 源码独创动态上下文裁剪与增量更新机制

  • 自动保留项目核心架构、关键逻辑、修改记录;

  • 自动裁剪冗余日志、无效代码、重复对话;

  • 增量同步代码变更,而非全量上传文件,极大提升效率、降低成本;

  • 长任务自动生成阶段性总结,固化核心决策,避免模型失忆。

3. 代码迭代自愈闭环机制

普通 AI 工具:生成代码 → 报错 → 人工修改,无自愈能力。

Claude Code 源码闭环:代码生成 → 自动编译校验 → 捕获报错堆栈 → 根因分析 → 针对性修改 → 二次校验 → 直至工程正常运行。

这套自我迭代、自我修复、自我验证的源码逻辑,是其具备“自主研发能力”的核心支撑。

4. 多任务优先级调度机制

源码内置任务调度队列,支持并行解析、串行执行,区分核心任务与次要任务,避免多指令冲突、代码覆盖、逻辑混乱,完美适配大型复杂项目的迭代开发。

四、核心差异化壁垒:为何竞品无法复刻?

本书通过源码对比,精准点出 Claude Code 碾压所有 AI 编码工具的三大核心壁垒,且均为工程架构壁垒,非模型壁垒

1. 完整的工程认知能力

竞品只懂单文件代码,Claude Code 懂整个项目的架构、依赖、链路、规范、历史迭代逻辑,修改代码具备全局视野,不会破坏项目整体性。

2. 强约束的Agent决策体系

竞品是模型自由生成,随机性极强、不可控;Claude Code 是工程代码约束模型,所有输出都经过任务拆解、风险校验、规范适配,可控、可预期、可落地。

3. 工业级安全自愈体系

竞品无备份、无回滚、无校验,修改代码风险极高;Claude Code 从源码层面内置全链路安全机制,适配企业生产环境,是唯一可用于正式项目迭代的 AI 编码 Agent。

五、商业与行业启示:源码背后的AI工程未来

本书跳出工具本身,从源码架构推演未来 3-5 年 AI 软件工程的发展趋势,是全书最具价值的顶层认知:

1. AI 编程的终局不是“自动写代码”,而是“全自动软件研发流水线”

Claude Code 源码架构证明:未来的软件工程,将由 AI Agent 完成需求拆解、开发、测试、修复、重构、部署的全流程,人类开发者将从编码劳作中解放,聚焦架构设计、需求定义、价值决策。

2. 模型同质化,工程能力决定胜负

未来所有大模型都能写代码,但只有具备工程感知、任务调度、安全可控、自愈迭代的 Agent 架构,才能形成商业壁垒。Claude Code 的源码架构,就是下一代 AI 工具的标准范式。

3. 个人与企业的落地机会

对开发者:吃透这套源码架构,即可掌握 AI Agent 工程的核心能力,从“码农”升级为“AI 工程架构师”;

对企业:基于该源码二次开发,可定制专属的企业研发智能体,实现研发流程全自动化,大幅降本增效。

六、全书终极总结(专家提炼核心)

1. Claude Code 的核心价值不在于模型,而在于工程架构。它是一套标准化、工业化、可商用的 AI 软件研发 Agent 蓝图,而非简单的代码工具。

2. 五层分层架构、任务决策机制、工程全景感知、安全自愈闭环,是其实现“自主研发”的四大核心支柱,也是其百亿级商业价值的核心支撑。

3. AI 编码的核心竞争力,从来不是生成速度,而是可控性、安全性、工程适配性、迭代自愈性

4. 软件工程的未来是 Agent 化,Claude Code 源码给出了完整的落地标准答案,读懂它,就读懂了下一代 AI 研发的底层逻辑与行业趋势。

————书籍摘要————

01 一个价值数十亿美元的设计蓝图

  1. ​​为什么搜索用 grep 而不用向量数据库?​​
    Anthropic 在代码搜索上优先追求​​“精确匹配”​​和​​“实时可用”​​。grep/ripgrep 能在本地快速完成正则匹配,直接定位到具体函数或符号;而向量数据库虽然擅长语义相似度检索,却会引入额外的向量化开销、延迟和维护成本。对 Claude Code 来说,让搜索结果直接喂给大模型即可,没必要先做模糊匹配再排序。
  2. ​​为什么记忆系统只记偏好,不记代码?​​
    代码库会频繁重构,若把“代码状态”长期存入记忆,很快就会因为文件重命名、函数移动而失效;相比之下,用户对 IDE 行为的“偏好”变化较慢。因此 Claude Code 的记忆系统只记录用户偏好,而不保存具体代码,既减少冗余,也避免误导。
  3. ​​为什么 Auto 模式背后要跑第二个 AI 做安全审查?​​
    Anthropic 把“信任”视为关键工程目标。在 Auto 模式下, Claude Code 需要对自身输出进行二次验证,确保不会生成破坏性或违规的代码。因此他们让另一个专门的 AI 模型对建议进行安全审查,形成“双机校验”——既保持自动化速度,又把风险降到可接受范围。
  4. ​​为什么选 Bun 而不选 Node.js?​​
    Bun 是一个专为终端场景优化的运行时,启动更快、内存占用更低,且原生支持 ES 模块,能直接运行在浏览器和命令行。Anthropic 希望 Claude Code 在任何环境都做到“随开即用”,避免 Node.js 带来的依赖与打包步骤;Bun 的轻量和跨平台特性正好满足这一需求。

◆ 这套系统叫harness(笼具),包括工具调用、权限控制、记忆管理、上下文压缩、安全护栏、多Agent协调……所有让AI从「能力强但不可预测」变成「稳定可靠能交付」的工程组件

◆ 「不怪个人怪流程」。这句话比任何技术分析都更能说明Anthropic的工程文化。

02 架构全景:Harness的骨架

◆ Claude Code需要频繁启动子进程(每次调用Bash工具就是一个子进程)、大量文件读写(Grep、Glob、Read工具)、处理并发请求(多Agent同时工作)。在这些场景下,Bun的性能比Node.js好不少。

◆ TAOR的Agent循环:Think → Act → Observe → Repeat。

◆ 工具调用是唯一的「行动」方式。模型不能直接操作文件系统或运行命令,必须通过工具间接执行。这意味着所有操作都经过一层中间件,可以在这层做权限检查、日志记录、安全审查。这是第5章权限系统的基础。

03 System Prompt工程

◆ 你发一句话,AI收到一整本说明书 What the AI Actually Receives

◆ 静态部分,所有用户共享,可以跨请求缓存。在这些之后,还有动态部分:你的CLAUDE.md配置、当前目录信息、记忆文件、MCP服务器说明、git状态、语言偏好……

◆ 这是一个非常务实的工程决策。prompt的物理排布不仅影响语义,更影响缓存命中率,直接关联运营成本。

◆ System prompt是一个工程系统,不是一段文字。它需要像代码一样管理版本、测试效果、优化性能。Claude Code的prompt有明确的缓存策略、模块化结构、AB测试标注、模型版本兼容处理。这不是「写一段好的指令」的问题,而是「构建一个可维护的指令系统」的问题。

◆ 缓存决定prompt结构。不要想好了内容再随便排。先划出缓存边界,把不变的放前面,变的放后面。每一个放错位置的条件分支都在浪费缓存预算。

04 工具系统:4个原语,59个工具

◆ 这个分类不是我总结的,是从源码的设计意图中提炼的。工具按照这四个维度划分权限等级:Read通常是低风险的(不改变任何东西),Write和Execute是中高风险的(会改变文件或系统状态),Connect涉及外部交互

◆ 为什么不让AI用Bash做一切?因为专用工具比万能工具更可控。Read工具只能读文件,权限系统对它的审查很简单。Bash命令可以做任何事,权限系统需要理解命令的语义才能判断是否安全,这要难得多。

◆ // 搜索类:find, grep, rg, ag, ack, locate, which
// 读取类:cat, head, tail, less, jq, awk, cut, sort
// 列表类:ls, tree, du
// 语义中立:echo, printf, true, fals

◆ 大多数工具的阈值是100,000字符。当一个工具的返回结果超过这个阈值时,系统不是直接截断,而是把完整结果保存到磁盘上的一个临时文件,然后在对话中只放一个摘要和文件路径。这样Claude可以在需要时通过Read工具去读取完整结果。

◆ 控制AI的最好方式不是写更长的prompt,而是设计更好的工具。

◆ 万能工具是后备,不是首选。Bash能做一切,但正因如此,它最难控制。优先使用功能明确、权限清晰的专用工具。万能工具只在专用工具覆盖不到的场景使用。

◆ 工具有token成本。每个工具描述都占用上下文空间。59个工具全加载,成本很高。Deferred加载是必要的优化,尤其在MCP扩展工具数量的场景下。

◆ 插件式架构支持快速迭代。添加新工具不需要动核心代码,这让团队可以并行开发不同的工具。对于一个快速迭代的AI产品,这种架构的灵活性至关重要。

05 权限系统:信任是设计出来的

◆ 你用Auto模式的时候,以为什么操作都直接放行?其实背后跑着两个AI:一个执行你的任务,另一个专门审查第一个的操作是否安全

◆ Stage 1:快速判断(64 token预算)
◆ Stage 2:深度推理(4096 token预算)

◆ 两阶段的好处是成本优化:安全操作在Stage 1就放行了(耗费极少token),只有可疑操作才需要Stage 2的深度分析。据源码统计,大多数操作不需要进入Stage 2。

◆ 温度设为0。两个阶段的temperature都设为0,确保相同输入产生相同输出。安全判断不需要创造性,需要确定性。

◆ 规则很简单:连续被拒3次,或者累计被拒20次,Auto模式自动降级为手动确认模式。

◆ 为什么需要熔断?想象一个场景:主AI在执行一个合理的任务,但分类器反复误判为危险操作。如果没有熔断,AI会一直重试然后被拒,陷入死循环。熔断机制让系统在出问题时优雅降级,而不是卡死。

◆ 源码的解决方案很优雅:进入Auto模式时,自动剥离这些危险的宽泛规则,并把它们暂存起来;退出Auto模式时再恢复。

◆ 如果你要拒绝或质疑用户的操作,至少给一个人能理解的理由。

◆ 安全系统的投入应该和核心功能一样多。Claude Code的权限系统涉及多个文件、数千行代码、独立的ML分类器、Zig层DRM、23项Bash安全检查、熔断机制、路径防御。这不是一个周末写的feature,而是一个持续投入的核心系统。

◆ 多层防御,逐层过滤。不要把所有判断都压在一层上。简单的判断用简单的规则(白名单、规则匹配),复杂的判断才用复杂的方法(ML分类器)。这样既高效又可靠。

◆ 安全和效率不是对立的。四层流水线的设计让大多数操作在前三层就放行了,用户几乎感受不到安全检查的存在。只有真正可疑的操作才会触发第四层的AI判断,而这时候多等两秒是完全可接受的。好的安全系统是隐形的。

◆ 设计降级路径。熔断机制的存在说明Anthropic承认分类器不完美。与其追求完美的分类器(不可能),不如设计好出错时的降级行为。连续被拒就切回手动确认,简单、可靠、用户不会卡住。

◆ 保护持久化文件。AI修改临时文件影响有限。但修改Shell配置、系统配置这类持久化文件的影响是跨会话、甚至跨项目的。对这类文件的保护级别应该远高于普通文件。

◆ 权限策略要随模式切换而调整。用户在手动模式下设置的宽泛权限,在自动模式下可能是安全漏洞。好的系统会在模式切换时自动适配安全等级,而不是把这个判断留给用户。危险权限的自动剥离就是这个思路的体现。
给用户做判断的信息,而不只是按钮。一个「允许/拒绝」的弹窗,如果不告诉用户这个操作做什么、为什么要做、可能出什么问题,用户要么盲目允许,要么盲目拒绝。风险评估器生成的结构化解释,让权限确认从「打扰」变成了「informed decision」。

06 记忆系统:只记偏好,不记代码

◆ 200行、25KB。这是MEMORY.md的物理上限。超过任一限制都会被截断,并追加一条警告信息。

◆ 核心设计决策:只记偏好,不记代码 The Core Design Decision

◆ 所以Claude Code的做法是:代码相关的事实永远实时读取,不记忆。记忆只存人的偏好和判断,这些东西变化慢,不会因为代码重构而失效。

◆ 设计原则:持久化应该存「变化慢的东西」。模型的能力(搜索、读文件)可以实时获取「变化快的东西」。把变化快的东西放进记忆,是在制造定时炸弹。

◆ MEMORY.md不是记忆本身,而是一个索引。每条记忆的详细内容存在独立的文件中(如user_role.md

◆ 记忆是「某个时间点的真相」,不是「现在的真相」。在用记忆做决策之前,先验证它还是不是对的。

◆ 折中方案是:把记忆当线索,不当真相。记忆说「函数X在文件Y」,那就先去Y看看X是不是还在那儿。

◆ 最简单的存储方案往往是最好的。

纯文本文件、Markdown格式、文件系统目录结构。没有数据库、没有API、没有复杂的查询语言。这个方案的维护成本几乎为零,而且用户可以直接用文本编辑器查看和修改自己的记忆文件。
分类存储,分级信任。不同类型的记忆有不同的变化速率和使用频率。用户偏好几乎不变,每次都该考虑。项目状态变化快,只在相关时使用。一刀切的「全部记住」或「全不记」都不如分类管理。
给记忆系统设上限。200行、25KB。没有上限的记忆系统会膨胀到无法管理。上限迫使系统做取舍,只留真正有价值的记忆,丢弃琐碎的细节。
用独立agent做记忆提取。安全隔离 + 上下文隔离 + cache共享。这三个需求看似矛盾,但通过canUseTool钩子函数实现了优雅的统一。
记录成功,不只记录失败。Feedback类记忆的设计有一个反直觉的要求,不只记录用户的纠正(「不要这样做」),也要记录用户的验证(「是的,就这样」)。原因是,如果只记录失败,AI会变得过于保守,什么都不敢做。记录成功让AI知道哪些做法是被认可的,在类似场景下可以继续沿用。
时间规范化是必须的。用户说「下周四」,AI必须在记忆中存为「2026-04-10」。否则两周后回看这条记忆,「下周四」指的是哪个周四?这个规则看起来琐碎,但它解决了跨时间召回记忆时的歧义问题。
即使用户要求记,也要追问。源码有一条有趣的规则:当用户说「帮我记住这周的PR列表」时,AI不应该直接记PR列表(那是临时信息),而应该追问「其中什么是意外的或非显而易见的?」那个才值得记。这防止了记忆系统被当成笔记本用。

07 上下文管理:长对话的生存术

◆ 反应式压缩(reactive compaction,当API返回context too long错误时触发)和上下文折叠(context folding,一种实验性的更高效压缩方式)。这些模式和自动压缩互斥,同时只有一种生效

◆ 为什么所有用户消息必须完整保留 Why All User Messages Must Be Preserved

◆ 用户的消息是压缩中损失最大的部分,因为它们不只是信息,还是约束

◆ 压缩时模型只有1轮机会输出,如果它尝试调用工具(被拒绝),就不会产生任何文本输出,压缩就失败了。

◆ 1. 把关键约束写进CLAUDE.md。CLAUDE.md在系统提示中,压缩根本不会碰它。
◆ 2. 在长会话中定期重申关键要求。如果你发现AI开始「忘记」某个规则,不要生气。它可能刚刚经历了一次自动压缩,那条规则的原始上下文已经被替换成了摘要。重新说一遍就好。
◆ 3. 及时使用/compact而不是等到自动触发。手动压缩时你可以通过/compact命令附加自定义指令,告诉模型压缩时要特别保留哪些信息。自动压缩不会给你这个机会。
◆ 4. 大任务拆成多个会话。压缩是单个会话内的权宜之计。如果任务复杂到需要多次压缩,不如拆成多个会话,每个会话的CLAUDE.md里写清楚上下文。这比让模型在摘要的摘要上继续工作可靠得多。
◆ 5. 关注/compact后的第一轮回复。压缩之后的第一轮回复最容易出问题。

◆ 结构化压缩比自由总结可靠得多。

如果你让AI「总结一下前面的对话」,它可能遗漏关键细节。给它一个明确的模板,哪些信息必须保留、按什么格式组织,结果会好得多。9段式模板就是这个理念的具体实践。
用户消息是最不能丢的信息。工具返回的数据可以再查,代码可以再读,但用户说过的话代表了意图和约束。丢失用户消息等于丢失对齐。
防漂移需要主动设计。每次压缩都可能引入理解的微小偏差,几次压缩之后偏差会累积。要求verbatim quotes、限制下一步必须与最近请求相关,都是主动的防漂移措施。
模型升级需要prompt适配。4.5和4.6的失败率差异(0.01% vs 2.79%)说明,模型版本变化可能破坏已有的prompt策略。持续监控模型行为、及时调整prompt,是一个长期的工程任务。

08 搜索:为什么grep打败了RAG

◆ 当整个行业都在推向量数据库和Embedding搜索时,Anthropic选择了最朴素的方案

◆ 如果你在2026年要做一个AI编程工具的代码搜索功能,业界的标准方案大概是这样的:

把代码库切成小块(chunking)
用Embedding模型把每个块变成向量
存进向量数据库(Pinecone、Weaviate、Chroma之类)
用户查询时,先把查询变成向量,再做相似度搜索
把最相关的代码块喂给LLM
这就是RAG(Retrieval-Augmented Generation)。

◆ 源码里的搜索相关工具就两个:Grep(基于ripgrep的内容搜索)和Glob(基于文件名模式匹配)。此外还有Read工具直接读取文件内容。没了。

◆ RAG解决的核心问题是:搜索引擎不够聪明,需要语义理解才能找到相关内容

◆ 与其让每个环节都变复杂,不如让一个环节足够强,其他环节保持简单。

◆ 对比RAG的Embedding搜索:结果是概率性的,可能返回「语义相关但实际无关」的内容,也可能遗漏「写法不同但实际相关」的内容

◆ 维护成本的差距是巨大的.grep零维护。代码变了?grep直接搜到最新内容。没有索引需要更新,没有向量需要重建,没有数据库需要管理。

◆ 上下文窗口变大了。RAG在上下文窗口很小(4K、8K)的时代是必需品,你只能往prompt里塞这么点内容,必须精挑细选。但Claude Code用的是100K甚至1M token的上下文窗口。窗口大了,暴力搜索就变得可行了。多搜几个文件、多读几百行代码,反正放得下。不需要精密的检索来节省每一个token。

◆ 不限制结果数量的grep可能返回几万行,直接吃掉上下文窗口。250行是一个平衡点:足够做初步探索,又不至于浪费token。如果LLM真的需要更多结果,可以显式传head_limit=0或用offset翻页

◆ 那为什么不直接让AI调用bash grep?源码里的BashTool prompt明确要求避免使用grep命令,而是用Grep工具。原因有几个:GrepTool有权限校验。(checkReadPermissionForTool),确保不会搜索不该搜的文件;它自动排除.git、.svn等版本控制目录的噪音;它限制每行最大500字符(–max-columns 500),防止base64或minified代码把结果撑爆;它还会把绝对路径转成相对路径来节省token。这些都是裸grep做不到的。

◆ Grep负责「文件里搜什么」,Glob负责「先找到哪些文件」。这是搜索流程的第一步,经常被忽略但其实至关重要

◆ 一个关键的设计细节:结果按修改时间排序。

◆ 把Grep + Glob + Read放在一起看:Glob发现文件 → Grep定位位置 → Read精确读取。三个工具各做一件事,组合起来就是一个完整的代码理解系统。没有索引,没有预处理,随开随用。

◆ 手里有锤子(RAG)的时候,不是所有问题都是钉子。在LLM足够强的时代,最简单的工具链往往就是最有效的。

◆ 搜索质量的瓶颈不在检索算法,而在搜索策略。

◆ 「足够好」原则

在设计AI应用时,不要默认每个环节都需要最先进的技术。先问一个问题:如果这个环节用最简单的方案,瓶颈在哪里?如果LLM自身的能力可以补偿简单方案的不足,那就用简单方案。复杂方案的维护成本可能比它节省的智能要贵得多。
几个可推广的判断标准:
如果LLM是消费者,搜索可以简单。RAG适合「搜索结果直接展示给人看」的场景。当搜索结果是给LLM看的中间步骤时,精确匹配 + LLM理解 > 模糊匹配 + 预排序。
零维护胜过高精度。如果你的工具需要在任意环境下即开即用(像Claude Code那样),任何需要预处理的方案都是障碍。
先做减法,再考虑加法。当你想加一个复杂组件时,先问:不加行不行?如果行,那就不加。Claude Code证明了,不用向量数据库也能做出最好用的AI编程工具。
当然,这个结论有边界条件。对于上百万个文档的企业知识库,纯grep可能不够。但对于代码搜索这个特定场景,项目通常在几万到几十万行之间,grep的速度足够,LLM的理解力足够,简单方案就是最优方案。

09 多Agent架构:像公司一样运转

◆ Multi-Agent Architecture — Run Like a Company
Claude Code的多Agent系统可能是整个源码中最复杂的部分。它不只是fork几个进程并行跑,而是实现了一套完整的组织管理架构。

◆ Claude Code的解决方案是git worktree。每个Agent在自己的独立工作树中工作,有独立的文件系统副本。修改完成后,通过git的merge机制合并结果。

◆ Agent之间怎么通信?不是通过API调用,不是通过消息队列。是通过邮箱文件。

◆ 多Agent系统的难点不在技术实现,而在组织设计。

任务怎么拆分、信息怎么流转、冲突怎么解决、结果怎么合并、质量怎么保证——这些问题和管理真人团队完全一样。
隔离优于共享。Git worktree让每个Agent在独立的文件系统中工作,从根本上消除了并发修改的冲突问题。代价是需要额外的合并步骤,但这比处理运行时冲突简单得多。
通信用最简单的方案。邮箱文件比消息队列简单100倍,对于Agent级别的协作完全够用。不要在通信基础设施上过度投入。
需要中间管理层。Leader角色不是多余的。它处理权限冒泡、监督任务进度、协调结果合并。没有这一层,5个Agent直接与用户交互会混乱不堪。

10 Feature Flags里的未来

◆ BUDDY说明了一件事:即使是最严肃的技术公司,也知道产品需要趣味性。一个让你每天都想打开的AI工具,光功能强大不够,还需要一点人情味。

11 两个Claude Code

◆ 内部版暴露了Anthropic的产品理想。
「默认不写注释」说明他们认为好代码不需要注释。「报告完成前必须验证」说明他们知道AI爱偷懒。「写给人读不是往console打日志」说明他们认为AI的输出应该有温度。「≤25词」而不是「be concise」说明他们用数据驱动而非直觉驱动来优化产品。

◆ 如果你在设计自己的AI产品,这些内部版的规则是很好的参考标准:

要求AI诚实。在指令中明确说「不确定的地方说不确定」「测试失败了就说失败」。不给AI模糊过关的空间。
要求AI验证。别让AI说「应该可以了」,要求它实际运行验证并展示验证结果。
把AI的输出当给人看的文字。不是日志,不是调试信息,而是有结构、有重点、能让忙碌的人快速理解的文字。
用定量约束替代定性约束。「≤100词」比「keep it concise」有效。具体的数字给模型一个明确的锚点,而模糊的形容词留下太多解释空间。
编译时隔离比运行时判断更安全。如果你的产品也分内部版和外部版,在构建阶段就把内部代码剥离,比在运行时用if判断可靠得多。前者保证外部版物理上不包含敏感代码,后者总有绕过的可能。

12 Harness Engineering方法论

◆ 十条设计原则 Ten Design Principles
原则一:简单组件 + 智能大脑 > 全链路复杂
Claude Code的搜索用grep不用RAG,记忆用纯文本文件不用数据库,通信用邮箱文件不用消息队列。每个独立组件都很简单,但组合起来依靠LLM的理解力,整体表现反而超过每个环节都很复杂的方案。

◆ 原则二:安全是信任的基础,不是功能的限制
权限系统不是限制AI能做什么,而是建立用户对AI的信任。因为你知道有四层安全审查、有熔断机制、有受保护文件列表,所以才敢打开Auto模式让它自由操作。

◆ 原则三:记住偏好,忘记事实
记忆系统只记用户的偏好和判断,不记代码和事实。偏好稳定,但事实会变。记住「用户喜欢TypeScript」比记住「函数X在文件Y第30行」可靠得多。

◆ 持久化应该存「变化慢的东西」。模型的能力(搜索、理解)可以实时获取「变化快的东西」。

◆ 原则四:压缩是有损的,要设计损失什么

◆ 原则五:工具是能力的边界
Claude Code的所有操作都通过工具间接执行。模型不能直接操作文件系统,必须调用Read、Write、Bash等工具。这层间接性不是性能开销,是架构优势。

◆ 控制AI的最好方式不是写更长的prompt,而是设计更好的工具

◆ 原则六:多Agent协作需要组织设计

◆ 原则七:Feature Flags管理产品演进
44个feat

◆ 原则八:内部和外部应该是同一个产品

◆ 原则九:缓存策略直接影响成本
System prompt的静态/动态分界线、Deferred Tools的延迟加载、prompt缓存的跨用户复用。这些看起来是技术细节,实际上直接影响每次API调用的token消耗和成本。

◆ 原则十:60/40法则
Claude Code好用,60%靠模型能力,40%靠harness工程。

◆ 模型仍然是最重要的,选对底层模型比什么都重要。但harness的40%决定了产品体验的上限,同样的模型套上不同的harness就是完全不同的产品

◆ 什么是Harness?Harness是围绕LLM构建的整个运行环境。

在大型语言模型(LLM)的开发和应用中,“Harness”通常指将模型与输入输出处理、数据管理、评估逻辑、外部工具等整合起来的完整运行框架,而不仅仅是模型本身。
更具体地说,一个 LLM Harness 常包含:
模型加载与推理接口:统一调用不同 LLM(本地或 API)。
输入/输出处理:提示模板、格式化、结果解析。
任务与评估:如 lm-evaluation-harness(EleutherAI 开源工具)用于在标准基准上评测模型。
外部集成:检索增强(RAG)、工具调用、记忆模块。
监控与日志:追踪请求、性能、成本。
所以,你可以把 Harness 看作让 LLM 真正运行并完成特定任务的“生产环境”或“测试平台”。它把模型从原始权重变成一个可交互、可评估、可扩展

◆ 一个类比:Prompt Engineering像写菜谱,Harness Engineering像开餐厅。菜谱决定一道菜好不好吃,但餐厅的体验远不止菜谱。采购、厨房动线、服务流程、卫生管理、成本控制,每个环节都影响最终体验。一个只有好菜谱的餐厅开不下去,一个只有好prompt的AI产品也一样。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐