name: search-tools description: 搜索工具层次结构 user-invocable: false
搜索工具层次结构
当搜索代码时,使用此决策树:
决策树
需要概念/语义搜索?
(X如何工作,查找模式,理解架构)
→ 使用 LEANN (/leann-search) - 基于嵌入的语义搜索
→ PreToolUse 钩子自动重定向语义 Grep 查询
需要理解代码结构?
(查找函数调用,类使用,重构模式)
→ 使用 AST-grep (/ast-grep-find)
需要在代码中查找文本?
→ 使用 Morph (/morph-search) - 速度快20倍
→ 如果没有 Morph API 密钥:回退到 Grep 工具
简单的一次性搜索?
→ 直接使用内置的 Grep 工具
工具比较
| 工具 | 最佳用途 | 要求 |
|---|---|---|
| LEANN | 语义搜索:“缓存如何工作”,“错误处理模式”,概念查询 | 索引已构建 |
| AST-grep | 结构模式:“查找所有调用 foo() 的地方”,重构,按类型查找使用 |
MCP 服务器 |
| Morph | 快速文本搜索:“查找提及 ‘error’ 的文件”,在代码库中grep | API 密钥 |
| Grep | 字面模式,类/函数名称,正则表达式 | 无(内置) |
示例
LEANN(语义/概念):
- “身份验证如何工作”
- “查找错误处理模式”
- “速率限制在哪里实现”
AST-grep(结构):
- “查找所有返回 Promise 的函数”
- “查找所有使用 useState 的 React 组件”
- “将所有导入 X 重构为 Y”
Morph(文本搜索):
- “查找所有提及 ‘authentication’ 的文件”
- “搜索 TODO 注释”
Grep(字面):
class ProviderAdapterdef __init__- 正则表达式模式
LEANN 命令
# 使用语义查询搜索
leann search opc-dev "黑板通信如何工作" --top-k 5
# 列出可用索引
leann list
# 重建索引(当代码更改时)
leann build opc-dev --docs dir1 dir2 --no-recompute --no-compact --force