Claude Code、Codex 放弃 RAG 改用 grep:代码搜索场景下 Agent+grep 完胜向量检索
多个主流代码 AI Agent(Claude Code、Codex、Cursor)在实践中放弃 RAG+向量数据库方案,转而使用 50 年前的 grep 工具。实验表明,在代码搜索场景中,grep 的精确匹配能力显著优于基于语义相似度的向量检索,且避免了 RAG 的索引过期、chunk 破坏、概率性失败等问题。这反映了 AI 开发从预处理型架构向 Agent 驱动实时型架构的转变,并再次验证了“利用计算能力的通用方法最终最有效”的教训。
事件概述
2025 年 5 月,Anthropic 工程师 Boris Cherny 透露,Claude Code 早期验证了 RAG+本地向量数据库方案,但最终全部替换为 grep,且 Agentic search 效果大幅碾压所有方案。Codex 同样不建索引、不用 embedding 和 RAG;以 RAG 起家的 Cursor 也将 grep_search 作为核心探索工具,RAG 仅作为概念性查询的补充。三者一致结论:在代码搜索场景下,Agent+grep > RAG+向量数据库。
核心信息
为什么 50 年前的 grep 能打败 RAG?
- 代码是精确匹配场景:代码标识符已编码语义,搜索目标直接匹配名称即可,不需要语义匹配。在 LongMemEval 的 116 个代码搜索问题上,grep 平均准确率显著高于向量检索,且在 Claude Code、Codex CLI、Gemini CLI 三个框架上稳定复现。
- 向量检索存在结构性失败模式:基于余弦相似度的检索常返回语义不相关但相似度高的错误结果(如“银行流水”匹配“河岸流水”),且无法区分同标识符在不同模块中的不同上下文。grep 结果是确定性的,有就有,没有就没有。
- RAG 在代码场景的五大工程缺陷:索引永远追不上动态代码库(大型项目重索引需几十分钟到几小时);token 暴力切分破坏代码结构;embedding 压缩丢失精确语义(如 validateUserSession(token,refreshToken) 压缩后信息严重损失);语义相似不等于代码相关;整套流水线环节多、复杂度高。grep 一行命令即可完成。
Agent+grep 的实现逻辑
Claude Code 采用 Agent 驱动的多轮迭代搜索系统,全程无向量、无 embedding、无预处理索引。LLM 自主决定搜索策略,调用 grep 获取结果后动态判断,信息不足则调整关键词或定位文件继续搜索,与人类程序员探索新代码库的逻辑一致。工具设计精细控制 token 消耗(GrepTool 三种输出模式、head_limit 参数;GlobTool 按文件名模式匹配;FileReadTool 按行范围读取)。
值得关注的趋势
从预处理型架构转向实时型架构
预处理架构提前处理数据,检索快但维护成本高、有过期风险;实时架构不做预处理,每次 Agent 实时获取和判断,零维护、永远最新。转折点在于模型上下文窗口大幅提升,瓶颈已从检索转向模型推理能力。
Agent 驱动的主动检索取代被动预检索
传统 RAG 是一次性被动检索(向量化→查 top-K →喂模型),Agentic Search 是多轮主动检索(模型自主决定搜索方向和终止条件),核心依托模型能力增长。
再次验证《The Bitter Lesson》
Claude Code 设计哲学是“一切都是模型”,与其构建复杂检索工程,不如押注模型能力提升。利用计算能力的通用方法最终总是最有效。
确定性工具在 AI Agent 时代更有价值
grep 结果完全确定,多轮迭代中可靠性不衰减;向量检索是概率性结果,失败原因复杂难调试。多轮迭代后可靠性指数级下降(20 轮后 99% 可靠→82%,95% 可靠→36%),确定性工具的 100% 可靠性优势被显著放大。
注意:grep 不是银弹,仅在代码搜索场景比 RAG 更适配;RAG 在其他场景仍有价值。够用就好是 AI 时代更高阶的认知。
