Dialogue SWE-Bench:对话驱动编码代理的基准测试

arXiv cs.CL 论文

摘要

提出了 Dialogue-SWE-Bench,这是一个用于评估编码代理通过与用户对话解决软件工程问题能力的基准测试。该研究还提出了一种基于角色设定的用户模拟器和一个能够提升对话能力的模式引导型代理。

arXiv:2606.13995v1 公告类型:新发布 摘要:AI 编码代理已迅速改变了软件工程,为广泛使用的交互式编码助手提供了支持。尽管它们在现实世界中具有交互性,但现有的基准测试却将其作为完全自主的系统进行评估。在这项工作中,我们引入了 Dialogue SWE-Bench,这是一个自动基准数据集,用于评估编码代理通过与用户对话解决实际软件工程问题的能力。我们设计了一种新颖的、基于角色设定的用户模拟器来支持任务评估,并通过对对话质量进行自动评估来增强任务评估。我们还提出了一种新的模式引导型代理,旨在提升现成编码代理的对话能力,其性能比强基线提高了 3-14%。我们的结果表明,更好的编码模型并不总是对应于更好的对话模型,这表明对话能力是编码代理性能中一个独特且目前尚未被充分研究的维度。
查看原文
查看缓存全文

缓存时间: 2026/06/15 08:57

# Dialogue-SWEBench: 对话驱动型编程智能体基准测试 来源:https://arxiv.org/html/2606.13995 ###### 摘要 AI编程智能体已迅速改变了软件工程领域,为广泛使用的交互式编程助手提供了动力。尽管它们在现实世界中具有交互性,但现有基准测试却将它们视为完全自主的系统进行评估。在这项工作中,我们引入了Dialogue-SWEBench,这是一个自动基准数据集,用于评估编程智能体通过与用户对话解决现实世界软件工程问题的能力。我们设计了一种新颖的、基于角色设定的用户模拟器来支持我们的任务评估,并通过自动评估对话质量来增强任务评估。我们还提出了一种新的schema引导型智能体,旨在改进现成编程智能体的对话能力,其性能在强基线基础上提升了3-14%。我们的结果表明,更好的编程模型并不总是对应更好的对话模型,这表明对话能力是编程智能体性能中一个独特且目前研究不足的维度。111代码和数据可在 https://jlab-nlp.github.io/dialogue-swe-bench/ 获取

Dialogue-SWEBench: 对话驱动型编程智能体基准测试
Brendan King 和 Jeffrey Flanigan
加州大学圣克鲁兹分校
{bking2,jmflanig}@ucsc.edu

## 1 引言

