DeLoop: Repeated Actions as Self-Supervision for Long-Horizon Agents
Tianle Chen, Pushkar Singh, Ketan Todi, Biswajit Paria, Qijia He, Wenqi Wang, Yuwen Tan, Jike Zhong, Sugato Basu, Deepti Ghadiyaram, Arjun Akula
cs.AI
2026-10-14
DeLoop 把重复调用当负例、稍后跳出当正例,做无奖励 DPO。8B 循环率从 57.3% 降到 6.1%,步数约剩三分之一。
长程 agent 会把同一个工具、同一组参数再调一次,环境返回一字不差的旧观测。DeLoop 把这种步骤定义成 loop:调用先规范化,忽略空格和参数顺序,再拼上返回观测;与更早某步完全相同,就是 looping action。调用重复但观测变了,不算。含至少一次 loop 的运行占比,记为 loop rate。
完整历史挡不住。CodeGym 上 Qwen3-8B 不压缩时 loop rate 为 29.0%,摘要到 4096 token 升至 57.3%,阈值降到 2048 则到 64.7%。Gemini 3.5 Flash-Lite 从 34.0% 升到 47.1%。
循环和失败一起出现,因果还没有单独立住。六组 Qwen3 与 Gemini 的压缩实验里,有 loop 的运行平均 59.5% 失败,没有的是 33.4%。Qwen3-8B 为 85% 对 68%,Gemini 3.1 Pro 为 48% 对 12%。有 loop 的 Qwen3-8B 轨迹平均 6.5 次空转,比无 loop 多 10.5 步、多约 11k token。
上下文里留着记录,模型也经常不用。删掉最近一次已完成调用,重发比例从 3.3% 升到 48.8%。完整历史仍有 29.0% 的运行会 loop;压缩后 25.2% 在逐字重复一条还留在上下文中的调用。动作账本和动作轨迹的循环率仍为 52.0% 到 62.7%,普通摘要是 57.3%。
标签从同一条 rollout 里挖,不用任务奖励、标准答案或 LLM judge。
压缩轨迹里,looping action 当负例。其后第一个既不是 loop、调用又与负例不同的动作当正例,都配上 loop 之前的历史。没跳出就丢弃。一条轨迹可以有多对。8000 条 CodeGym 对里,82.6% 来自失败运行。数在线服务器簇时,模型把 FindUnvisited(3,0) 连打三次,每次都得到 (3,0),稍后才 MarkVisited(3,0)。重复搜索是负例,后来的标记是正例。
正例就是模型自己后来走的那一步。只拿正例做 SFT,循环率停在 37.7%;和负例对比之后降到 6.1%。在线 GRPO 给 loop 逐步加罚,降到 15.0%。
DPO 的参考模型是冻结基座,β = 0.05。Qwen3-8B 从 9403 条自挖对中取 8000 条,LoRA(r=32)训一个 epoch。14B 和 32B 用各自的 2331、2244 条,训两个 epoch。推理时每一步用训过的策略。摘要由同一个模型写,没有单独的损失。历史估计超过 4096 token 就压缩,留下系统提示、任务和最近六条消息。
DeLoop-Mix 再加 ALFWorld、Open-AgentRL、Terminal-Bench 上按同一规则挖的 4635 条。
评测是 Qwen3-8B、CodeGym 300 道留出题,历史超过 4096 token 就摘要。完整历史、压缩基线、DeLoop、DeLoop-Mix 取三次运行的平均。
| 方法 | 含循环任务 | 成功率 | 每题步数 | 每题 token |
| 完整历史 | 29.0% | 31.7% | 12.23 | 24.3k |
| 压缩基线 | 57.3% | 25.1% | 15.00 | 23.9k |
| 检索记忆 | 42.7% | 27.7% | 13.34 | 26.1k |
| ACON | 46.3% | 29.3% | 14.84 | 20.5k |
| 重复 blocker | 46.7% | 25.3% | 14.71 | 24.9k |
| Gold-label DPO | 22.3% | 25.7% | 8.10 | 11.3k |
| 历史蒸馏 | 43.7% | 26.3% | 11.52 | 26.6k |
| DeLoop | 6.1% | 25.9% | 4.67 | 12.7k |
| DeLoop-Mix | 10.1% | 30.3% | 5.94 | 9.6k |
循环率从 57.3% 降到 6.1%,大约是原来的九分之一。步数从 15.00 降到 4.67,token 少 47%。成功率从 25.1% 到 25.9%,仍低于不压缩的 31.7%。Gold-label DPO 用任务成败来组对,循环率还有 22.3%,步数 8.10,成功率 25.7%。Blocker 的 46.7% 把被拒绝的提议也算了进去。
| 模型 | 循环率 | 成功率 | 每题步数 |
| Qwen3-14B 基线 | 42.9% | 45.1% | 15.28 |
| Qwen3-14B DeLoop | 12.3% | 52.3% | 8.18 |
| Qwen3-32B 基线 | 38.5% | 37.7% | 13.54 |
| Qwen3-32B DeLoop | 12.9% | 44.8% | 8.82 |
14B 成功率加 7.2 个点,32B 加 7.1 个点。压缩在这两档大约先掉 8.9 和 9.0 个点,DeLoop 补回大部分,token 少 35% 和 29%。Qwen3.5-9B 的循环率从 54.7% 到 26.0%,成功率从 49.7% 到 55.3%。Llama-3.1-8B 的循环率从 43.7% 到 2.0%,步数从 17.51 到 5.72,成功率从 17.8% 到 19.4%。
重复里观测发生变化的比例,从 29.9% 升到 69.8%。空转占全部步骤从 24.9% 降到 2.5%,有信息的重复从 10.6% 降到 5.8%。
DeLoop-Mix 把压缩下的成功率从 25.1% 拉到 30.3%,不压缩从 31.7% 到 36.2%,循环率都是 10.1%,每题 token 9.6k,是上表最少的一档。只用跨域对、不用 CodeGym 对,循环率回到 55.3%。五种上下文设置下,DeLoop 的循环率在 4.7% 到 12.8% 之间,未训练基线最高 65.3%。七种记忆策略下,DeLoop-Mix 把循环率从 42.7%–62.7% 降到 6.3%–20.7%;动作账本从 62.7% 降到 11.3%,成功率加 5.7 个点。
四个环境里循环都降。ALFWorld 与 Open-AgentRL 评的是未见过的游戏:前者循环率 55.2% 到 27.6%,成功率 37.3% 到 38.1%;后者 79.0% 到 73.5%,成功率 43.9% 到 45.5%。AppWorld 73.7% 到 40.9%,成功率从 7.0% 降到 5.8%。ScienceWorld 96.5% 到 83.5%,成功率从 3.5% 降到 1.5%。Terminal-Bench 无产出重复从每题 16.6 次降到 6.9 次。830 条 BrowseComp-Plus 上,DeLoop-Mix 循环率从 22.4% 到 1.2%,准确率持平;只训 CodeGym 的 DeLoop 降到 6.4%。Qwen3-32B 只学 CodeGym,零样本到 ALFWorld,循环率 64.9% 到 54.5%,成功率 33.6% 到 42.5%。
LiveCodeBench 182 题、greedy pass@1,基座解出 53,DeLoop 52,DeLoop-Mix 54。IFEval 严格准确率 82.8%、83.5%、83.4%。MT-Bench 4.225、4.463、4.213。
常见修法是换记忆:外置库、滚动摘要、可学习压缩器。DeLoop 假定压缩器不动,改的是策略会不会用已经留下的记录。标签只有一条,调用和观测是否与早前某步精确相同。
8B 上省的是交互。步数大约剩三分之一,成功率贴着压缩基线,到不了完整历史的 31.7%。14B 和 32B 把压缩掉的成功率拿回大部分。
拦住执行,挡不住提议。Blocker 循环率 46.7%,步数 14.71,基线步数 15.00。仍会提出已执行调用的任务,DeLoop 从 71.3% 降到 13.6%,不拦截时是 69.8%。
训练对要求后来真的跳出,否则丢掉。8000 对、一个 epoch 把 8B 打到 6.1%;加到 9.4k 对,循环率停在 6.7%。
8B 循环率降到原来的约九分之一,成功率只多 0.8 个点。把 loop 当成失败主因,这两个数对不上。清掉空转主要省步数,解题率到 14B、32B 才动。没有「其余行为不变、只打断循环」的实验。
正例是之后第一个不同的非循环动作,82.6% 的对来自失败运行。250 个留出前缀上,贪心重发 looping action 从 15.6% 降到 6.0%,照抄跳出动作仍占 18.8%–20.8%,Done() 从 3.6% 升到 12.4%–26.0%。学习率 3×10⁻⁵ 时,循环率 0.7%、步数 1.60、成功率 19.3%;β=0.01 时步数 2.06、成功率 16.3%。默认配方守着成功率,再推就会少做。
AppWorld、ScienceWorld 循环下降的同时成功率下降,基线只有 7.0% 和 3.5%。Open-AgentRL 的循环率只少 5.5 个点。
认的是字符串精确重复,换写法的空转不算,也不会当负例。OpenHands 要连续四次相同才算卡住,这里一次就算。摘要和动作共用一套权重,摘要质量没有分开测。14B 的 DeLoop 是单次运行。一般能力只测了三块非 agent 基准。