ByteNoteByteNote
三步把大补丁拆成还能跑的提交
字

字节笔记本

2026年10月10日 · 约 4 分钟读完

三步把大补丁拆成还能跑的提交

API中转
¥120

编码智能体交出来的补丁,经常把好几件事情揉进一次提交。审的人难拆,后面的智能体也难顺着历史修。RucTangle 的硬条件是:拆完之后,每一步中间版本都还能让测试收集跑起来。论文号 2610.11593,2026-10-08 挂到 arXiv。本轮仓库页搜不到公开代码,数字以论文表为准,不是本轮复现。

一百三十一个补丁拆完还能不能跑

先能收集测试,再谈像不像人手提交

任务从起点版本上的大补丁出发,拆成有序提交,最后落到同一个终点。可运行的定义很窄:测试框架能收集到用例,功能测试不必先绿。作者认为以前的拆分只看文本像不像人手提交,维护收益没有被直接量过。

做法分四步。智能体先分组,必要时拆文件,交出有序计划和说明。结构检查要求覆盖完整、提交非空,再应用并收集测试。失败就按报错重排;还不行就最多改写两次;再不行就把相邻提交合并,直到收集成功。终点版本始终保住。回归时对失败测试做二分,把候选和日志交给修复智能体。上限二十个提交,一轮计划加最多两次改写,八十步。底座写成经路由调用的 DeepSeek-V4-Flash,套件是 mini-swe-agent 2.4.6,温度零。

对照是按文件切、按块切、Armchr、Atomizer,外加整包不拆。Atomizer 是作者自己的移植,向量模型写成开源英文基座,余弦大于 0.6 才合并。无序分组会按依赖排好。数据来自 Python 持续集成上的软件工程题。第一问用 131 个已经完成的补丁,覆盖 100 个仓,中位大约 7 个文件、21 到 24 个改动块。

历史交给修缺陷的智能体,命中率才有数字

RucTangle 重构成功率 100%,平均提交数 8.64,中位 8。全程可运行比例 100%。对照的全程可运行是:按文件 72.5%,按块 62.6%,Armchr 79.4%,Atomizer 73.8%。摘要把基线里至少有一版跑不起来的比例写成 20.6% 到 37.4%。中间测试失败均值,完整方法只有 0.017。耗时含失败尝试、不含二分,平均每个补丁 276.3 秒,输出大约 1.19 万 token。

把可运行历史交给修复智能体

评测的修复题用 453 个会回归的智能体补丁,108 个任务,90 个仓。套件模型是 Qwen3-Coder-Next 和 Nemotron-3.5-Lightning-30B-A3B,三次尝试,八十步,不许回退检出。成功定义是失败测试全过,且不在其余测试上添新红。拆失败就退回无历史。第一套的一次命中从无历史的 26.9 到 31.3,三次 40.4 到 43.5。第二套从 30.8 到 36.0,三次 41.1 到 47.7。相对无历史,一次命中平均相对抬 16.6%;Armchr 4.5%,Atomizer 6.1%。第二套这一格的绝对增量是 5.2 个百分点,和摘要一致。

另外 150 题、只跑一次的补充里,有的模型一次命中上升,有的几乎不动,还有一格从 50.0 落到 48.7。把提交数对半切,一次命中从 34.9 降到 31.8。论文只覆盖 Python 持续集成。方法是历史加二分的整包,没有单独拆开消融。额外模型只跑一次。提交说明有时会带偏后续智能体。没有公开仓,就没法按安装步骤复现。若你要的是可下载工具,这篇还不满足;若你要看拆完还能跑会不会帮下一个智能体修回归,数字都在 10-08 那一版里。本轮没有把作者花名册写进正文。

相关文章

分享: