跳转到内容

搜索工具速查

Claude Code 中搜索工具的快速选择参考。涵盖 rg(ripgrep)、grepai、Serena 和 ast-grep——何时使用、如何对比,以及组合使用的工作流。


知道确切文本? → rg
知道确切名称? → rg 或 Serena
知道概念? → grepai
知道结构? → ast-grep
需要依赖关系? → grepai trace

快速 ←────────────────────────────────→ 智能
rg Serena ast-grep grepai
~20ms ~100ms ~200ms ~500ms
精确匹配 符号感知 结构匹配 语义理解

rg (ripgrep)

最快。精确文本和正则模式匹配。零配置。

Serena

符号感知搜索。查找函数/类定义。会话记忆。

ast-grep

AST 级模式匹配。不受格式影响地查找代码结构。

grepai

按含义语义搜索。调用图追踪,理解依赖关系。


任务工具命令
查找 TODO 注释rgrg "TODO"
查找 login 函数rg / Serenarg "login"serena find_symbol
查找认证相关代码grepaigrepai search "authentication"
谁调用了 login?grepaigrepai trace callers "login"
获取文件结构Serenaserena get_symbols_overview
没有 try/catch 的 asyncast-grepast-grep "async function $F"
React class 转 hooksast-grep迁移模式
记住决定Serenaserena write_memory

能力rggrepaiSerenaast-grep
精确匹配
语义搜索
调用图
符号感知
AST 模式
会话记忆
零配置需配置需配置需配置

以重构认证模块为例的 5 步实战工作流:

  1. 发现(grepai —— 语义搜索)

    Terminal window
    grepai search "authentication flow"
  2. 结构(Serena —— 符号)

    Terminal window
    serena get_symbols_overview --file auth.service.ts
  3. 依赖(grepai —— 调用图)

    Terminal window
    grepai trace callers "login"
  4. 模式(ast-grep —— 结构匹配)

    Terminal window
    ast-grep "async function login"
  5. 验证(rg —— 精确匹配)

    Terminal window
    rg "validateSession" --type ts

错误做法正确做法
grepai search "createSession"(用语义工具搜确切文本)rg "createSession"
rg "auth.*login.*session"(用正则搜概念)grepai search "auth flow"
rg + sed 做重构Serena find_symbol
重构前不检查调用方先用 grepai trace callers

起点:rg(90% 的搜索)
|
需要理解含义? → grepai
需要符号定义? → Serena
需要 AST 匹配? → ast-grep
场景升级到原因
搜索概念而非确切文本grepai语义理解
需要找出所有调用方/被调用方grepai trace调用图分析
只需要函数/类定义Serena符号级过滤
需要匹配带变量名的代码模式ast-grepAST 感知
正则表达式假阳性太多grepai 或 Serena更高精度

Claude Code 预装,无需配置。

Terminal window
rg "pattern" # 基本搜索
rg "pattern" --type ts # 按文件类型过滤
rg "pattern" -g "!node_modules" # 排除目录
rg "pattern" -C 3 # 显示 3 行上下文

方面rggrepaiSerenaast-grep
速度~20ms~500ms~100ms~200ms
搜索类型文本/正则语义符号AST 模式
最适合已知模式未知代码、概念定义、结构代码迁移
配置无需MCP 配置MCP + 索引npm 安装
假阳性宽泛正则时可能较多