SWE-SEARCH: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement

SWE-SEARCH: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement

基本信息

博客贡献人

JokerLin

作者

Antonis Antoniades, Albert Örwall, Kexun Zhang, Yuxi Xie, Anirudh Goyal, William Wang

标签

Software Engineering, Monte Carlo Tree Search, Iterative Refinement, Multi-Agent System

摘要

​ 软件工程师在复杂多变的环境中工作,需要不断适应需求变化、从经验中迭代学习,并基于新见解重新考虑方法。然而当前基于大型语言模型(LLM)的软件代理通常遵循线性、顺序的流程,无法回溯或探索替代解决方案,限制了其在初始方法无效时重新思考策略的能力。为了解决这些挑战,本文提出了SWE-Search,这是一种多代理框架,将蒙特卡洛树搜索(MCTS)与自我改进机制相结合,以提升软件代理在仓库级软件任务上的性能。SWE-Search通过扩展传统的MCTS,引入了混合值函数,利用LLM进行数值估计和定性评估。这使得代理能够基于自我反馈循环迭代改进策略,类似于人类工程师根据反馈和调试不断改进工作的方式。在SWE-bench基准测试中,本文的方法相较于标准开源代理平均提升了23%的性能。本文的分析揭示了通过增加推理时计算资源(如更深入的搜索)来提升性能的潜力,为无需更大模型或额外训练数据即可改进软件代理提供了一条路径。这突显了在复杂软件工程环境中基于自我评估的搜索技术的潜力。

引言

​ 软件工程是一个复杂且迭代的过程,涉及探索、问题解决和在不确定性下的决策。诸如调试、功能开发和代码重构等任务需要持续评估不同方法、频繁回溯以及纳入新信息。尽管机器学习在自动化部分工作流程方面取得了进展,但复制人类工程师的适应性和战略性行为仍然是一个重大挑战。当前基于大型语言模型(LLM)的软件代理虽然强大,但在需要适应性策略和随时间灵活重新评估的复杂长期任务上常常力不从心。这些代理可能会陷入重复模式,限制了其在更复杂的软件工程问题上的有效性。

​ 为了解决这些挑战,本文引入了SWE-Search,这是一种多代理系统,旨在复制人类工程师的适应性、迭代学习和协作决策能力。SWE-Search旨在解决软件工程中的三个关键需求:

  • 灵活探索与适应:工程问题通常需要根据不断发展的信息探索多种方法和调整策略。SWE-Search的SWE-Agent在灵活的状态空间中运行,允许其在规划、搜索和编辑等动作之间流畅转换。这种设计反映了工程师如何动态回溯和调整方法,确保代理在面临新挑战或信息时能够修订其路径。
  • 基于反馈的迭代学习:有效的工程依赖于持续的测试和改进。为此,SWE-Search集成了蒙特卡洛树搜索(MCTS)规划模块和价值代理。MCTS模块平衡探索和利用,引导代理穿越复杂的解决方案空间。价值代理通过提供效用估计和定性反馈增强了这一过程,使代理能够基于过去的经验迭代改进决策,类似于工程师通过反馈和调试改进工作的方式。
  • 协作决策:复杂问题通常从多样化的视角中受益。在SWE-Search中,一旦生成了一系列潜在解决方案,判别器代理就会促进多代理辩论。每个代理通过提出论点来支持不同的解决方案,由一个法官代理进行批判性评估。这一过程反映了现实世界中的工程协作,团队通过讨论来改进和选择最健壮的解决方案。

​ 本文探讨了性能如何随着搜索深度的增加而扩展,并确定了增强软件代理自我评估的关键因素。本文的工作展示了MCTS和迭代学习在动态、复杂领域(如软件工程)中改进代理推理和规划的潜力,引入了一种新的自主软件开发范式。

相关工作

搜索方法

