其他
需要把代码搜索结果喂给脚本或 AI Agent 时,用…
在把 GrepAI 语义搜索集成到脚本、MCP 或 AI Agent(Claude/GPT)上下文、需要结构化输出或节省 token 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要把代码搜索结果喂给脚本或 AI Ag特定
解决思路
- 用 `--limit N` 控制返回结果条数(默认 10),不要一次取超过需要的数量。
- 需要结构化输出时加 `--json` / `-j`,得到含 query/results/score/file/start_line/end_line/content/total 的标准 JSON。
- 需要更省 token 时用 `--toon` / `-t` 输出 TOON(Token-Oriented Object Notation,v0.26.0+),比 JSON 约省 50% token。
- 用 `--compact` / `-c` 去掉 content、只保留文件位置,可与 `--json` 或 `--toon` 组合使用。
- 注意 `--json` 与 `--toon` 互斥,不能同时指定。
- 给 AI Agent 提供上下文时用紧凑模式,例如 `grepai search "payment processing" --json --compact --limit 5`,再把结果交给 AI 配合读文件工具取细节。
- 按「先搜索后读文件」的工作流:先用 `grepai search "authentication middleware" --json --compact --limit 3` 拿到文件+行号(含 score),再让 AI 读取如 `src/auth/middleware.go:15-45` 获取完整上下文。
- 脚本中用 jq 消费全量 JSON:`jq -r '.results[].file'` 取路径、`jq '.results[] | select(.score > 0.8)'` 按分数过滤、`jq '.total'` 计数。
- Python 集成:用 `subprocess.run(['grepai','search','authentication','--json'], capture_output=True, text=True)` 拿 stdout,`json.loads` 后遍历 `data['results']` 输出 `score | file:start_line`。
- Node.js 集成:`execSync('grepai search "authentication" --json')` 后 `JSON.parse`,遍历 `data.results` 打印 `score | file:start_line`。
- MCP 集成:运行 `grepai mcp-serve` 启动 MCP server(v0.26.0+),使用工具 `grepai_search`(query, limit, compact, format)、`grepai_trace_callers`(symbol, compact, format)、`grepai_trace_callees`(symbol, compact, format)、`grepai_trace_graph`(symbol, depth, format)、`grepai_index_status`(format)。
- MCP 调用时在 arguments 里传 `format` 参数,合法值为 `"json"`(默认)或 `"toon"`,并可按需加 `"compact": true`。
- 按需选择格式:AI agent 用 compact(约省 80% token);脚本需要 content 时用全量 JSON;人工调试用 human-readable;TOON 用于支持它的 AI agent,TOON compact 用于 token 极度受限场景。
- 把结果管道到文件或其他工具,例如 `grepai search "authentication" --json > results.json`,或 `... | jq -r '.results[0].file' | xargs code` 打开 VS Code,macOS 下 `| pbcopy` 复制到剪贴板。
- 批量搜索时用 bash 循环 queries 数组,对每个查询执行 `grepai search "$q" --json --compact --limit 3` 并打印分隔标题。
- 处理错误:搜索失败时 JSON 返回 `{"error": ..., "code": "INDEX_NOT_FOUND"}`;脚本中用 `jq -e '.error'` 判断,命中则打印错误并 `exit 1`(索引不存在时先运行 `grepai watch`)。
- 记住 compact 字段映射:`query`→`q`、`results`→`r`、`score`→`s`、`file`→`f`、`start_line`/`end_line`→`l`(合并为 "15-45")、`total`→`t`,解析时按缩写键取值。
- 遵循最佳实践:AI agent 用 compact、脚本需要正文时用全量 JSON、调试用人类可读、结果数按需限制、始终正确解析 JSON 并检查 error 字段。
适用边界 · 注意事项
- 需要人工阅读或调试输出时不要用 compact/TOON(字段被缩写且不含 content,可读性差)。
- 需要结果中带代码正文时不要加 `--compact`(它只保留文件位置与行号)。
- 使用不支持 TOON 的 AI agent,或 GrepAI 版本低于 v0.26.0 时,不要依赖 `--toon` 与 MCP format 参数。