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

Echo 是一个通过结合代码图增强上下文检索、自动执行反馈及补丁验证机制,能够高效生成单一高质量问题复现测试用例并显著提升开源方法成功率(达 66.28%)的智能体。

Zhiwei Fei, Yue Pan, Federica Sarro, Jidong Ge, Marc Liu, Vincent Ng, He Ye

发布于 Tue, 10 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 Echo 的 AI 智能体,它的核心任务是帮程序员“重现”软件里的 Bug

想象一下,你是一家软件公司的“侦探”。用户报告说:“我的软件有个地方不对劲!”(这就是 Bug 报告)。但是,用户往往描述得很模糊,比如“点击按钮没反应”,却不会告诉你具体是哪行代码出了问题,也没法直接给你看那个坏掉的场景。

要修好这个 Bug,程序员必须先重现它:写一段测试代码,让软件在运行这段代码时,完美地表现出那个错误。如果写不出来,或者写错了,程序员就不知道该怎么修。

以前,写这段“重现代码”非常耗时,就像让侦探在茫茫大海里找一根特定的针。Echo 就是为了解决这个问题而生的超级助手。

Echo 是怎么工作的?(用生活化的比喻)

Echo 的工作流程可以比作一个**“侦探破案 + 模拟实验”**的过程,它主要做了四件大事:

1. 像“读心术”一样精准找线索(图增强检索)

  • 以前的做法:侦探(AI)拿到线索(Bug 描述),就在图书馆(代码库)里随便翻翻,或者只找几个关键词。结果往往找了一堆不相关的书,或者漏掉了关键证据。
  • Echo 的做法:Echo 手里有一张**“代码关系地图”**(代码图)。它不仅能看到文件,还能看到文件之间谁调用谁、谁依赖谁。
    • 比喻:就像侦探不仅知道“嫌疑人住在 A 街”,还知道"A 街的人经常去 B 咖啡馆,而 B 咖啡馆的老板是 C 的亲戚”。Echo 利用这张地图,自动优化它的“搜索提问”,精准锁定最相关的几行代码和测试案例,而不是大海捞针。

2. 自动写“剧本”并“排练”(自动生成与执行)

  • 以前的做法:AI 写好了测试代码,但往往不知道怎么运行。就像演员背好了台词,但不知道剧场在哪、灯光怎么开,导致无法上台演出。
  • Echo 的做法:Echo 不仅写代码,还自动去查说明书(README、配置文件),找出运行这个项目的正确命令。
    • 比喻:它像个全能导演,写完剧本后,自己跑去把舞台搭好、灯光调好,然后真的让演员(测试代码)上台演一遍。如果演失败了(报错),它就把“演出录像”(错误日志)拿回来分析。

3. 制造“平行宇宙”来验证(双版本检查)

这是 Echo 最厉害的地方,也是它被称为“首创”的原因。

  • 以前的做法:AI 写了一个测试,发现它报错了,就以为“太好了,Bug 重现了!”但有时候,测试报错可能是因为代码写错了,而不是因为 Bug。这就像侦探看到嫌疑人摔倒了,就以为是他干的,其实可能是路滑。
  • Echo 的做法:Echo 会先让另一个 AI 尝试**“修好”这个 Bug**(生成补丁),制造一个“完美版”的软件。
    • 比喻:Echo 会进行**“双版本对比实验”**:
      1. 在**“坏版本”(原版)上运行测试:测试必须失败**(证明 Bug 存在)。
      2. 在**“好版本”(打了补丁的版本)上运行测试:测试必须成功**(证明 Bug 被修好了)。
    • 只有同时满足这两个条件,Echo 才敢拍胸脯说:“这个测试是真的重现了 Bug!”如果不行,它就把“演出录像”拿回去,让 AI 重新改剧本,直到完美为止。

4. 少而精,拒绝“人海战术”

  • 以前的做法:很多 AI 会生成 100 个测试方案,然后挑一个最好的。这就像让 100 个侦探去猜,虽然可能猜对,但成本太高,效率太低。
  • Echo 的做法:Echo 追求**“一击必杀”。它通过不断的自我修正(看录像、改剧本),只为每个 Bug 生成一个**高质量的测试。
    • 比喻:它不像是在撒网捕鱼,而是像狙击手,瞄准、调整、再瞄准,直到子弹(测试代码)精准命中靶心。

成果如何?

在业界公认的“侦探考试”(SWT-Bench 基准测试)中,Echo 取得了66.28%的成功率,成为了目前开源工具中的第一名(SOTA)

  • 它比第二名强在哪里? 它不仅更准,而且能解决很多其他工具解决不了的“疑难杂症”。
  • 它贵吗? 虽然它用了很多算力,但因为它只生成一个高质量测试,而不是生成一堆垃圾再筛选,所以性价比很高,比很多竞争对手更省钱。

总结

Echo 就像一个拥有“超级地图”、能“自动搭舞台”、还会“制造平行宇宙”进行对比实验的 AI 侦探。

它不再盲目地猜测,而是通过精准找线索自动跑测试用“修好版”来验证,一步步把模糊的 Bug 描述变成确凿的证据。这不仅帮程序员省下了大量时间,也让软件变得更可靠。

这篇论文的核心思想就是:与其盲目地多生几个,不如聪明地少生一个,但要确保它是完美的。