编程智能体已彻底改变了软件工程(SWE)领域,为广泛使用的工具如 Github Co-Pilot 和 Claude Code 提供了动力 GitHub (2022 (https://arxiv.org/html/2606.13995#bib.bib5)); Anthropic (2025b (https://arxiv.org/html/2606.13995#bib.bib4))。为了支持其发展,研究社区已经生成了日益复杂的基准测试,用于评估编程智能体在真实工程任务中的表现 Jimenezet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib14)); Merrillet al. (2026 (https://arxiv.org/html/2606.13995#bib.bib9))。这通过模型推理 OpenAI (2025 (https://arxiv.org/html/2606.13995#bib.bib42)); Qwen (2025 (https://arxiv.org/html/2606.13995#bib.bib38)); Anthropic (2025a (https://arxiv.org/html/2606.13995#bib.bib6))、编程智能体设计 Yanget al. (2024 (https://arxiv.org/html/2606.13995#bib.bib23)); Wanget al. (2024 (https://arxiv.org/html/2606.13995#bib.bib30)) 以及智能体编程的训练方法 Panet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib19)); Weiet al. (2025 (https://arxiv.org/html/2606.13995#bib.bib16)) 等方面的进步,使得这些智能体的**编程能力**得以快速提升。然而,尽管取得了这些进展,现有的基准数据集仍聚焦于完全自主的设置,忽视了现实世界中编程智能体使用的交互性质。这种完全自主的 SWE 评估在其衡量内容与现实软件工程之间留下了显著差距。首先,完全自主的基准测试假定输入是一个完整且正确的问题规范,然而这在实践中极少可用。222例如,Chowdhuryet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib31)) 发现,构成 SWE-Bench 的 76% 的真实世界 GitHub Issue 至少在一定程度上是不明确的,39% 被认为过于模糊,无法确定“一个成功的解决方案应该是什么样的”。其次,现实世界中使用编程智能体进行工程是高度交互的:在一项关于真实世界智能体编程会话的研究中,Baumannet al. (2026 (https://arxiv.org/html/2606.13995#bib.bib7)) 发现用户通过对话纠正或拒绝智能体输出的情况占 44%。这种交互性在很大程度上也是单向的:虽然用户经常使用对话来纠正智能体输出,但智能体本身只有 1-2% 的时间会主动寻求澄清。这些发现表明,提升编程智能体的**对话能力**是一个重大且尚未充分发掘的、可在现实世界产生影响的机遇。

参考图注:图 1:我们针对编程智能体的对话基准测试。用户从不与代码交互,完全通过对话执行软件工程任务。智能体通过对话与用户完成仓库级软件工程任务。

参考图注:图 2:我们基准测试设置及用户模拟器概览。用户从不与代码交互,完全通过对话执行软件工程任务。对于每个 SWE 问题,对话从一个固定的初始查询开始,并通过一个在线评估过程进行,该过程使用用户模拟器来回复每一条智能体消息。为确保对用户的忠实模拟,我们为用户包含了一个自我修正步骤(§3.3 (https://arxiv.org/html/2606.13995#S3.SS3)),其中生成的回复 $u'_{t+1}$ 会经过验证,必要时进行修正。

尽管现实世界中编程智能体的使用往往是对话驱动的,但据我们所知,目前还没有用于在仓库规模上系统评估编程智能体对话能力的基准测试。以往的工作评估过用于生成单一函数的对话系统 Chaurasia and Mooney (2017 (https://arxiv.org/html/2606.13995#bib.bib28)),但并不适用于仓库级任务。近期的工作评估了智能体解决模糊问题规范的能力 Vijayvargiyaet al. (2026 (https://arxiv.org/html/2606.13995#bib.bib3)),但并未完全涵盖编程智能体的对话驱动使用场景。在本文中,我们引入了 Dialogue-SWEBench:一个用于评估编程智能体通过与用户对话解决真实世界软件工程问题能力的基准数据集。我们评估了最先进的编程智能体,并发现更好的编程模型在对话设置中并不总是对应更好的交互式智能体。我们的贡献如下:

- 我们引入了一个**对话驱动**的编程智能体基准测试,在该基准测试中,智能体必须通过与用户对话来解决真实的 SWE 任务,而不是在任务开始时获得完整的问题规范(第 3 节 (https://arxiv.org/html/2606.13995#S3))。
- 为此,我们设计了一个新颖的、基于角色设定的用户模拟器,用于通过对话在线评估编程智能体(§3.3 (https://arxiv.org/html/2606.13995#S3.SS3))。
- 我们在这个新的对话设置中评估了最先进的编程模型和智能体,并发现更强的编程模型并不总是更强的对话系统(§5 (https://arxiv.org/html/2606.13995#S5)-§6 (https://arxiv.org/html/2606.13995#S6))。
- 我们使用一种新颖的 LLM-as-a-Judge 方法对对话质量进行自动评估,以支持我们的任务评估(§7 (https://arxiv.org/html/2606.13995#S7))。
- 我们提出了一种基于对话理论的新型编程智能体,在该任务上取得了最佳平均性能(§4 (https://arxiv.org/html/2606.13995#S4))。

## 2 相关工作

语言智能体的兴起 Suet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib39))——其策略由 LLM 推理介导的 AI 智能体——使得文本到代码的研究从编写简单函数 Chenet al. (2021 (https://arxiv.org/html/2606.13995#bib.bib51)) 转向了真实的软件工程(SWE)Jimenezet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib14)); Aleithanet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib32))。尽管通过语言模型 Rastogiet al. (2025 (https://arxiv.org/html/2606.13995#bib.bib36)); Qwen (2025 (https://arxiv.org/html/2606.13995#bib.bib38))、智能体设计 Wanget al. (2024 (https://arxiv.org/html/2606.13995#bib.bib30)); Yanget al. (2024 (https://arxiv.org/html/2606.13995#bib.bib23)) 以及微调技术 Panet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib19)); Weiet al. (2025 (https://arxiv.org/html/2606.13995#bib.bib16)); Yanget al. (2025 (https://arxiv.org/html/2606.13995#bib.bib37)) 等方面的进步,SWE 任务取得了实质性进展,但其中大部分工作只考虑了完全自动化的 SWE 设置,这给用户带来了提供完整且正确规范的重担,并忽略了人机交互的潜力。研究社区已开始主张对这种人类-智能体交互进行建模的必要性 Wanget al. (2026 (https://arxiv.org/html/2606.13995#bib.bib53)),但评估这种交互设置仍然是一个悬而未决的挑战。

最近有两项工作评估了 SWE 设置中的人机交互。Vijayvargiyaet al. (2026 (https://arxiv.org/html/2606.13995#bib.bib3)) 评估了编程智能体通过澄清问题从不完整的问题规范中解决歧义的能力。虽然具有交互性,但这种设置仍然假定输入是一个规范文档,交互只用于解决歧义。我们的评估的不同之处在于,我们的任务以用户的话语开始,并完全通过对话展开。我们在评估中将我们提出的智能体与他们的进行了比较。Zhouet al. (2026 (https://arxiv.org/html/2606.13995#bib.bib43)) 设计了一个评估,用于编程智能体在多次会话的编码交互中遵守跨会话用户偏好的能力。我们的评估的不同之处在于,我们的设置是对话驱动的,针对单个 SWE 任务,并且我们的用户模拟器不与代码交互,也不被给予可能包含任务解决方案的知识,例如问题评论 Aleithanet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib32))。

在编程智能体出现之前,其他工作考虑了**函数级**文本到代码问题的对话。一些工作利用文本到代码问题的黄金解决方案来为该问题创建对话,方法是制作澄清问答对 Liet al. (2023 (https://arxiv.org/html/2606.13995#bib.bib13))、模拟用户反馈 Panet al. (2025 (https://arxiv.org/html/2606.13995#bib.bib22)); Wanget al. (2023 (https://arxiv.org/html/2606.13995#bib.bib52)),或解决模型预测中的不确定性 Chaurasia and Mooney (2017 (https://arxiv.org/html/2606.13995#bib.bib28))。Rakotonirinaet al. (2025 (https://arxiv.org/html/2606.13995#bib.bib33)) 评估了 LLM 在跨多个**函数级**编码任务的多次会话编码交互中的表现。我们的工作则针对**仓库级** SWE 任务的对话,重要的是,我们从未让模拟用户依赖于黄金知识(如解决方案或测试用例)。

## 3 Dialogue-SWEBench

在第 3.1 节 (https://arxiv.org/html/2606.13995#S3.SS1) 中,我们回顾了编程智能体和完全自主的评估设置,如 SWE-Bench 所介绍的那样 Jimenezet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib14))。然后,我们描述如何将完全自主的评估重新制定为一个**需要对话**的交互式设置(第 3.2 节 (https://arxiv.org/html/2606.13995#S3.SS2)),并提供更多关于我们设计的用户模拟器的细节,以支持我们的对话驱动评估(第 3.3 节 (https://arxiv.org/html/2606.13995#S3.SS3))以及我们的评估指标(第 3.4 节 (https://arxiv.org/html/2606.13995#S3.SS4))。

### 3.1 预备知识

在完全自主的 SWE 评估中,系统从问题描述和初始仓库生成一个仓库级的代码更改(例如 git patch)。然后使用单元测试对该 patch 进行评估。完成此任务的主要方法是使用编程智能体或“SWE 智能体” Yanget al. (2024 (https://arxiv.org/html/2606.13995#bib.bib23)),这是一个由 LLM 驱动的智能体,可直接在编程环境中运行,以迭代地探索、编辑和执行代码。给定初始仓库 $Repo$ 和问题规范 $I_{text}$,一个编程智能体在一个观察-动作循环中被初始化,从包含问题规范 $I_{text}$ 的第一个观察 $o_1$ 开始。在每个时间步 $t$,智能体执行一个动作 $a_t \in \mathcal{A}$,例如编辑文件或运行测试,并收到相应的观察 $o_{t+1} \in \mathcal{O}$,例如执行结果,其中 $\mathcal{O}$ 和 $\mathcal{A}$ 分别代表智能体的观察空间和动作空间。一个特殊的动作“finish”终止循环,并从已编辑的文件中准备一个 patch $p$ 用于评估。每个问题通过将生成的 patch $p$ 应用到基础仓库 $Repo$,然后执行与该任务相关的测试来进行评估。如果在应用 patch 后所有测试都通过,则认为任务已解决,基准测试的评估指标是已解决任务的百分比。

### 3.2 对话问题设计

我们提出了一个基准测试,其中编程智能体必须通过与用户的目标导向对话来解决真实世界的软件工程问题。我们将 SWE-Bench Verified Chowdhuryet al. (2024 (https://arxiv.org/html/2606.13995#bib.bib31)) 重新制定为这个基准测试,具体如下(概述见图 2 (https://arxiv.org/html/2606.13995#S1.F2))。首先,我们将第一个观察 $o_1$ 中的完整问题文本 $I_{text}$ 替换为初始用户查询 $u_1$。接下来,我们让智能体处于一个环境中,其动作空间支持与模拟用户的编程和对话。具体来说,我们将每个智能体的动作空间 $\mathcal{A}$ 增加一个额外的动作“message_user”,该动作接受一个参数,即要与用户通信的消息,并产生一个包含用户响应的观察 $o_{t+1}$。我们使用一个 LLM 来模拟每个用户,其知识基于完整的问题文本 $I_{text}$,这在第 3.3 节 (https://arxiv.org/html/2606.13995#S3.SS3) 中进一步描述。和之前一样,智能体的观察-动作循环以“finish”动作终止,产生一个 patch $p$,可以通过执行测试来评估该 patch 是否解决了用户的问题。

### 3.3 模拟用户

为了减少基准测试中不同运行之间的方差,我们为每个问题设计了一个固定的初始用户查询 $u_1$。随后,我们设计了一个模拟器,用于生成对智能体后续查询的忠实且现实的用户回复。为了在基准测试上实现稳定的未来评估,用户模拟器是开源的,并作为基准测试的一部分发布。

**制作初始查询** 我们使用以下半自动化方法,设计每个初始查询 $u_1$,使其忠实地反映问题规范中给出的意图,但同时省略解决问题所需的关键细节。首先,我们用 GitHub issue 标题和简短的指令提示一个 LLM,要求将其改写成初始对话查询。随后,我们使用一个修订提示来移除查询中任何可能被智能体利用以避免进行对话的关键细节。最后,我们手动审查每个查询,以验证其忠实于问题规范中描述的意图。附录 A (https://arxiv.org/html/2606.13995#A1) 提供了关于我们的提示方法和手动审查的更多详细信息。尽管我们的手动审查确保了评估集的高质量,但我们发现只有 13% 的生成查询需要任何修改,这表明我们的流程在训练或开发环境中可以完全自动化。

**通过自我修正模拟后续回复** 对于任何时间步 $t \geq 1$,我们提示一个开放权重的 LLM $U_\phi$ 来模拟用户对智能体消息 $u_t$ 的回复。333我们使用了 LLaMa 3.3 70B 的量化版本 Grattafiori et al. (2024 (https://arxiv.org/html/2606.13995#bib.bib59)),可在 https://huggingface.co/shuyuej/Llama-3.3-70B-Instruct-GPTQ 获取具体来说,我们为用户模拟器定义了一个系统提示,该提示基于该问题的用户知识(在完整问题文本 $I_{text}$ 中给出),以及一个用于引导行为的角色设定,详见下文。

相似文章