BestBlogs.dev · 2026-05-16 · 待补写
字节面试官:“为什么 Claude Code 不用 RAG 检索代码,而是用 grep?”我:"因为...省钱?" 他沉默了三秒
结合的源文章
原文快照
展开 / 收起快照
📌 一句话摘要
本文从源码视角深入分析 Claude Code 为何弃用 RAG 而选择 Grep/Glob/Read 三件套加子 Agent 探索的检索方案,揭示了 Anthropic 信任 LLM 决策能力的设计哲学。
📝 详细摘要
文章以字节面试题「为什么 Claude Code 不用 RAG 检索代码,而是用 grep?」为引子,系统性地对比了 RAG 和 Claude Code 在代码检索场景下的设计差异。作者首先指出代码检索的核心问题是「从海量代码中精准捞出与任务相关的片段」,然后分析了 RAG 在代码场景下的五大痛点:切片破坏代码结构、向量近似匹配不精确、索引滞后于代码变更、冷启动慢、以及黑盒不可解释。接着,文章深入 Claude Code 源码,详细拆解了其检索三件套:Grep(基于 ripgrep,权限统一、输出结构化、性能高)、Glob(按文件名查找,按修改时间排序)、Read(按需读取,不缓存不索引)。对于复杂探索任务,Claude Code 通过派 Explore 子 Agent 来隔离上下文污染,实现多轮迭代检索。文章最终总结了六大原因和两种设计哲学:RAG 是「替模型做决定」,Claude Code 是「把决策权还给模型」。
💡 主要观点
- Claude Code 弃用 RAG 的核心原因是代码场景的结构化、精确性和实时性需求与 RAG 的模糊匹配、索引滞后等特性不匹配。 RAG 在自然语言文档检索上表现优异,但代码有严格结构,切片会破坏函数完整性;向量近似匹配无法精确找到特定函数名;索引需要频繁重建以应对代码变更,冷启动慢且不可解释。
- Claude Code 采用 Grep/Glob/Read 三件套,让 LLM 像程序员一样自主、多轮迭代地检索代码。 Grep 基于 ripgrep 提供精确的关键字搜索,Glob 按文件名模式查找,Read 按需读取文件内容。模型在每一步根据上一步结果决定下一步搜索方向,形成「走一步看一步」的循环,而非 RAG 的一次性召回。
- 对于复杂探索任务,Claude Code 通过派 Explore 子 Agent 来隔离上下文污染,保护主 Agent 的注意力。 当任务需要超过 3 次查询时,主 Agent 会派遣一个独立的子 Agent 去执行检索,子 Agent 的中间结果不会污染主 Agent 的上下文,最终只返回精简结论,实现上下文压缩。
- Claude Code 的设计哲学是信任 LLM 的决策能力,工程的角色是提供工具而非替模型做决定。 RAG 的潜台词是「LLM 不够强,需要工程手段帮它准备材料」;Claude Code 的潜台词是「LLM 已经足够强,把决策权还给它」。Anthropic 押注模型会越来越强,这是一个长期主义的选择。
💬 文章金句
- Claude Code 不用 RAG 是基于三层考虑。第一,代码场景下 RAG 有切片破坏结构、向量近似不准、索引滞后等本质问题;第二,Claude Code 用 Grep 加 Glob 加 Read 三件套加上派子 agent 探索的设计,本质上是把检索决策权还给 LLM 自己,配合多轮迭代循环实现精准定位;第三,更深层是 Anthropic 信任 LLM 的能力,押注模型会越来越强,所以选择「不替模型做决定」的设计哲学。
- RAG 派的潜台词是:LLM 不够强,所以我们要用工程手段帮它把材料准备好。chunking、embedding、向量召回,本质都是「替模型做决定」。
- Claude Code 派的潜台词是:LLM 已经足够强,工程的角色是给它准备好工具,把决策权还给它。grep 不替模型做任何决定,它只是个工具。
- Agent 不是带工具的聊天机器人,而是会自己做决策的执行体。工程师的职责是给它一套好用的工具,而不是替它做决策。
📊 文章信息
AI 初评:88
来源:小林coding
作者:小林coding
分类:人工智能
语言:中文
阅读时间:37 分钟
字数:9146
标签:
Claude Code, RAG, 代码检索, Agent 设计, Anthropic