Skip to content
AI-Daily-Builder

2026-09-09 — views

ExecCritic:分离测试与修复代理以提升编码性能

为什么值得读 将测试生成与代码修复分离,可防止错误一致性和虚假自信,显著提升代理的可靠性。

ExecCritic利用强化学习分离测试和修复代理,显著提升了在SWE-bench Verified上的成功率。通过解耦测试生成与代码修复,避免了错误一致性和虚假自信,从而提高了代理的可靠性。

联合轨迹的问题

执行反馈是引导编码代理修复仓库的强大工具。然而,只有当测试准确捕捉问题所要求的行为时,这种引导才有效。当代理生成的测试编码了不完整或不正确的行为目标时,会出现重大挑战。当同一路径同时编写补丁和测试时,它们的错误可能会达成一致,产生危险的虚假自信感。这种一致性掩盖了潜在问题,导致代理误以为已解决问题,而实际上并未解决。

ExecCritic 框架

为了解决这一问题,研究人员引入了 ExecCritic,这是一个结合测试-验证-修订框架与角色特定强化学习策略的框架。核心创新在于将测试构建与源代码修复分离。该架构采用两个不同的代理,均以 Qwen-3.5-35B-A3B 为骨干,并分别进行训练。

第一个角色是测试代理,它独立生成仓库原生测试。这些测试随后通过一个“失败即关闭”的夹具进行资格筛选并冻结。第二个角色是修复代理,它根据冻结测试的执行反馈修订源代码。关键在于,修复代理不会更改测试,从而确保在修复过程中评估标准保持稳定。

训练与结果

该框架利用两个不同的训练阶段。在“学习测试”阶段,测试代理学习生成行为上有效的测试,这些测试能有效区分正确和错误的补丁。在“测试改进”阶段,修复代理学习直接解决任务和基于反馈的修订。

在 SWE-bench Verified 上的评估突显了测试质量的重要性。当保持基础修复代理固定时,来自基础测试代理的测试实际上将解决率从无测试基准的 61.2% 降低到了 57.3%。相比之下,由 GPT-5.6-sol 生成的测试将解决率提高到了 65.3%。这表明低质量的测试会主动损害性能。

角色特定的后训练带来了显著改进。经过后训练的 Qwen 测试代理将其从基础到黄金的成功率从 22.2% 提高到了 62.2%。当组合两个经过后训练的 Qwen 代理时,系统达到了 72.6% 的成功率。这代表了相比原始无测试基准提高了 11.4 个百分点,且评估时未使用更强的模型或 Oracle 反馈。ExecCritic 的代码已在 GitHub 上公开。

实务笔记

开发人员应考虑在代理工作流中将测试生成与代码修复解耦,以防止错误一致。投资于高质量、行为上有效的测试至关重要,因为糟糕的测试会主动降低代理性能,而不是提高性能。


来源

标签

请喝咖啡