Autoresearch也会无效加班?微软试了试「一键清空对话」
Autoresearch也会无效加班?微软试了试「一键清空对话」
内容摘要
保留已经写好的代码和实验成果,再让 Agent 清空对话重新探索,效果可能比一直跑下去更好。同一道算法优化题,让相同配置的 Agent 从同一起点独立跑 8 次
保留已经写好的代码和实验成果,再让 Agent 清空对话重新探索,效果可能比一直跑下去更好。
保留已经写好的代码和实验成果,再让 Agent 清空对话重新探索,效果可能比一直跑下去更好。
同一道算法优化题,让相同配置的 Agent 从同一起点独立跑 8 次,结果能差多远?
最好的一次跑到 100 分,最差的只有 68.3 分。
成绩落后的 Agent 仍在改代码、跑实验,偶尔还能提高一点分数。即使继续消耗大量预算,也始终没能追上那些高分运行。
Autoresearch 火起来之后,一次研究任务就可能让 Agent 连续运行几十小时,甚至好几天。可实验做得越多,真的就能找到更多新思路吗?
微软研究院分析这些长程实验后发现,有些 Agent 很早就局限在某一类解法附近,后续一直围绕它进行优化。研究团队还找到一种办法,把这种局限直接画了出来。
〓 8 次独立运行的成绩曲线与解法空间分布
论文标题:
Fork-and-Flush: Escaping Idea Basins in Autoresearch Agents
论文链接:
https://arxiv.org/abs/2610.07447
Agent 困在旧思路里
Agent 不断提出方案、执行测试,再根据得分调整。研究团队将这个过程类比为梯度下降,称为 Idea Descent。
但仅看分数,还无法判断它有没有真正换过解法。两份程序可能成绩接近,底层算法却不同;也可能代码改了很多,核心策略依旧一样。
研究者干脆让 LLM 做了 3 万多次解法比较。
研究团队先对提交的程序去重、抽样,再让 LLM 将其整理成统一的功能规格说明,保留算法、数据结构和关键参数,减少代码风格的干扰。
接着给 LLM 三份方案 A、B、C,让它判断 B、C 哪个方案的实现策略更接近 A。
根据这些判断,研究团队把不同方案映射到二维空间。在 p171 任务中,8 条独立运行的提交方案集中在 5 个不同区域,后续提交也大多停留在各自的区域附近。
研究者将这些区域称为 Idea Basins,即“思路盆地”。
在 5 项任务中,二维映射与留作验证的 LLM 相似度判断,平均一致率达到 85%,随机基线只有 50%。换用另一种嵌入方法后,主要的聚类现象依然存在。
即使对话历史会定期压缩,Agent 仍可能一直围绕早期选定的算法进行调整。
分数偶尔还在提高,但尝试的可能始终是同一类解法。
清空对话,多试几条路
研究团队于是尝试了一种新的运行方式,称为 Fork-and-Flush。
运行到预定节点时,系统复制当前工作空间,启动多个新分支。它们继承已有的代码、实验文件和历史最佳结果,但此前积累的对话上下文会被清空。
各分支独立探索一段时间后,系统选出成绩最好的一个继续运行,到下一个预定节点再重复这一过程。
这样一来,之前积累的代码和实验结果都还在,新分支却不必沿着原先的对话继续思考。它可以接着已有成果优化,也有机会重新审视当前算法,尝试其他解法。
〓 复制工作空间、清空上下文与保留最优分支的流程
把预算全部交给一个 Agent,它可能长期围绕已有方案反复打磨;让 4 个 Agent 各自从零开始、最后择优,每条轨迹又只能分到四分之一的预算。
Fork-and-Flush 试图兼顾两种策略:既避免每次从零开始探索,也减少长期沿着单一解法继续优化的风险。
研究团队还尝试过根据成绩是否停滞来决定分叉时机,结果发现,判断 Agent 有没有真正卡住并不容易。
即便始终围绕同一类解法调整,Agent 也可能通过小幅优化提高一点分数,让停滞计时重新开始。25 次早期测试中,有 15 次直到预算耗尽都没有触发分叉。
因此,主要实验改为按固定预算节点分叉。开局先启动 4 个独立分支并择优,随后在预算消耗约三分之一和三分之二时再次分叉。
整个过程由 Agent Harness 调度,无需修改模型权重。
研究团队还试过直接在提示词中提醒 Agent“换个思路”,但在这组实验中,这种提醒没有显著提高分支被选中的概率。
13 项长程任务实测
在 Polyomino 多连方块排布任务中,一次中途分叉就出现了明显的分化。
4 个分支各自继承了一份相同的工作空间。3 个仍留在原来的解法区域附近,另一个在清空上下文后的首次提交中就进入了新区域,最后被选中继续运行。
在二维解法空间中,这次跳转的距离达到了单次运行相邻提交位移中位数的 43 倍。该分支最终得到 93.9 分,单次运行基线的中位成绩则为 84.6 分。
4 个分支都清空了历史对话,真正走进新解法区域的只有一个。
清空上下文并不能保证 Agent 一定换思路。Fork-and-Flush 的价值在于让多个分支分别尝试,再将后续预算交给其中更有希望的方向。
〓 获胜分支进入不同的解法区域
这项研究共测试了 13 项长程任务,涵盖算法优化、密码分析、地下水污染源反推、模型压缩和内核优化。其中,order-add 任务的单次运行基线耗时中位数达到 107 小时。
实验统一通过 GitHub Copilot CLI 运行,其中 11 项任务使用 GPT-5.6-terra,另外 2 项使用 GPT-5.5。
在每项任务使用相同模型和 Token 计费预算的条件下,研究团队比较了单次运行、4 次独立运行择优,以及 Fork-and-Flush 三种策略。
各项任务的成绩经过归一化后,三种方法的平均分分别为 0.47、0.54 和 0.78。
Fork-and-Flush 相对前两种策略的平均分分别提升 66.0% 和 44.4%,在 13 项任务中有 12 项取得最高平均成绩。
单次运行基线在各项任务中的最高成绩,归一化后的平均值为 0.75,仍略低于 Fork-and-Flush 的平均分 0.78。
成绩提高之外,结果也更加稳定。
按归一化指标计算,单次运行的平均标准差为 0.26,Fork-and-Flush 降至 0.16;13 项任务中,有 10 项的成绩波动比单次运行更小。
对需要持续运行数十小时甚至几天的研究任务来说,这同样具有实际价值。同样的模型和预算,早期选择不同的解法,最终成绩就可能相差很大。多分支探索能够在一定程度上降低这种偶然性。
〓 三种运行策略的总体成绩对比
为了区分清空上下文与并行分叉各自的贡献,研究团队还在 11 项任务上做了消融实验。
在归一化平均分上,单次运行是 0.45,只清空上下文达到 0.55,只做分叉达到 0.57。同时使用两种操作,成绩进一步提高到 0.71。
单独清空对话或增加分支,都能改善整体成绩,但两种操作结合后的提升更明显。
Fork-and-Flush 的效果来自整套机制,清空历史对话只是其中一个环节。
〓 分叉与清空上下文的消融实验
不过,这套方法并非在所有任务上都占优势。LWE-rec 是一个例外,单次运行的平均成绩反而高于完整的 Fork-and-Flush。
分叉本身也需要消耗预算。如果新分支迟迟找不到更好的方向,这些预算原本可以继续用于优化现有方案。
什么时候值得扩大探索,什么时候更适合继续打磨当前方案,仍然需要权衡。
能力边界上的结果差异
研究团队进一步考察了任务难度与多次运行结果差异的关系。他们让 Qwen3.5 的 4B、9B、27B 三个模型解决不同规模的 MAX-3-SAT 问题。
任务较简单时,各次运行通常都能取得不错的结果;当任务难度远超模型能力时,表现又普遍不理想。不同运行之间的差异,往往在接近模型能力边界时达到最大。
以随机猜测和参考求解器的表现为参照,运行结果的波动呈倒 U 形。当 Agent 的成绩达到两者差距的中间位置附近时,不同运行之间的差异最大。
〓 运行结果差异在能力边界附近达到峰值
这也为长程 Autoresearch 中的成绩分化提供了一个解释线索。
开放式研究往往需要处理接近模型能力边界的难题。Agent 已经能取得一定进展,却未必能稳定找到高分方案。不同运行在早期选择了什么解法,可能对之后很长一段时间的结果产生影响。
只让某条研究轨迹持续运行下去,未必能弥补这种差距。
研究团队还提出一种推测:随着模型能力增强,今天的难题可能逐渐变得容易,但新的研究任务仍会不断接近模型的能力边界。
不同运行之间的成绩分化,也未必会随着模型变强而自然消失。
结语
Fork-and-Flush 在 13 项长程任务上的表现说明,即便不更换模型,通过调整 Harness 的运行策略,也有机会获得更好的结果。
当然,这些实验仍然依赖可验证的评分机制。面对更加开放的真实科研任务,如何比较不同研究方向的价值,以及如何让多个分支有效协作,还有待进一步研究。
对长程 Autoresearch 来说,最难察觉的瓶颈,或许是 Agent 仍在取得一点进展,却早已困在旧思路里。
更多阅读