ModularRSI: Modular and Generalizable Recursive Harness Self-Improvement
Siwei Wu, Jincheng Ren, Yizhi Li, Haau-Sing Li, Chengran Yang, Yuxuan Zhang, Weicheng Gu, Jian Yang, Riza Batista-Navarro, Chuanyi Zhang, Xianglong Liu, Ming Zhou, Bryan Dai, Chenghua Lin
cs.CL
2026-09-14
IQuest 把 CLI harness 拆成五块,在与评测隔离的 240 道题上对比成败轨迹后各自改代码。冻结后 TerminalBench 准确率 47.57→52.43,整仓或联合改反而低于基线。
CLI agent 的上限越来越不在权重,而在 harness:循环怎么走、工具怎么调、观察怎么压、上下文怎么管、何时宣布做完。最近一波 Recursive Self-Improvement(RSI,让 agent 根据执行经验改自己的执行机制)直接拿评测集或评测子集来进化 harness,分不清学到的是可复用机制,还是过拟合了 SWE-Bench / TerminalBench 的题型。单条轨迹里,系统性缺陷和这道题特有的解法缠在一起;整份 harness 一起改,又分不清该动哪一块。
IQuest Research、曼彻斯特大学、北航等人提出 ModularRSI:进化数据和下游评测彻底隔离,用同一任务的成败轨迹做对比,再把可进化部分拆成五个功能模块各自改,最后再合并。
起点是 Harbor 里的 Terminus-2。沙箱、并行、LLM 通信不动,只动行为机制,拆成五块:Agent Loop(推理-行动-观察循环和恢复)、Tool Use(选工具、调用、校验)、Observation Management(过滤和压缩环境反馈)、Context Management(跨步保留、压缩、检索)、Task Completion Detection(判断是否该停)。
每个进化实例滚出 K 次,按全成、全败、有成有败分成三类。有成有败的,把同一任务的成功和失败轨迹配对,找函数级差异;全败的先去历史轨迹记忆里找以前的成功样本,找不到再做单边诊断;全成的只找冗余步骤。一批诊断聚成 JSON,按「多少道不同任务都指向同一函数」投票,票高的优先改。改完过三道门:AST / 导入 / 协议等静态检查、由 Code-Modify Agent 审 diff 是否写入题面特解、随机抽当前 batch 两道题跑一遍看会不会运行时炸掉。五块独立进化完再做一轮跨模块整合,去重、划清职责。函数库还会合并相似函数,执行时按任务描述只激活相关函数。
进化数据从 GitHub、Hugging Face、Kaggle、Linux 内核文档等外部来源,按 TerminalBench / SWE-Bench 的高层次类别去检索,再做成 Harbor 格式的可执行题。评测题本身不用。过滤环境完整性、非平凡性、评测器是否测功能正确性,参考 solution.sh 必须过、空提交不能得分,再人工审,最后用语义相似筛掉和下游评测重叠的题,得到 2000 道。主实验每侧只抽 120 道,共 240,进化 3 个 epoch。主模型是 DeepSeek-V4-Flash-Preview 和 DeepSeek-V4-Flash-0731。
评测在 TerminalBench 2.0(89 道)和 SWE-Bench Verified(500 道)上,harness 冻结后再测。骨干 DeepSeek-V4-Flash-Preview 时:
| 进化集 | TerminalBench Acc | SWE Acc |
| 无进化 | 47.57 | 73.40 |
| TB 相关(域内 / 域外) | 52.43 | 75.80 |
| SWE 相关(域外 / 域内) | 49.40 | 76.45 |
域内 TerminalBench 的 Pass³(三次独立滚动必须全过)从 30.34 升到 35.96。同一份在 TB 相关数据上进化、冻结后的 harness 换模型仍有正增益:GLM-5.2 准确率 59.55→61.80,MiniMax-2.5 41.57→44.94,DeepSeek-V4-Flash 47.57→52.43。
模块化本身不是装饰。TerminalBench 上非模块进化掉到 46.44,五块联合一起进化掉到 44.19,都低于基线 47.57;独立进化再合并才到 52.43。单模块全是正的:Agent Loop 准确率最高(50.56),Observation Management 把平均步数从 34.70 压到 22.50。和 Meta-Harness、AHE 在同一套 120 题、同一 Terminus-2 起点、禁止联网搜答案的协议下比(对照进化 16 epoch 以对齐总轮数,骨干换成 DeepSeek-V4-Flash-0731),基线 61.79,两家对照大约只动 1 个点,ModularRSI 到 67.42。中等难度为中心的进化数据在 SWE-Bench 上 76.45,难加易混合只有 74.25。
给「harness 自进化」补了一条更干净的评测口径:进化集和评测集必须断开,否则分数涨了也不知道是不是背了题。对正在写 coding agent 脚手架的人,结论很具体:别一次重写整份循环;按功能切开、用同一任务的成败对比定位、改完过拟合审查和执行门,再合并。Observation 压缩换步数,Loop 换成功率,两块赚的不是同一笔钱。
这仍是渐进工程。权重没动,搬的是执行机制。跨模型能转,说明改到的更像交互协议而不是某个模型的口头禅,但增益是几个点,不是换代。
作者承认没有单独消融「对比轨迹分析」这一项,主实验也只用了 2000 道里的 240 道。
对照实验的基线因骨干版本不同差很多(Preview 上 47.57,0731 上 61.79),两张表不能横着比。执行门每改一次只抽 2 道题,过拟合审查是同一个 Code-Modify Agent 在看自己的 diff,两道门都偏软。非模块和联合进化掉到基线以下,说明乱改会伤,也说明模块化的收益部分来自「少改、改得局部」。进化题的类别标签仍来自 TerminalBench / SWE-Bench 家族,隔离的是实例不是领域先验。代码和数据已开源,论文没报进化的墙钟时间和 token 账单,复现成本不清楚。