当前位置: 首页 > news >正文

揭开Claude Code的面纱

最近在看Claude Code的设计,发现一个有意思的现象:当所有AI编程助手都在卷向量索引、语义搜索的时候,Claude Code反其道而行——用Grep和Glob。

Grep,1973年诞生的文本搜索工具。Glob,Unix shell里最基础的文件匹配。

这个选择在技术圈引发了不小的争议。Milvus的博客说”Claude Code的grep-only方式会烧掉太多tokens”,HackerNews上也有人质疑:“Cursor用向量搜索,Claude用grep,这不是倒退吗?“

但Anthropic团队在访谈里透露了个细节:他们测过RAG、向量索引这些方案,最后发现这种”agentic search”(让模型智能地使用Grep/Glob)的效果反而最好。

为什么会这样?

什么是”Agentic Search”

Claude Code的搜索能力,核心靠两个工具:

  • Glob- 文件模式匹配,找文件。支持**/*.gosrc/**/*.ts这样的模式
  • Grep- 内容搜索,搜代码。支持正则表达式,可以过滤文件类型

这两个工具本身很蠢。Glob只会按文件名匹配,Grep只会按正则搜索,都不懂语义。

但当模型来驱动它们时,就不一样了。

用户说:“找处理用户认证的代码”

传统向量索引的做法

工具: 语义搜索 "user authentication" 返回: login(), handleAuth(), verifyUser() ... (工具自己理解语义)

Claude Code的做法

模型: 先用Glob找可能相关的文件 工具: glob **/*auth*.go 返回: auth.go, auth_handler.go, middleware/auth.go 模型: 在这些文件里搜关键词 工具: grep "func.*Login" auth.go 返回: func LoginHandler(...) 模型: 读一下这个函数 工具: read auth.go:35-60 返回: 函数实现代码

看出区别了吗?

向量索引是让工具来理解语义,然后给模型喂结果。 Agentic search是让模型来理解语义,然后指挥工具执行。

所有的智能都在模型里,工具只负责最基础的操作。

为什么简单工具更好

传统IDE的做法是让工具自己变聪明。IntelliJ IDEA启动要构建PSI树、stub索引,运行时要维护语法树、更新索引,几个GB内存、几十个后台线程就这么没了。

Cursor更进一步,用Merkle树索引代码库,智能分块后生成向量嵌入,存到远程数据库。确实能做语义搜索——搜”用户认证”能找到login、authenticate、verifyUser这些不同命名的函数。

但问题是:当模型已经足够强大的时候,这些工具层的智能是多余的。

向量搜索失败的时候,你要调试:

  • 嵌入质量有问题?
  • 语义理解偏了?
  • 索引过期了?
  • 分块策略不对?
  • 向量数据库抖动?
  • 排序算法有bug?

Grep失败就一个原因:正则不匹配。改正则,重新搜。

而且,模型可以做很多向量索引做不到的事:

  • 组合使用Glob和Grep,先缩小范围再精确搜索
  • 根据上一次搜索结果调整策略
  • 理解上下文,知道在哪些文件里搜索更有可能找到
  • 出错后自我修正,换个关键词再试

这就是”agentic”的含义——让模型成为agent,工具只是手。

Claude Code的工具箱

看看Claude Code实际提供的工具:

文件搜索

  • Glob - 按文件名模式匹配
  • Grep - 按内容搜索
  • LS - 列文件

文件操作

  • Read - 读文件
  • Edit/MultiEdit - 编辑文件
  • Write - 写文件

执行

  • Bash - 执行命令

其他

  • WebFetch - 抓取网页
  • WebSearch - 网络搜索
  • Agent/Task - 启动子agent
  • TodoWrite - 任务管理

没有语法分析,没有类型推导,没有符号索引。都是最基础的操作。

复杂的事情交给模型:

  • 代码补全 → 模型理解上下文
  • 智能重构 → 模型理解语义
  • 错误检查 → 模型知道类型系统
  • 代码导航 → 模型组合Grep和Read
  • 意图理解 → 模型本身就是

工具层保持简单,模型层承担智能。

无状态的优势

Unix的设计哲学:每个程序只做一件事,并且做好。Grep做搜索,不管搜索结果怎么用;Glob找文件,不管文件内容是什么。

Claude Code继承了这个思想。

对比有索引的系统:

  • 启动:构建索引(几分钟)
  • 运行:维护索引(后台线程)
  • 崩溃:恢复索引(检查一致性)
  • 修改:更新索引(增量or全量?)

Grep/Glob:

  • 启动:立即可用
  • 运行:实时执行
  • 崩溃:重启就行
  • 修改:下次自动看到

每次搜索都是全新的,每次结果都是最新的。没有状态,就没有状态管理的复杂度。

这也是为什么几百行代码就能实现一个基础的agent——当你不需要维护索引、缓存、状态时,代码自然就简单了。

什么时候简单比复杂更好

Linus在选择宏内核vs微内核的时候说过:“微内核在理论上很美,但实践中复杂度爆炸。“

向量索引在理论上很美:

  • 语义搜索,理解意图
  • 上下文推荐,智能补全
  • 预构建索引,搜索快

但实践中:

  • 需要上传代码(隐私问题)
  • 需要维护索引(一致性问题)
  • 需要同步状态(分布式问题)
  • 搜索失败难调试(黑盒问题)

Grep/Glob在理论上很蠢:

  • 只能模式匹配
  • 每次都重新搜
  • 不理解语义

但实践中:

  • 本地执行(零隐私风险)
  • 无需维护(零一致性问题)
  • 实时搜索(零同步问题)
  • 行为确定(零黑盒问题)

当你有GPT-4/Claude这样的模型时,工具的”蠢”不是缺点,而是优点。因为所有智能都在模型里,工具只要可靠就够了

2025年的启示

现在回头看,Claude Code的选择并不是倒退,而是一种清醒。

在AI能力已经很强的2025年,真正稀缺的不是智能,而是:

  • 可预测性- 工具行为确定,不是”大概率对”
  • 可调试性- 出错能定位,不是AI黑盒
  • 可组合性- 工具能自由组合,不是封闭系统
  • 可信赖性- 关键时刻不掉链子

向量索引这些”聪明”的工具,在90%的场景下很酷,但在10%的关键时刻让你抓狂——当你最需要它准确的时候,它给了你”语义相似”的错误答案。

Grep/Glob这种”愚蠢”的工具,在100%的场景下都可靠。搜错了?改正则。找不到文件?换个模式。每一步都清晰可控。

作为一个程序员,我更喜欢后者。


Linus说过:“Talk is cheap. Show me the code.”

Unix哲学说:“Do one thing and do it well.”

Grep做了50年的搜索,Glob做了50年的文件匹配,现在还在用,这本身就是最好的证明。

Claude Code选择了一条看似”倒退”的路——不用向量数据库,不建代码索引,就用最基础的Unix工具。但这条路上有Unix的影子,有Linus的实用主义,有极简设计的智慧。

在一个AI能力爆炸的时代,也许最先进的设计,就是让模型承担100%的智能,让工具保持100%的简单。


提供 最小化 Claude Code 实现

  • Python 实现 mini-claude-code GitHub - shareAI-lab/mini_claude_code: 0 -1 diy your agent cli.

  • Golang 实现 mini-claude-code GitHub - cexll/mini-claude-code-go: mini claude code for go


参考资料:

  1. 谈谈Claude Code的设计哲学:为什么最好的设计是”健忘”的
  2. Claude Code: Anthropic’s Agent in Your Terminal
  3. How Claude Code is built - Pragmatic Engineer
  4. Unix Philosophy
http://www.cnnetsun.cn/news/3864067.html

相关文章:

  • Office 2016纯净安装与KMS激活全攻略:从获取镜像到稳定部署
  • LaTeX数学公式排版全攻略:从基础语法到复杂结构实战
  • 2024年网站建设就业前景解析:小白如何入行并实现高薪逆袭?
  • RT-Thread Studio下STM32F4+LAN8720以太网驱动与TCP服务器实战指南
  • 好使的母排冲剪机哪个牌子公司好
  • 2026职业心理风险测评推荐排行:五大平台批量筛查效率与数据合规度测评
  • 科华UPS电源生产厂家核心竞争力及选型策略深度解析
  • 企业只说“想做一套系统”,技术团队如何把模糊需求转成可开发方案?
  • Python视频压缩实战:从码率计算到自动化批量处理
  • 深度解析重庆商城网站建设:从底层架构到运营增长的完整指南
  • 2026上海橡塑展怎么挑选展台设计搭建公司?认准高品质搭建服务商
  • 基于LLM Agent的智能告警排查:从人肉运维到自动化根因定位
  • 告别面子工程,做有温度的政务服务:2024年电子政务网站建设的深度思考与落地指南
  • 迪康U盘:企业数据安全的“电子警察”
  • 从零做一个自己的 CLI
  • 微信小游戏性能优化实战:从启动加速到内存管理的全链路指南
  • C++期末复习与实战指南:从核心概念到高频考点解析
  • 深入解析商城网站建设哪家好:避坑指南与核心选型逻辑
  • Ozone变量波形显示:基于J-Link的嵌入式实时数据可视化调试指南
  • 2024年新乡企业如何选择靠谱的网站建设公司?揭秘避坑指南与实战策略
  • HTML5文档结构与CSS布局核心:从盒模型到响应式设计实战
  • PowerShell Universal Dashboard:无需前端技能,快速构建Web运维监控面板
  • LabVIEW面向对象编程:从数据流到类与对象的工程实践
  • AI漫剧二次元少女三视图提示词分享!
  • 深入理解Linux Locale环境变量:LANG、LC_CTYPE、LC_ALL配置与实战
  • 深入解析Dubbo缓存机制:从元数据管理到高性能调用的设计精髓
  • 2024年电商网站建设公司怎么选才能避坑?资深运营揭秘高质量获客背后的真相
  • Jmeter实现AES256加密参数测试的完整方案
  • 移动端Unity HUD性能优化实战:从Canvas到粒子特效的7个核心策略
  • 为什么越来越多的中山企业选择骏域进行高质量的网站建设以提升品牌竞争力?