论文链接:XAgent: eXecution-guided Agentic AI for Effective Localization and Resolution of GitHub Issues 发表时间:2026年9月10日 机构:Monash University × University of Melbourne(澳洲)—— 高校合作 领域标签:cs.SE / SWE Agent / Automated Program Repair
一、论文背景
仓库级 GitHub issue 自动解决是 SWE-bench 催生的核心任务:给定 issue 描述+代码库,产出通过测试的补丁。现有 agent(SWE-Agent、EXPEREPAIR、Refact 等)的主流工作方式是静态的、描述导向的——从 issue 文本推断 bug 位置、生成补丁、跑已有测试验证。
静态路线有两个系统性缺陷:定位偏差——issue 描述质量参差,措辞会把 LLM 推理偏向狭窄范围,导致补丁只修表面症状;验证不全——已有测试往往只覆盖报告者提到的路径,补丁在未描述的边缘条件下仍可能出错。人类开发者的做法恰恰相反:先复现问题(跑起来)、观察行为差异(差分定位)、再写新测试覆盖边界。
二、论文定位和关联工作
| 维度 | SWE-Agent/EXPEREPAIR/Refact | XAgent |
|---|---|---|
| 定位信号 | issue 文本+代码静态检索 | 差分执行+树编辑距离 |
| 验证集 | 仓库已有测试 | 已有测试+生成式边缘用例 |
| 上下文 | issue 描述框定 | 程序动力学+程序上下文 |
| 范式 | 描述导向(静态) | 执行引导(动态) |
定位结论:本文是"执行引导"范式在 issue 解决任务上的系统化落地——与 AgentGrad 的干预验证、Show-Harness 的接口思想同日出现,共同勾勒 2026 年"动态证据优先于静态文本"的方法论走向。
三、问题定义
具体问题:给定 issue 报告 r 与仓库 R,如何不依赖 r 的措辞质量,定位真正的故障根因并产出覆盖完整修复语义的补丁?
核心洞察:bug 的本质是行为分歧——程序在 buggy 版本与期望版本上的执行差异。行为信号比文本信号更接近 bug 本体:issue 描述可能误导,但执行差异不会说谎。
四、问题解法
1. 执行引导定位(execution-guided localization):构建 buggy 与非 buggy(修复后/参考)版本,在受控输入上差分执行两版本,收集行为分歧点(输出差异、异常栈、状态差异);用树编辑距离对齐两版本的执行轨迹/语法树,把分歧映射到具体函数——定位结果直接给出函数级 F1 86.6%/72.8% 的锚点。
2. 上下文感知测试增强(context-aware test augmentor):分析程序上下文(依赖、调用关系、issue 涉及模块),生成超越 issue 描述的边缘用例测试——空输入、边界值、交互路径——扩展验证覆盖面,防止补丁过拟合于报告症状。
3. 迭代修复循环:定位→补丁生成→增强测试验证→失败则用新测试的失败信息回灌定位,闭环收敛。
五、评估指标与实验证据
- 主结果(SWE-bench-Lite):resolve rate 62.0%(新 SOTA);函数级定位准确率 72.8%、文件级 F1 86.6%(均 SOTA)。
- 成本:$1.56/issue,比前 SOTA(Mu et al.)便宜 37%;token 用量减约 40%(全库总计省约 $300)。
- 增量价值:解决 7 个 SWE-Agent、EXPEREPAIR、Refact 等顶级基线全部失败的 issue——增量而非持平。
- 消融:执行引导定位+测试增强合计贡献最高 9% 相对提升。
六、效果优势的根源解释
定位机制差异:静态方法从文本到代码是"翻译"问题——描述怎么写,检索就怎么偏;差分执行从行为到代码是"测量"问题——分歧点在哪里,根因就在附近。树编辑距离把轨迹级差异对齐到语法级位置,等价于给定位装上测距仪。72.8% 函数级准确率是测量式定位的直接产物。
验证机制差异:已有测试是"过去的规格",报告的 issue 是"现在的故障",补丁需要通过的是"未来的用例"——生成式边缘测试把验证集推向未来分布,防止"通过旧测试但没修好"的假阳性。
成本机制:精确定位(函数级锚点)缩小了补丁生成需要读的上下文,token 省 40% 与定位精度是同一机制的两面——更准的定位=更小的搜索空间=更便宜的生成。
七、必要知识反推
- SWE-bench-Lite:300 个人工验证 issue 的子集,resolve rate 是主指标。
- 差分分析(differential analysis):对比两个版本行为的调试技术,安全领域(fuzzing 差分)与本文的执行差分同源。
- 树编辑距离(tree edit distance):两棵树最小编辑操作代价,本文用它把执行轨迹差异对齐到代码位置。
- EXPEREPAIR/Refact:前 SOTA 的经验修复与重构式修复 agent。
八、论文中可以提取的通用性灵感
- 行为证据优先于文本证据:凡有"可执行副本"的诊断任务(bug、性能、安全),先设计差分实验再读描述——描述是假设,执行是测量。
- 验证集要超越输入分布:生成式测试把验证推向"报告者想象力之外"的用例,是防过拟合修复的通用手段(同样适用于需求验收、合同测试)。
- 定位精度决定成本曲线:诊断类任务的下游成本(读多少上下文、生成多大补丁)是定位精度的单调函数——先投资定位,再优化生成。
- 失败回灌闭环:新生成的测试失败信息作为下一轮定位证据,让系统随修复进程自我增强——任何"诊断→行动→验证"流程都值得加这条回路。