概述
任何编码代理(Cursor、Claude Code、Codex、OpenCode)的运行时工作流程:在代理建议修复之前,它会使用 site:github.com/[pkg]/issues 以及错误字符串查询 Scavio,显示前 3 个开放/已关闭问题,并将建议落实到实际项目活动中。
触发器
用户报告错误或询问依赖项的每个代理工具调用
计划
在代理工具调用上
工作流步骤
1
解压包并报错
从用户的消息或堆栈跟踪中,提取包名称和错误指纹。
2
范围 GitHub SERP 查询
构建 `site:github.com/<owner>/<pkg>/issues <error>` 并 POST 到 Scavio。
3
按新近度和反应排名
解析前3个结果;更喜欢最近活动的未解决问题。
4
包含在代理上下文中
将问题标题、URL 和热门评论注入下一个 LLM 回合。
5
建议接地修复
代理在其答案中引用了实际的问题线程。
Python 实现
Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY}
def issue_context(owner, pkg, error):
q = f'site:github.com/{owner}/{pkg}/issues {error}'
r = requests.post("https://api.scavio.dev/api/v1/search",
headers=H, json={"query": q}).json()
return r.get("organic_results", [])[:3]
print(issue_context("langchain-ai", "langchain", "ToolInvocation deprecated"))JavaScript 实现
JavaScript
const H = { "x-api-key": process.env.SCAVIO_API_KEY, "content-type": "application/json" };
async function issueContext(owner, pkg, error) {
const q = `site:github.com/${owner}/${pkg}/issues ${error}`;
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H, body: JSON.stringify({ query: q })
}).then(r => r.json());
return (r.organic_results || []).slice(0, 3);
}使用的平台
包含知识图谱、PAA和AI概览的网页搜索