搜索工具优化技能Skill search-hierarchy

这个技能用于优化代码搜索过程,通过根据查询类型(如结构型、语义型、字面型)智能选择最令牌高效的搜索工具(如AST-grep、LEANN、Grep、Read),以提高软件开发效率。关键词:代码搜索、工具选择、令牌效率、结构化搜索、语义搜索、字面搜索、搜索优化、开发工具链。

架构设计 0 次安装 0 次浏览 更新于 3/14/2026

name: search-hierarchy description: 搜索工具层次结构 user-invocable: false

搜索工具层次结构

根据查询类型使用最令牌高效的搜索工具。

决策树

查询类型?
├── 结构型(代码模式)
│   → AST-grep (~50 令牌输出)
│   示例:"def foo", "class Bar", "import X", "@decorator"
│
├── 语义型(概念性问题)
│   → LEANN (~100 令牌,如果仅路径)
│   示例:"how does auth work", "find error handling patterns"
│
├── 字面型(精确标识符)
│   → Grep(变量输出)
│   示例:"TemporalMemory", "check_evocation", 正则表达式模式
│
└── 完整上下文(需要完全理解)
    → Read (1500+ 令牌)
    在找到正确文件后最后使用

令牌效率比较

工具 输出大小 最佳用途
AST-grep ~50 令牌 函数/类定义、导入、装饰器
LEANN ~100 令牌 概念性问题、架构、模式
Grep ~200-2000 精确标识符、正则表达式、文件路径
Read ~1500+ 在找到文件后完全理解

钩子强制执行

grep-to-leann.sh 钩子自动:

  1. 检测查询类型(结构型/语义型/字面型)
  2. 阻止并建议 AST-grep 用于结构型查询
  3. 阻止并建议 LEANN 用于语义型查询
  4. 允许字面模式通过到 Grep

  • 对于代码结构问题,从 AST-grep 开始
  • 对于“X 如何工作”的问题,使用 LEANN
  • 仅用于精确标识符匹配时使用 Grep
  • 仅通过搜索找到文件后读取文件

不做

  • 使用 Grep 处理概念性问题(返回无结果)
  • 在知道哪些文件相关之前读取文件
  • 在 AST-grep 会给出文件:行时使用 Read
  • 忽略钩子建议

示例

# 结构型 → AST-grep
ast-grep --pattern "async def $FUNC($$$):" --lang python

# 语义型 → LEANN
leann search opc-dev "how does authentication work" --top-k 3

# 字面型 → Grep
Grep pattern="check_evocation" path=opc/scripts

# 完整上下文 → Read(找到文件后)
Read file_path=opc/scripts/z3_erotetic.py

优化流程

1. AST-grep: “查找异步函数” → 3 个文件:行匹配
2. Read: 仅顶部匹配 → 完全理解
3. 跳过: 4 个不相关文件 → 节省 6000 令牌