​ 各种搜索方法已被应用于大型语言模型 ,这些方法的一个关键特征是它们能够回溯。与贪婪过程不同,搜索算法在每个步骤中探索多个分支,可能会逃脱导致死胡同的路径。这些方法在探索和记忆可能的选择的策略以及在它们之间切换的启发式方法上有所不同。

  • 广度优先搜索保留了所有可能的搜索路径,从而产生了大量的内存和计算成本。
  • 深度优先搜索以更贪婪的方式优先考虑最有希望的路径。
  • A∗ 算法结合了广度优先和贪婪搜索的各个方面,以使用预定的评估函数找到最佳解决方案。

​ 当应用于 LLM 时,这些方法展示了文本生成中多样性和质量之间的权衡。在这项工作中,本文采用了蒙特卡洛树搜索 (MCTS) ,这是一种高级搜索算法,无需对每个状态进行专门的评估启发式即可进行统计树搜索。

软件代理

​ 软件代理旨在在大型代码库中执行自主作。给定存储库级任务,这些代理通常会在实施必要的更改之前找到相关文件和代码段。本文专注于 SWE-bench 任务,它涉及解决现实世界的 GitHub 问题。在披露了 SWE-bench 技术细节的代理中,引入了带有 SWE-agent 的代理-计算机接口的概念。

​ 无代理方法使用简单的两步(定位和修复)过程展示了有竞争力的性能。AutoCodeRover 结合了先进的代码工具,如抽象语法树和基于频谱的故障定位。阿里巴巴 Lingma Agent 引入了一种基于搜索的存储库探索方法,然后是结构化编辑阶段。

方法

​ SWE-Search 是一个多智能体系统,旨在通过集成动态规划、价值估计和深思熟虑的决策来处理复杂的软件工程任务。这种方法背后的核心动机是模拟人类软件工程师复杂的迭代工作流程,其中探索、规划和协作对于解决复杂的问题至关重要。通过利用 Monte Carlo Tree Search (MCTS) 进行规划的优势,利用价值代理进行效用估算和反馈,利用判别器代理通过辩论做出最终决策,SWESearch 提供了一个全面的自适应框架,能够导航和解决现实世界的软件工程挑战。

​ SWE-Search 由四个协同工作的主要组件组成:

  • SWE-Search 框架和行动代理:SWE-Search基于 moatless-tools 框架构建,在具有灵活状态空间和类似 git 的提交树结构的动态代码环境中运行。这种设计有助于有效地回溯到以前的状态,使动作代理能够探索不同的解决方案轨迹。适应性强的状态空间增强了系统有效利用 MCTS 模块的能力。
  • 价值(函数)代理:为了近似每个观察的效用,采用了基于 LLM 的值函数,该函数除了输出值外,还会生成自然语言的解释。可以利用此说明来改进父节点的后续作,从而实现搜索过程的迭代自我改进。
  • 搜索算法:SWE-Search 探索策略的核心基于蒙特卡洛树搜索 (MCTS),它使用类似于 AlphaZero 的基于启发式的选择过程,专为软件工程任务量身定制。这种改进的 MCTS 算法有效地平衡了探索和开发,帮助代理探索各种解决方案并快速收敛到最有前途的策略。
  • 判别器代理:在 SWE-Search 的最后阶段,鉴别器代理评估搜索过程生成的解决方案。受多主体辩论框架的启发,该代理参与了一场结构化的辩论,其中多个代理支持或反对提出的解决方案。辩论过程不仅揭示了不同的观点,而且还导致了更严格合理的最终决定。

在这里插入图片描述

问题表述

​ SWE代理的任务可以形式化为一个元组 M = ( S , C , A , V , P , p 0 , ρ ) M=(S,C,A,V,P,p_0,ρ) M=(S,C,A,V,P,p0,ρ)。其中:

  • S S S 表示状态空间,包含所有可能的状态,例如代理正在处理的文件的当前上下文以及代码库的整体状态。
  • C C C 表示上下文空间,包括关于仓库的元数据和初始问题描述。
  • V V V 表示价值函数,为每个状态-动作对 O ( a , t ) O(a,t) O(a,t) 分配一个效用分数,指导代理的决策。
  • P P P 表示环境的动态,由上下文相关的转移函数定义: P : S × A × C → Δ ( S ) P:S×A×C→Δ(S) P:S×A×CΔ(S),该函数模拟每次动作后仓库状态的演变。
  • $p_0:C→Δ(S) $ 表示初始状态分布,定义了初始状态如何依赖于给定的上下文。
  • ρ ∈ Δ ( C ) ρ∈Δ(C) ρΔ(C) 定义了上下文的分布。

