名称: search-router 描述: 为每种查询类型选择正确的搜索工具 用户可调用: false
搜索工具路由器
为每种查询类型使用最令牌高效的搜索工具。
何时使用
- 搜索代码模式
- 查找实现位置
- 寻找特定标识符
- 理解代码如何工作
决策树
查询类型?
├── 代码探索(符号、调用链、数据流)
│ → TLDR 搜索 - 95% 令牌节省
│ 所有代码搜索的默认工具 - 代替 Grep 使用
│ 示例:"spawn_agent"、"DataPoller"、"redis 使用"
│ 命令:tldr search "查询" .
│
├── 结构(AST 模式)
│ → AST-grep(/ast-grep-find)- ~50 令牌输出
│ 示例:"def foo"、"class Bar"、"import X"、"@decorator"
│
├── 语义(概念性问题)
│ → TLDR 语义搜索 - 5层嵌入(P6)
│ 示例:"认证如何工作"、"查找错误处理模式"
│ 命令:tldr semantic search "查询"
│
├── 字面(精确文本、正则表达式)
│ → Grep 工具 - 最后手段
│ 仅在 TLDR/AST-grep 不适用时使用
│ 示例:错误消息、配置值、非代码文本
│
└── 完整上下文(需要完全理解)
→ Read 工具 - 1500+ 令牌
找到正确文件后的最后手段
令牌效率比较
| 工具 | 输出大小 | 最佳用于 |
|---|---|---|
| TLDR | ~50-500 | 默认:代码符号、调用图、数据流 |
| TLDR 语义 | ~100-300 | 概念性查询(P6,基于嵌入) |
| AST-grep | ~50 令牌 | 函数/类定义、导入、装饰器 |
| Grep | ~200-2000 | 最后手段:非代码文本、正则表达式 |
| Read | ~1500+ | 找到文件后的完全理解 |
示例
# 代码探索 → TLDR(默认)
tldr search "spawn_agent" .
tldr search "redis" . --layer call_graph
# 结构 → AST-grep
/ast-grep-find "async def $FUNC($$$):" --lang python
# 语义 → TLDR 语义
tldr semantic search "认证如何工作"
# 字面 → Grep(最后手段 - 优先 TLDR)
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 令牌
相关技能
/tldr-search- 默认 - 代码探索,节省 95% 令牌/ast-grep-find- 结构代码搜索/morph-search- 快速文本搜索