搜索工具层次结构Skill search-hierarchy

搜索工具层次结构是一种技能,用于在代码库中根据查询类型(如结构、语义、字面、全文上下文)选择最合适的搜索工具(如AST-grep、LEANN、Grep、Read),以优化搜索流程、提高效率并节省令牌使用。关键词:代码搜索、搜索工具、AST-grep、LEANN、令牌效率、查询优化、软件开发。

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

名称:搜索工具层次结构 描述:搜索工具层次结构

搜索工具层次结构

为每种查询类型使用最令牌高效的搜索工具。

决策树

查询类型?
├── 结构(代码模式)
│   → AST-grep(约50令牌输出)
│   示例:"def foo"、"class Bar"、"import X"、"@decorator"
│
├── 语义(概念性问题)
│   → LEANN(约100令牌,如果仅路径)
│   示例:"认证如何工作"、"查找错误处理模式"
│
├── 字面(精确标识符)
│   → 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 "认证如何工作" --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令牌