​ 给定一个初始上下文 $c∼ρ $ 和一个初始状态 s 0 ∼ p 0 ( ⋅ ∣ c ) s_0∼p_0(⋅∣c) s0p0(c),SWE代理执行其策略 π : S × C → Δ ( A ) π:S×C→Δ(A) π:S×CΔ(A),该策略根据当前状态和上下文选择动作。在每个时间步 t t t,代理执行一个类型为 $ τ $ 的动作 a t , τ ∼ π ( s t , τ , c ) a_{t,τ}∼π(s_{t,τ},c) at,τπ(st,τ,c),并接收到相应的奖励 R ( s t , τ , a t , τ , c ) R(s_{t,τ},a_{t,τ},c) R(st,τ,at,τ,c)。环境随后转移到一个新状态 s t + 1 ∼ P ( ⋅ ∣ s t , τ , a t , τ , c ) s_{t+1}∼P(⋅∣s_{t,τ},a_{t,τ},c) st+1P(st,τ,at,τ,c),代理继续观察这个更新后的状态。随着时间的推移,这个过程生成了一个轨迹 τ : = { s t , τ , a t , τ , r t } t = 0 T τ:=\{s_{t,τ},a_{t,τ},r_t\}^T_{t=0} τ:={st,τ,at,τ,rt}t=0T,作为代理与环境交互的结果。

​ 代理的目标是最大化轨迹上的累积奖励,这由价值函数 v ( s t , τ , a t , τ , s i i = 0 t − 1 , a i i = 0 t − 1 ) v(s_{t,τ},a_{t,τ},{s_i}_{i=0}^{t−1},{a_i}_{i=0}^{t−1}) v(st,τ,at,τ,sii=0t1,aii=0t1) 捕获。这个价值函数不仅依赖于当前状态和动作,还依赖于之前状态和动作的历史,这偏离了马尔可夫过程的假设。形式上,代理试图最大化预期累积奖励,定义为: m a x π V T ( ρ ) = m a x π E τ [ ∑ t = 0 T R ( s t , τ , a t , τ , c ) ∣ c ∼ ρ ; π ] max_πVT(ρ)=max_πEτ[∑^T_{t=0}R(s_{t,τ},a_{t,τ},c)∣c∼ρ;π] maxπVT(ρ)=maxπEτ[t=0TR(st,τ,at,τ,c)cρ;π]

​ 这个优化过程捕捉了代理的(上下文内)过程,因为它调整其策略 π π π 以在多个轨迹上实现最高的预期回报,同时考虑当前和历史信息。

SWE-SEARCH 框架和动作代理

​ SWE-Search 动作代理建立在moatless-tools框架基础上之上。其作空间 A A A 组织为两层层次结构,包括动作类型及其相应的特定动作。通常这可以表示为 A = ( t , τ , a ) ∣ t ∈ T , a ∈ A t A=(t,τ,a)|t∈T,a∈A_t A=(t,τ,a)tT,aAt,其中 T T T 表示动作类型的集合(例如,搜索、计划、编辑),而 A t A_t At 是对应于每种类型的可能动作集 τ τ τ 。这些动作的范围从工具调用和代码修改到结构化文本的生成。执行动作时,代理会转换为相应作类型的状态 s t + 1 , τ s_{t+1,τ} st+1,τ。为了提高基本代理在搜索驱动任务中的有效性,本文引入了以下修改:

  • 扩展了 Plan 状态,允许它灵活地过渡到任何其他状态,而不是仅限于过渡到 Edit。这种变化的动机是在智能体中实现更动态和自适应的问题解决行为。在软件工程的上下文中,状态转换可能过于严格。例如,在代码修改任务期间,智能体可能会在过程中意识到在进行编辑之前需要进一步规划、额外的搜索或不同类型的分析。将转换仅限于编辑会人为地限制智能体,可能导致其执行次优作或导致其陷入非生产性循环。通过允许转换到任何状态,本文使智能体能够适应出现的新信息(图 2),探索更广泛的轨迹。这种增强的灵活性反映了真实软件工程工作流程的迭代性和非线性性质,工程师在进行编辑之前经常重新审视规划、测试和研究阶段。
  • 其次,代理有权自行决定执行代码库中的任何测试,以及创建和实施新测试。这些测试的结果被纳入价值函数和代理的后续决策过程中。

