行业资讯
📅 2026/9/3 9:46:10
SWE-Bench 修好了 63.4% 的问题:AgentScope 多智能体代码修复实战复盘
SWE-Bench 修好了 63.4% 的问题AgentScope 多智能体代码修复实战复盘【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope我们用 AgentScope 框架跑了一遍 SWE-Bench最后有 63.4% 的问题被这套多智能体代码修复流水线修好了。这篇是完整复盘为什么要拆成多智能体、角色怎么分工、为什么要专门训练一个裁判模型以及我们踩到的那些高方差坑。单个 LLM 自己修的路子为什么不够稳回头看单个 LLM 做 SWE-Bench 最大的问题不是聪明程度而是稳不稳。SWE-Bench 是真实代码库里的真实缺陷修复基准它的问题描述往往是一句很干的 PR 说明背后藏着代码库自己的约定、没写明的断言条件和大量隐性上下文。同一个模型修同一个问题跑两次给出的补丁可能完全不同——这次对了下次就可能偏掉。更麻烦的是单一候选方案意味着要么对、要么错错了都没有可比较的对象。所以我们没走把某个模型的提示词调更好的路而是把问题拆成两件事先把一批有质量的候选方案可靠地生产出来再在候选里挑出最好的那个。整条链路一句话先批量生产候选再让裁判挑流水线本质上就是并行生成、串行挑选第一阶段由三个专业智能体协作产出 4 个完整修复候选第二阶段交给一个微调过的奖励模型——说白了就是给修复方案打分的裁判——逐个打分取分最高的。生成与编排相关的能力在仓库的 src/agentscope/agent/ 和 src/agentscope/pipeline/ 里实际跑起来比代码看起来简单。三个角色各管一段谁也不越位每个角色只背一个目标复现角色负责把 bug 固定住修复角色负责找到根因验证角色负责保证改完不更糟。 先让它写一个必挂的测试复现智能体的第一个任务不是修代码而是写出reproduction_test.py——一个在修复前必然失败的测试。复现不出来说明对问题的理解就有偏差流程直接停住不往下走。我们让它先一步步拆解 PR 描述、想清楚失败链路再动笔写测试。这个必须先挂的约束是全流水线的标尺它保证修复角色修的是真问题而不是自己脑补出来的问题。动刀之前先找根因修复智能体不允许直接上手改代码它得先分析根因错在哪一层、该动哪些位置、改动可能波及什么。我们让它结合 git diff 分析来评估改动范围想清楚了才生成补丁并立刻自验一次修复效果。这一步是三者里最关键的——根因判断的质量直接决定了这个候选方案的上限。改完必须过回归验证智能体只干一件事跑仓库里相关的单元测试确认这次修复没有把别的功能改坏。跑不过就把候选打回给修复角色迭代不允许它进入投票环节。我们实际跑的时候好几次出现自己的复现测试过了、回归测试挂了的情况这就是验证角色存在的直接价值。为什么专门训练一个裁判投票比让 LLM 直接挑更稳先说结论让 LLM 直接挑答案是两条路里更不稳的那条。我们最初的打算是让一个 LLM 从 4 个候选里直接选实际跑下来发现它每次的审美都不太一样选择经常漂移。于是换成现在的投票机制先把 4 个候选的轨迹格式统一处理成同一种结构再交给裁判打分最后取最高分。这个裁判是基于 Qwen2.5-Coder-Instruct 微调出来的奖励模型训练数据来自多个专业软件工程数据集。微调之后它不只是看 diff 写得好不好看而是围绕补丁有没有对准根因、改动有没有遗漏、在真实环境里能不能过这三方面给分。差别很直接LLM 当裁判相当于让一个没读过这份代码的人凭印象写评审每次标准都不一样微调后的裁判是从数据里学出了稳定的评判尺度分数漂移小得多。这就是奖励模型投票的核心价值——把一次主观挑选变成可复现的打分过程。踩坑记录三个反直觉的观察复盘时踩到的坑都围绕方差这个词你如果打算复现类似流水线先看完这一节再动手。第一并行方差高。同一个问题并行跑多次候选质量差异会很明显。这在当时是坏消息回头看反而是合理的——多个候选加裁判挑选正好能把这类波动平滑掉一大部分。第二小改动带来大波动。我们有一次只改了几行提示词、微调了轨迹的写法最终修复率就出现了肉眼可见的变化。所以任何调参别拿单次运行下结论要按一批任务对比着看。第三LLM 的能力边界比预期清楚。问题定位它做得普遍不错但有三类事容易翻车代码库自己的编码约定、保持代码对称改了这边对应的另一处也要同步改、以及复杂的断言条件。这几点也是目前改进的主要方向。写在最后63.4% 不是天花板高方差也没有被彻底解决这点要说在前面。下一步我们在推进三件事把角色拆得更细、给裁判模型补训练数据、让执行流程的控制更可控。如果你想自己动手搭一条类似的链路我的建议是从成本最低的一步开始先让智能体写必挂的测试再允许它碰代码。这一步花不了多少功夫却能筛掉相当一部分想象中的问题。【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考