还记得我们之前的对话吗,我自己改造思路,我自己比如借鉴项目或者学习的时候遇到问题,通过 GitHub 找到相关项目,结合它的 Issue 和 PR 排查问题、寻找已有解法。问题解决后,也记录这次学到的东西和自己的想法,通过这个慢慢迭代成自己一个想法。如果原项目里找不到解法,再考虑能不能参考其他项目的经验。https://github.com/Rinta13795/issue-rag-agent,目前改成这样了,有没有借鉴项目或者思路提供给我,回答的好奖励美刀
回复 群友 716: 记得,上次是给你评简历里那个 Issue RAG Agent。现在这个版本已经从"重复 Issue 判断"长成了"可切换仓库的 Issue 检索工作台",而且你自己描述的那套学习流程(找项目 → 翻 Issue/PR → 定位解法 → 记录 → 迭代成自己的想法),跟你系统里"检索历史、给证据、人工复核"其实是同一个结构。先记住这点,下面几个建议都是从这儿长出来的。 一、把 PR 拉进索引,这是现在最大的缺口 "找已有解法"这件事,答案大概率不在 Issue 里,而在关掉它的那个 PR 里。GitHub 的 linked issue-PR(Closes #123)是现成的高质量信号:issue 描述问题,PR 给出解法。SWE-bench 就是这么构造的——从 PR 关联的 issue 里取题,把 PR 当标准答案。 你能拿它做两件事。索引层:PR 只进标题、正文、关联 issue、diff 摘要和改动文件列表,不做代码全量切块,成本可控。评测层:用 linked PR 当弱监督标签自动造评测集,不必手工标注。它有偏(不少老 issue 没有链接 PR),但胜在规模。你 README 里现在明确写了排除 PR、不读代码,往外扩的第一层正好在这里。 二、跨仓库检索:repo 是过滤器,不是边界 你现在是按仓库元数据硬过滤、不跨库混合证据。可你自己学习流程的最后一步就是"原项目找不到解法,去看别的项目怎么做"——这恰好需要跨库。比较自然的做法是两段式:先用 GitHub 全局 issue 搜索(加标签、状态等条件)拿跨项目候选,再回本地索引做重排。难点是术语不一致,同一个 bug 在不同项目里的叫法可能完全不同,得配 query 扩展或 repo 维度的归一化。 三、已经有现成的东西可以直接当参照或底座 GitHub 自己在 2026-06-18 上线了 Issue 重复检测的公开预览,同时让 MCP 工具能读写 issue 字段,说明厂商也在做同一件事,拿它当 baseline 比自说自话强: https://github.blog/changelog/2026-06-18-duplicate-detection-and-issue-fields-mcp-support-for-github-issues/ GitHub MCP server 本身就支持搜 issues 和 PR,可以当你的抓取后端,省掉一部分自建同步的活: https://github.blog/ai-and-ml/generative-ai/a-practical-guide-on-how-to-use-the-github-mcp-server/ Marketplace 上还有一个用 embedding+LLM 检测重复及相关 issue 的 Action,可以看它怎么划"重复"和"相关"的边界。 做 issue 解决方向的论文可以顺着这份列表刷: https://github.com/ZhonghaoJiang/Awesome-Issue-Solving 四、检索质量这块有两个成熟做法值得抄 Anthropic 的 Contextual Retrieval:给每个 chunk 先补文档级上下文再嵌入,配 contextual BM25 加 rerank,官方报 top-20 检索失败率降 67%(5.7% → 1.9%): https://www.anthropic.com/engineering/contextual-retrieval 你的语料是短文本、又混了不同仓库,这种"先补上下文再嵌入"的思路很可能比长文档场景收益更明显。 你那份评测里 Hybrid+ReRank 反而掉点(Recall@5 从 0.348 掉到 0.313),这个负结果别急着删,先做诊断:把失败样本拆成"压根没召回"和"召回了但被排走"两类分开统计。如果是第二类,基本可以怀疑 bge-reranker-base 对英文技术文本域不匹配,或者候选池规模给得不合适。换 embedding 或 reranker 时保持单变量,用同一份 eval、同一个 seed 重跑,一次只动一个。 至于 RepoGraph 那类仓库级图检索,等你从"issue 级"走到"定位到具体文件和代码"的时候再上,现在还用不着: https://github.com/ozyyshr/RepoGraph 五、记录这一步别留在脑子里 你说的问题解决后记录学到的东西,是最容易被跳过的一步,因为它没有即时反馈。可以把它做成一个 Skill:固定模板(现象、定位路径、根因、解法、可复用启发),每次排查完让 agent 按模板落一条 markdown,下次先检索这些笔记再动手。Basic Memory 就是这类方案,有 MCP 和 Skill 集成: https://github.com/basicmachines-co/basic-memory 再往前一步:这些笔记本身是一份私有语料,可以当成一个"仓库"喂回你的检索里。到那时你的系统就不只是帮你查别人的历史,而是帮你查你自己攒下来的解法——这大概就是你说的"迭代成自己的想法"最实在的形态。 钱就不用给了,等哪天真能给别人用,开个入口就行。