在这里插入图片描述

价值 (函数) 代理

价值代理的作用不仅限于简单地估计给定状态动作对 V ( s t , a t ) V(s_t,a_t) V(st,at) 的预期效用。除了计算值 v n v_n vn 之外,价值代理还会生成一个书面解释,表示为 ε ε ε。这个解释有双重目的:

  • 为决策过程提供了透明度,并作为动作代理的反馈,当从 O n O_n On 的父节点重新扩展时,动作代理可以利用这个解释。
  • 使系统能够迭代地改进其决策过程,反映了人类软件工程师如何根据新信息不断重新评估他们的方法,以改进他们的问题解决策略。

​ 价值函数的输入包括所有状态-动作对,包括被评估的当前状态,以及有关如何评估状态的具体说明。这使得价值代理能够在轨迹中将决策置于上下文中,考虑导致现在的行动和状态的顺序。价值函数的最终输出可以正式化为:
( v t , ε t ) = V ( s t , τ , a t , τ , { s i } i = 0... t − 1 , { a i } i = 0... t − 1 ) (1) (v_t,ε_t)=V(s_{t,\tau},a_{t,\tau},\{s_i\}_{i=0...t-1},\{a_i\}_{i=0...t-1}) \tag{1} (vt,εt)=V(st,τ,at,τ,{si}i=0...t1,{ai}i=0...t1)(1)
​ 这里 v t v_t vt 表示当前状态-动作对的预期效用,而 ε t ε_t εt 是随附的解释。

​ 在实践中,价值代理的任务是分析导致当前状态-动作对的整个轨迹,不仅提供所需的效用估计 v t v_t vt,还提供详细的解释 ε t ε_t εt。这种解释对于代理的整体表现至关重要,因为它提供了对效用估计背后的推理的洞察,这反过来又为行动代理的未来决策提供了信息。可以观察到,驱动价值代理有效性的关键因素之一在于这些解释的清晰度和特异性。一个清晰的解释可以阐明不同状态类型(例如,搜索、编辑、计划)的优势和局限性,帮助行动代理更好地理解哪些类型的状态更有希望或更有可能追求。通过提供有关不同行动的潜在效用的详细反馈,并将它们置于更广泛的轨迹中,价值代理使行动代理能够做出更明智和更具战略性的决策。这种定量和定性反馈的整合导致了整个任务中性能的提高和更具适应性的行为(图 4a)。

在这里插入图片描述

搜索算法

​ 本文的搜索树的结构是代表状态 S t , τ S_t,τ St,τ 的节点和代表动作 A t , τ A_{t,τ} At,τ 的边。所采用的搜索算法是经过修改的蒙特卡洛树搜索 ,专门适用于 SWE-Agent 的任务。与之前在选择过程中使用语言模型的 Web 代理方法不同,本文故意选择不依赖语言模型进行节点选择,相反采用了更直接的基于启发式的选择函数,这一决定是由对可解释性、效率的需求以及对基于启发式的探索足以在复杂的软件工程环境中有效指导代理的任务的关注所驱动的。

