GNN能debug吗?北大团队开源GREPO,10M小GNN超越大型LLM
仓库级 Bug 定位对 agent 很重要但是难度大面向软件工程的 Code Agent 快速走向实用它们已经可以在真实仓库里完成根据 issue 去浏览代码并修改在运行测试通过后提交 PR 的步骤并在 SWE-bench 等真实修复基准上不断提升。无论是人还是 agent 首先都绕不开应该改哪里的问题在工业实践里开发者排查 bug 往往把大量时间花在定位相关文件或函数、沿依赖关系追踪调用链、以及回溯历史变更上。对 agent 而言定位失败会直接导致检索到的上下文无关、修改位置偏离甚至在错误模块乱修。近期针对软件工程智能体的分析也指出很多失败案例并不是不会写补丁而是首先没能准确锁定 buggy 文件。很多修复任务真正拉开差距的地方就在于能不能在庞杂仓库里尽快找到那个真正该改的位置。GNN 优势明显但研究者缺乏现成图基准和图数据GNN 的优势正好与此互补图上的消息传递天然适合建模结构依赖及多跳传播但长期制约这个方向发展的难点在于一直没有真正面向仓库级 Bug 定位的图 benchmark 和图数据。现有基准大多服务于文本检索、文件级定位或端到端修复缺少能直接用于 GNN 训练与评测的仓库图表示。北京大学张牧涵团队推出 GREPO 的贡献就是把这块最难、最基础的地基完整铺好了不仅能直接支持 GNN 训练也能兼容所有 code agent。〓 图1. GREPO 的规模与效果概览左任务规模对比右9 个代表性仓库上 GNN 与强基线对比。它首次提供可直接使用的异构时序仓库图覆盖 86 个真实 Python 仓库和 47,294 条真实修复任务把历史快照锚定、增量构图、严格泄漏控制和统一评测协议整合成一套完整标准而且可以支持研究者根据自己需要对于任意 GitHub 仓库都能生成数据。GREPO 把仓库级 Bug 定位推进到可规模化研究的标准图学习任务统一数据结构、统一输入约束、统一指标并配套榜单。论文标题GREPO: A Benchmark for Graph Neural Networks on Repository-Level Bug Localization论文链接https://arxiv.org/abs/2602.13921代码链接https://github.com/qingpingmo/GREPO数据集链接https://modelscope.cn/datasets/qingpingmomo/Grepo排行榜链接https://pku-mulab-grepo.netlify.app/指标Mean Query RecallHitK对每个 issue记真实需要修改的节点集合为模型输出的 TopK 为 Topkq则最终得分为测试集上所有 issue 的平均值。论文在上报告结果。训练/测试切分与公平性GREPO 在每个仓库内按 issue 创建时间做时间序切分80% 作为训练、20% 作为测试。所有模型在 86 个仓库的训练集合并训练。评测时论文重点报告 9 个代表性仓库astropy、dvc、ipython、pylint、scipy、sphinx、streamlink、xarray、geopandas的测试集表现并额外提供 0-shot 设置这 9 个仓库完全不参与训练以检验跨仓库泛化。〓 图2. 基准对比与任务统计Table 1/2。GREPO 在仓库数量与任务规模上显著扩大并给出了修复任务复杂度的分位数统计。从仓库到图GREPO 的时序异构仓库图GREPO 是一套能够承载跨文件依赖推理的图结构。它把仓库在某个 commit 的结构与语义依赖编码成异构图并用时间信息把同一实体在不同版本串联起来。构图 pipelineTree-sitter Jedi首先使用 Tree-sitter 从 AST 中抽取定义节点与包含关系随后使用 Jedi 在源码位置级别解析调用与继承并通过(相对路径, 定义起始行号)的 join key 将 Jedi 的解析结果映射回图中的定义节点。这种分工利用了两类工具的互补性Tree-sitter 稳定识别语法结构Jedi 更擅长解析符号引用。〓 图3. 数据集构建总览。来源原论文 Figure 2。〓 图4. 单 commit 构图流程。来源原论文 Figure 3。〓 图5. 增量式构图收益。来源原论文 Figure 4。增量构图让全历史仓库图算得动如果对每个 commit 都从零重建整张仓库图成本会随 commit 数量巨量增多。GREPO 的做法是新 commit 到来时只重解析 git diff 涉及的文件未变化的节点与边直接复用从而显著降低整体构建开销如图 5 所示。分支/合并如何从 commit DAG 得到可用时间轴真实仓库历史是带分支与合并的 DAG。为了进行增量构图与在某个时间点切片取快照论文采用从 commit DAG 中提取一条最长路径作为规范化时间轴并在任务中只使用 bug 发生时间之前的历史信息避免未来泄漏。〓 图6. 将分支合并的 commit DAG 线性化为最长路径时间轴Figure 10。来源原论文 Figure 10。标签怎么来issue↔PR 对齐、泄漏控制与结构化输入Step 1筛选有效修复 PR。通过 GitHub API 获取 PR 元数据和提交记录只保留 merged PR排除未被接受的修复。Step 2建立 issue 与 PR 的对应关系。Step 3控制信息泄漏排除可能暴露修复细节的内容。Step 4规范化 issue body。Step 5生成函数或类级标签并映射到图形成监督标签集合。〓 图7. 任务/标签构建pipeline。来源原论文 Figure 5。10M小GNN超越大型LLM论文在统一的输入约束与切分下对比了多类方法LLM/Agent 系列与多种 GNN/Graph Transformer统一训练设置。GNN/Graph Transformer从 GCN 到 GPS 的系统对比论文评测了 GCN、GraphSAGE、GIN、GAT、GATv2、GatedGCN 以及图 Transformer GPS 等多种架构覆盖了经典消息传递与更强的注意力/全局建模变体。〓 图8. LLM/Agent 与 GNN 在 9 个代表性仓库上的主结果HitK在 Average 列上GATv2 的 Hit1/5/10/20 均为最优或接近最优显著超过 LLM/Agent 基线。从 Hit5/10/20 的差距看GNN 的优势不仅体现在第一名是否命中更体现在Top-K 覆盖真实修改集合的能力。这符合仓库级定位的需求真实修复往往涉及多个实体需要高召回的候选集合。Scaling Law训练仓库越多0-shot 泛化越强GREPO 的规模允许做“像 NLP/视觉那样”的 scaling 实验随着训练仓库数量从 10→20→40→77 增加GAT 在 0-shot 设置下的各项 HitK 持续提升提示存在可迁移的仓库级定位能力。〓 图9. scaling lawFigure 7。来源原论文Figure 7。更多阅读#投 稿 通 道#让你的文字被更多人看到如何才能让更多的优质内容以更短路径到达读者群体缩短读者寻找优质内容的成本呢答案就是你不认识的人。总有一些你不认识的人知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁促使不同背景、不同方向的学者和学术灵感相互碰撞迸发出更多的可能性。PaperWeekly 鼓励高校实验室或个人在我们的平台上分享各类优质内容可以是最新论文解读也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个让知识真正流动起来。稿件基本要求• 文章确系个人原创作品未曾在公开渠道发表如为其他平台已发表或待发表的文章请明确标注• 稿件建议以markdown格式撰写文中配图以附件形式发送要求图片清晰无版权问题• PaperWeekly 尊重原作者署名权并将为每篇被采纳的原创首发稿件提供业内具有竞争力稿酬具体依据文章阅读量和文章质量阶梯制结算投稿通道• 投稿邮箱hrpaperweekly.site• 来稿请备注即时联系方式微信以便我们在稿件选用的第一时间联系作者• 您也可以直接添加小编微信pwbot02快速投稿备注姓名-投稿△长按添加PaperWeekly小编现在在「知乎」也能找到我们了进入知乎首页搜索「PaperWeekly」点击「关注」订阅我们的专栏吧·