本地代码库调研
核心原则
- •事实驱动:证据不足时继续检索,引用具体文件路径和代码片段
- •先广后深:先全局语义搜索定位范围,再精确匹配锁定细节
- •并行加速:多个独立查询可并行执行
- •灵活选择:若已知目标文件位置,可直接读取,无需遵循固定顺序
工具选择
根据场景选择合适的工具:
| 工具 | 用途 | 适用场景 |
|---|---|---|
mcp_augmentcode_codebase-retrieval | 语义搜索 | 不确定代码位置,需要理解整体结构 |
grep_search | 精确匹配 | 已知关键词/符号名,需要找所有出现位置 |
file_search | 文件名搜索 | 已知文件名模式 |
read_file | 读取文件内容 | 已知文件位置,需要完整上下文 |
CLI (rg/grep) | 复杂管道操作 | 需要组合命令时使用(备选) |
说明:若已知目标位置,可直接使用 read_file 或 grep_search,无需先做语义搜索。
检索策略
1. 语义搜索优先
使用 mcp_augmentcode_codebase-retrieval,采用自然语言长查询:
✅ 好的查询:
- •"Where is the reward computation implemented for RL tasks and how are rewards aggregated?"
- •"灵巧手抓取姿态的优化目标函数在哪里定义,使用了什么约束?"
❌ 差的查询:
- •"reward"
- •"grasp optimization"
2. 迭代收敛
语义搜索可能需要多轮:
- •结果太少 → 扩大查询范围
- •结果太多 → 增加限定条件
- •找到候选 → 切换到精确匹配确认
3. 精确匹配锁定
当已知具体符号/关键词时,使用 grep_search:
code
grep_search( query="class HandModel", isRegexp=False, includePattern="**/*.py" )
4. 文件读取获取上下文
找到目标位置后,使用 read_file 获取完整上下文。
5. CLI 备选
当需要复杂管道操作时(如排序、去重、统计),可使用 CLI:
bash
rg "def.*grasp" --type py -l | head -20
输出要求
- •引用具体文件路径和符号名作为证据
- •只陈述有证据支持的结论
- •不确定时明确说明还需检索什么
反模式
- •❌ 跳过语义搜索直接读文件
- •❌ 使用短关键词查询(语义搜索场景)
- •❌ 在证据不足时就下结论
- •❌ 单线程串行查询(可并行时)