​ 算法的核心是修改后的树置信上限 (UCT) 选择标准 ,它决定了下一个要扩展的节点。该标准平衡了对已知高回报行动的利用与对访问较少的状态的探索。本文引入了额外的术语来鼓励在搜索过程的早期进行战略探索,并在需要收敛于最佳解决方案的后期阶段惩罚过度探索。修改后的 UCT 函数表示为:
U C T ( s , a ) = e x p l o i t a t i o n + e x p l o r a t i o n + e a r l y _ d e p t h _ b o n u s − l a t e _ d e p t h _ p e n a l t y (2) UCT(s,a) = exploitation+exploration+early\_depth\_bonus-late\_depth\_penalty \tag{2} UCT(s,a)=exploitation+exploration+early_depth_bonuslate_depth_penalty(2)
​ 这可以更正式地表示为:
U C T ( s , a ) = V ( s , a ) + C l n N ( s ) N ( s , a ) + α e − β ( d − 1 ) − γ d (3) UCT(s,a)=V(s,a)+C\sqrt{\frac{lnN(s)}{N(s,a)}}+\alpha e^{-\beta(d-1)}-\gamma \sqrt{d} \tag{3} UCT(s,a)=V(s,a)+CN(s,a)lnN(s) +αeβ(d1)γd (3)
V ( s , a ) V(s,a) V(s,a) 是状态-动作对的值估计值, N ( s , a ) N(s,a) N(s,a) 是状态-动作对 ( s , a ) (s,a) (s,a) 被访问的次数, N ( s ) N(s) N(s) 是状态 s s s 的访问次数, d d d 是搜索树中节点的深度, C C C α α α β β β γ γ γ 是控制探索、利用和深度相关奖励和惩罚之间平衡的常数。

​ 这个公式的灵感来自软件工程师探索任务潜在解决方案的方式。在实践中,工程师的搜索过程可以分为以下关键阶段,本文的算法反映了这些阶段:

  • 早期探索:最初工程师探索各种潜在方法,以充分理解问题并确定有前途的策略。在本文的算法中,早期深度奖励(由术语 α e − β ( d − 1 ) αe^{-β(d-1)} αeβ(d1) 表示)鼓励了这一点,它奖励浅层的探索,模拟广泛探索的早期阶段。
  • 收敛和利用:随着工程师获得更多信息并缩小选择范围,重点转移到利用最有效的解决方案路径上。这种转变由标准的 UCT 开发项 V ( s , a ) V(s,a) V(s,a) 处理,并由后期深度惩罚 ( − γ d ) (−γ\sqrt{d}) (γd ) 进一步加强,当代理深入搜索树时,它阻止了过度探索。
  • 快速放弃糟糕策略:当新信息表明某种特定方法不可行时,软件工程师也擅长放弃糟糕的策略。本文通过实施一个简单的启发式规则来捕捉这种行为,该规则放弃与连续低奖励相关的节点,确保代理不会在非生产性轨迹上浪费资源。

​ 在每个步骤中,选择具有最高 UCT 值的节点进行扩展,形式化为:
s ∗ = arg ⁡ max ⁡ ( s , a ) U C T ( s , a ) (4) s^* = \arg\max_{(s,a)} UCT(s, a) \tag{4} s=arg(s,a)maxUCT(s,a)(4)
​ 这种方法有效地模仿了软件工程师的决策过程,在探索潜在策略与专注于收敛到最佳解决方案之间取得平衡,同时保持足够的灵活性,以便在必要时回溯。通过结合启发式反馈和基于深度的调整,该算法避免了陷入非生产性路径,并增强了代理以最小的计算开销识别高回报策略的能力。

判别器代理

​ SWE-Search 的最后阶段涉及判别器代理,其作用是评估搜索过程生成的候选解决方案,并选择最有可能解决手头问题的解决方案。该模块接受搜索产生的最多五个最终解决方案,并参与多代理辩论以确定最有前途的选择。从最近关于有说服力的多代理辩论的工作中汲取灵感,判别器利用多个代理的集体推理来确保更稳健的最终选择。

​ 判别器阶段通过结构化辩论实现候选解决方案之间的直接比较,从而扩展了 MCTS 框架。虽然本文的价值函数在解决方案评估中实现了 73% 的准确率,但实证结果表明,判别器将最终选择准确率提高到 84%(图 8a)。对于多个解决方案具有相似的值估计值但在实现细节上不同的情况,这种改进尤其明显。结构化比较有助于识别价值函数可能无法单独捕获的细微权衡。

