Recoleta Item Note

Echo: Graph-Enhanced Retrieval and Execution Feedback for Issue Reproduction Test Generation

Echo 是一个面向软件 issue 的自动复现测试生成代理,重点解决“如何找到对的代码上下文、真正跑起来测试、并可靠判断是否复现成功”的问题。它把代码图检索、自动执行、以及基于补丁版本的 fail-to-pass 校验结合起来,在 SWT-Bench Verified 上报告了新的开源 SOTA。

issue-reproductiontest-generationcode-retrievalexecution-feedbackcode-graph

Echo 是一个面向软件 issue 的自动复现测试生成代理,重点解决“如何找到对的代码上下文、真正跑起来测试、并可靠判断是否复现成功”的问题。它把代码图检索、自动执行、以及基于补丁版本的 fail-to-pass 校验结合起来,在 SWT-Bench Verified 上报告了新的开源 SOTA。

  • 许多 bug 报告没有可执行的复现测试,开发者需要手动理解代码库、补全环境与测试框架细节,成本高且耗时。
  • 现有方法常依赖较弱的文件级检索或预设执行命令,难以在真实仓库中准确找到相关代码/测试,也难以稳定执行生成的测试。
  • 仅凭 LLM 语义判断测试是否“真的复现了问题”不可靠;更关键的标准是测试在 buggy 版本失败、在 patched 版本通过(fail-to-pass)。
  • 将仓库构造成异构代码图(文件、AST 节点、文本片段及其关系),并基于 Neo4j 做多策略检索,以获取 focal code 和相关回归测试。
  • 引入自动 query refinement:LLM 先评估当前检索结果是否足够,再针对缺失信息迭代改写查询,从而提高上下文的精确性与紧凑性。
  • 生成测试时,把 issue 描述、检索到的 focal code、相关测试示例和候选补丁一起喂给 LLM,要求产出一个独立、最小化、符合项目风格的单个复现测试文件。
  • 自动推断并执行该测试的仓库特定命令,但严格限制为只读、只运行生成的测试文件、不修改仓库、不跑全量测试,以获得可用执行反馈。
  • 使用候选补丁构造 patched 版本,做规则化 dual-version check:若测试在原始版本失败且在补丁版本通过,则视为成功;否则把日志反馈给生成器继续迭代,最多重试两次。
  • SWT-Bench Verified 上,Echo 报告 66.28% success rate,论文称其为开源方法中的新 SOTA
  • 相比很多先生成并排序多个候选测试的方法,Echo 选择每个 issue 只重点生成 1 个测试并迭代改进,主张具有更好的cost-performance trade-off
  • 论文明确声称其自动执行生成测试是 first-of-its-kind feature,强调该能力更贴近真实开发工作流。
  • 文本中给出的核心量化结果主要是 66.28%;当前摘录未提供更细的 baseline 对比数字、消融提升幅度或成本数值。
Built with Recoleta

Run your own research radar

Turn arXiv, Hacker News, OpenReview, Hugging Face Daily Papers, and RSS into local Markdown, Obsidian notes, Telegram digests, and a public site.