在这里插入图片描述

实验

基准测试 在本文实验中使用 SWE-bench Lite,这是官方 SWE-bench 的精选子集,包含 300 个实例。该数据集经过专门设计,是独立的,主要侧重于评估功能性错误修复,提供受控环境来评估我们系统的性能。

评估指标 本文使用两个指标:解决率 (Pass@1) 和 Pass@5。解决率是成功解决的问题的百分比,用于衡量整体有效性。Pass@5是在 5 次尝试中找到正确解决方案的问题的百分比。这使本文能够评估搜索的效率,以便在有限的迭代次数内识别成功的 bug 修复。

基线模型 软件代理利用不同的工具、架构和模型,导致它们在 SWE-bench Lite 数据集子集上的性能存在差异。为了进行比较,本文建立在moatless-tools框架 之上,这是一种研究环境中常用的高性能开源代理。为了隔离搜索方法的影响,本文将 moatless-tools v0.0.2 作为基线,称为 Moatless-Adapted。这使本文能够公平地比较 SWE-Search 与 Moatless-Adapt 在各种模型下的性能,包括两个闭源模型(GPT-4o、GPT-4o-mini)和三个开源模型(Qwen2.5-72B-Instruct、Llama-3.1-70B-Instruct和 DeepSeek-V2.5)。本文还参考了 SWE-bench Lite 上的官方 moatless-tools GPT-4o 结果,以确保公平和一致的比较。

实现细节 为了保持一致性,本文在所有模型中使用相同的提示。在 SWESearch 中,将每个节点限制为最多 3 个扩展,并将总搜索迭代次数限制为 100。

实验结果
SWE-SEARCH 超越了所有相应的基线代理,并支持更小的开源模型接近 GPT-4O

​ 平均而言SWE-Search 在所有五个模型中的性能都优于基线代理,实现了 23% 的相对改进(表 1)。值得注意的是,带有 Qwen-2.5-72B-Instruct 的 SWE-Search 超过了使用原始 Moatless-v0.0.2 框架的 GPT-4o 的性能,并且与无 Moatless-Adapted 代理相比,其性能非常接近,只有轻微的差异 (∆ = -1%)。在使用所提出的方法时,所有五个模型都表现出显着的改进,不同模型的增益一致。

在这里插入图片描述

搜索使代理能够更好地利用更大的灵活性

​ 为了防止目标发散,大多数代理,包括moatless-tools,都依赖于严格的转换规则,其中状态转换遵循预定的顺序(例如,搜索→识别、计划→编辑)。在 Moatless-Adaptive 中,本文引入了一种更灵活的转换逻辑,允许 Plan 状态转换为任何其他状态类型。这种增加的灵活性既有优点也有缺点。从积极的方面来说,它使代理能够在没有外部反馈的情况下自主纠正其轨迹,特别是当必要的调整仅涵盖任务的有限部分时。然而,这种增加的灵活性也带来了代理陷入无限循环的风险。如果没有高级控制机制来检测和缓解这些情况,代理可能无法从此类循环中恢复。这种权衡在 Moatless-v0.0.2 和 Moatless-Adaptive 之间的适度性能差异中显而易见,性能仅略微提高了 1.4%(表 1)。

事后反馈对代理表现的影响

​ 利用 LLM 进行价值估计的一个关键优势是它们能够以自然语言提供定量价值估计和定性评估。这些定性见解可以通过提供有关任务的潜在错误或被忽视方面的详细反馈,显着增强代理的作生成和搜索过程。在实践中,反馈对于在代理所采取的行动中引发多样性也至关重要,因为没有反馈,代理在从父节点重新扩展时通常会采取非常相似的动作。

​ 如图 2 所示,这种机制在提高代理的性能方面起着关键作用。在初始扩展期间,代理过早地得出结论,认为任务已完成。然而,价值函数正确地识别了测试覆盖率中的差距,特别是在解决潜在的极端情况方面,并分配了较低的奖励。此反馈促使代理重新扩展父状态,导致引入新测试,但随后失败。然后,代理执行一系列编辑,最终正确地解决了任务。根据经验,本文观察到 Moatless-Adapt 未解决但 SWE-Search 成功解决的实例通常归因于这种搜索和反馈循环,其中迭代反馈驱使代理寻求正确的解决方案。

综合状态信息对价值函数性能的重要性

​ SWE-Search 的有效性取决于价值函数准确区分理想和不良状态的能力,以及提供推动改进的可作反馈的能力。然而本文的实验表明,价值函数有时无法识别搜索树中的关键决策点。它经常误解某些行动的目的,导致通过分配低奖励来低估有效策略。如图 4(a) 所示,在引入特定于状态的值提示之前,即使动作代理正确识别了对额外上下文的需求,例如查找相关文件,代理也始终分配低奖励。尽管代理后来成功识别了文件,但这个问题仍然存在。通过跨核心状态集群(搜索、规划、编辑)实施特定于状态的提示,价值函数在解释作背后的意图和评估每个状态下的结果方面变得更加熟练。

使用推理时间计算扩展 SWE 代理大型语言模型的成功传统上归因于训练数据和模型大小的扩展,即训练时间计算。最近研究人员开始探索不同的方法如何随推理时间进行扩展。在这里本文通过增加推理时间计算来研究软件工程代理的性能。如图 4(b) 所示,增加搜索迭代会导致已解决问题的数量持续增加。为了确保 SWE-bench Lite 数据集中 300 个实例的实验可行性,本文应用了保守参数(最大迭代次数 = 100,每个节点的最大扩展次数 = 3)。像 SWE-Search 这样的方法可以为特定挑战分配更多的资源,例如解决关键软件漏洞,为复杂任务提供可扩展的解决方案。

价值函数和判别器向正确解决方案的收敛 搜索过程可以产生多个建议的解决方案。理想情况下,解决问题的建议解决方案的平均轨迹值将始终是最高的,这将产生代理的理想性能(图 3)。在实践中,价值函数在五个模型中平均有 73% 的时间成功地收敛到正确的解决方案。判别器模块的性能甚至更好,将选择的正确解决方案的比例提高到 84%。在典型的大型动作空间中,蒙特卡洛树搜索 (MCTS) 运行了数千次迭代。考虑到计算限制,价值函数的成功率仍然令人印象深刻。然而SWE-Search 可以进一步受益于增强的方法,以更一致地识别正确的解决方案,从而充分发挥其潜力。

在这里插入图片描述

不同的模型可以解决截然不同的问题子集 在比较五个模型中已解决的实例时,本文观察到每个模型成功解决的问题子集存在显著差异。如图 5 所示,每个模型都设法解析了至少一个唯一实例。值得注意的是,其他模型解决了数量惊人的问题(33),但 GPT-4o 没有解决。这表明模型多样性至少在短期内可以在提高 SWE 代理的性能方面发挥重要作用。

在这里插入图片描述

总结

局限
  • SWE-Search框架在提高性能的同时,也带来了显著的计算成本增加,该方法在资源受限的环境中可能难以广泛应用
  • 不同模型在解决特定问题时表现出不同的能力,且没有一个模型能够在所有问题上占据主导地位,模型的多样性和互补性在短期内仍然重要,长期来看如何整合这些模型的能力仍然是一个挑战。
启发
  • 通过结合蒙特卡洛树搜索(MCTS)和迭代改进机制,该方法能够显著提高软件代理的性能,为未来的研究提供了一个新的方向。
  • 论文强调了迭代改进和反馈机制在软件工程中的重要性,模拟人类工程师的迭代工作流程,可以应用于其他需要复杂决策的任务中。
  • 多代理协作机制为解决复杂问题提供了一种新的思路。

相关知识链接

@misc{antoniades2025swesearchenhancingsoftwareagents,
      title={SWE-Search: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement}, 
      author={Antonis Antoniades and Albert Örwall and Kexun Zhang and Yuxi Xie and Anirudh Goyal and William Wang},
      year={2025},
      eprint={2410.20285},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2410.20285}, 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值