← 论文解读

Dream-RSI:让 Agent 在历史搜索树中练习如何探索

改进探索策略本身,为什么也需要昂贵的探索?Dream-RSI 将历史搜索树变成可回放环境,用低成本反馈改写探索策略,再投入下一轮真实搜索。本文拆解这一闭环的机制、质量与成本目标,以及历史回放的能力边界。

作者:Tong Zheng、Xidong Wu、Zheng Zhang、Zhankui He、Chaoyi Zhang、Benjamin Coleman、Ruoqiao Wei、Di Bai、Haolin Liu、Rui Liu、Xue Wang、Yue Zhuan、Wang-Cheng Kang、Renkai Xiang、Heng Huang、Xinwu Cheng、Yunsong Guo
单位: Google、University of Maryland, College Park、Google DeepMind、University of Virginia

1. Motivation:改进探索策略,为什么还要重新付出探索成本?

让 Agent 优化一个 GPU kernel,可以形成直接的反馈闭环:提出实现、运行正确性检查、测量速度,再根据结果修改代码。但搜索持续数百轮之后,困难不只在于写出下一版代码,还在于决定下一次计算应该花在哪里:继续打磨当前最优方案,修复一个暂时失败的方向,还是重新开辟一条分支?

这类决定由探索策略控制。固定的探索规则容易实现,却难以适应搜索过程的变化:早期需要覆盖不同思路,后期可能更适合深入少数方向;一次失败可能意味着思路行不通,也可能只是实现错误。如果始终采用相同的分支数、深度和停止条件,就可能把大量计算用在收益很低的尝试上。

直接让 Agent 改写探索策略又带来一层更贵的优化。判断一段候选代码好不好,通常只需执行和评分;判断一个探索策略好不好,则需要让它驱动许多次代码生成与执行,观察最终找到了什么。每试一种策略,都重新支付一轮长程搜索的成本,反馈慢、可尝试的策略也少。

Dream-RSI 的出发点是:已经完成的搜索,能否被复用为评价新探索策略的环境? 历史里不仅有最终答案,还记录了从哪些方案继续修改、哪些尝试失败、何时开始停滞、每次执行得到了什么分数。只要保留这些结构,就有机会先在旧轨迹上筛选探索策略,再把更有希望的版本送去真实搜索。

Dream-RSI 总体框架:在线探索积累搜索树,历史树构成回放环境,Agent 根据回放反馈修改探索策略并用于下一轮搜索

图 1. Dream-RSI 的在线搜索与离线策略改进闭环,对应原论文 Figure 1。图源:Dream-RSI: Recursive Self-Improvement through Evolving Worlds。

2. Insight:历史既是经验,也可以是一个可执行的回放环境

2.1 把“知道过去发生了什么”变成“测试另一种搜索方式”

常见的历史复用方式,是把成功经验或失败总结放进提示词,让下一次生成参考。Dream-RSI 则保留搜索的父子关系和每个节点的执行结果,让另一套策略在同一棵历史树上决定先走哪条分支、走多深、并行推进多少条,以及何时停止。

两种方式提供的反馈不同。文字经验只能告诉模型“这个方向曾经有效”;回放还能检验:按照这套选择和停止规则,策略能否用更少的尝试找到历史中的高分结果。原本要等许多次真实执行才得到的策略反馈,现在可以通过读取已存储的结果快速获得。

这里的“world”是一个由真实执行记录构成的 replay simulator。它没有训练一个能预测任意新动作后果的神经网络世界模型。它的价值来自记录可靠、反馈便宜,而它能回答的问题也受已探索范围限制。

2.2 自我改进发生在探索策略这一层

系统中需要区分三个对象:负责生成候选程序的 discovery agent、判断候选是否正确以及质量如何的 evaluator,以及分配探索机会的 exploration policy。离线阶段由 policy-development agent 改写第三者的可执行代码,基础模型、评分规则和执行接口保持固定。

因此,这项工作的 RSI 指向一个明确的递归过程:当前策略影响本轮发现的历史,新历史又参与评价和改写下一轮策略。被积累的能力是“如何组织后续搜索”,没有进行基础模型权重的自我训练,也没有同时开放所有系统组件让 Agent 任意修改。

2.3 便宜的反馈必须有可见性约束

回放不能把整棵树的分数提前交给待评估策略,否则最优行为只需要直接选择已知赢家。论文让策略只看到已经揭示的节点:先作出选择,再读取对应的历史结果,然后继续决策。

这样测量的是基于当前证据分配计算的能力。但即便策略在回放中表现更好,也只说明它更善于利用这批历史。真实搜索从相同工作区出发仍可能生成不同代码,历史没有覆盖的方向也无法通过回放获得结果。这正是系统还需要持续在线探索、不断扩充历史的原因。

3. Method:怎样让在线探索和离线回放使用同一套策略?

3.1 搜索树的节点保存什么?

根节点表示初始工作区。每个非根节点对应一次生成并评估候选程序的尝试,保存父节点、工作区快照、生成历史、执行观察和评分。继续一个节点时,discovery agent 从它保存的工作区恢复,并以已有观察为上下文提出下一次尝试。

在论文的形式化接口中,策略每轮可选择根节点或当前各分支的叶节点。选择根节点意味着打开新方向;选择叶节点意味着继续这条分支。一次返回的批次最多包含 WW 个节点,由并行 worker 执行。批次为空则表示停止。

这一接口将“选什么方向”和“投入多少并发”放在同一个决策里。策略不仅可以给候选方向排序,还可以改变探索宽度、每条分支获得的深度,以及继续尝试与提前停止之间的取舍。在线生成程序的随机性仍由底层 Agent 带来。

3.2 回放改变的是状态转移,不是决策接口

不同探索策略在同一棵历史发现树上回放,通过选择不同的分支、深度和并行批次获得质量与成本反馈

图 2. 历史树为不同探索策略提供共同的回放环境,对应原论文 Figure 2。图源:Dream-RSI: Recursive Self-Improvement through Evolving Worlds。

在线阶段选中节点后,会真正调用 Agent 生成代码并执行评分;离线阶段执行同样的选择,只揭示该节点已经记录的后继和结果。回放过程中,历史树本身不变,变化的是策略已经看到的子树。

这套回放有具体的顺序约束:沿已打开的分支,只能依次揭示其记录中的下一个节点;再次选择根节点时,打开历史中最早创建但尚未揭示的新分支。不能直接跳到深层高分节点,也不能在回放里凭空创建历史之外的结果。策略改变的是各分支推进的顺序、深度、并行组合和停止点。

每个候选策略都会在累积的历史树上评价,同时扫描五个预算偏好值 ρ∈{0,0.25,0.5,0.75,1}\rho\in\{0,0.25,0.5,0.75,1\}。同一策略在不同偏好下可以更积极或更节省,由此产生一组质量与调用量的折中。预算偏好在一次回放内保持固定;论文附录实现中将这个控制量称为 beta。

3.3 评分同时考虑结果质量、调用量和并行程度

对某棵历史树,设 BB 是全部已记录尝试的数量,SS 是其中的最高分。一次回放揭示了 nn 次尝试,获得最高分 ss,则质量按 a=clip⁡(s/S,0,1)a=\operatorname{clip}(s/S,0,1) 归一化。不同预算偏好得到若干 (n,a)(n,a) 点:相同调用量下质量更高,或相同质量下调用量更少,都是改进。

评分先移除被其他点支配的方案,再衡量质量—调用量 Pareto 前沿的归一化超体积 HV\mathrm{HV}。直观上,它奖励“更早达到更高质量”,而不只奖励穷尽历史后找到最优节点。再加入并行惩罚,可以把单棵树上的目标简写为:

V=HV−λ1∣R∣∑ρ∈R, nρ>0kρnρ.V=\mathrm{HV}-\lambda\frac{1}{|\mathcal R|} \sum_{\rho\in\mathcal R,\,n_\rho>0}\frac{k_\rho}{n_\rho}.

其中 R\mathcal R 是上述预算偏好集合,kρk_\rho 是完成的顺序决策轮数,nρn_\rho 是这些轮次覆盖的尝试数,λ\lambda 控制惩罚强度。若每轮只执行一次,比例接近 1;若能把有价值的独立尝试组成满批次,比例可以接近 1/W1/W。但盲目填满 worker 也会增加调用量,损害前一项,所以策略仍需判断哪些并行尝试值得做。

这个目标中的调用次数和顺序轮数,是对工作量与串行等待的代理。它们没有直接等价为完整 token 账单或端到端墙钟时间,尤其当不同候选程序的执行耗时差异很大时。

3.4 策略如何更新,又保证了什么?

每轮在线搜索结束后,新的历史树加入回放池。离线阶段以当前策略为起点,策略开发 Agent 根据回放轨迹与评分提出修改。实验中每个离线阶段共评估四个版本:当前策略,加上三个新生成版本。所有版本在同一批累积历史上评价,再把平均回放分数最高的版本用于下一轮在线搜索。

由于候选集合包含原策略,选中的版本在当前历史池的平均回放分数上不会更差。但这不是下一轮真实任务表现单调提升的保证:在线生成具有随机性,历史覆盖范围有限,下一轮面对的候选结果也会变化。

策略搜索本身还带有较强的人类设计约束。附录提示要求区分不可恢复失败和可修复的实现错误,根据分支轨迹而非单个低分作决定,并考虑探索、利用与恢复机会。实验展示的是在这些接口、目标和先验约束下自动改写策略的价值,不能将全部探索行为都归因于系统从零发现。

4. Experiments:省下了什么,又在哪些条件下有效?

4.1 对照设计与成本口径

论文 v2 覆盖四个领域、九个发现任务:四个 KernelBench 任务、三个数学优化任务、Lasso 路径求解器优化,以及 Agent harness 优化。主要受控对照是 Recursive Fixed Exploration:它同样跨轮复用历史,但探索策略保持固定。两者第一轮行为相同,之后才因策略是否更新而分化。

Kernel 和数学任务使用 Gemini-3.1-Pro;Lasso 另外测试 Gemini-3.7-Flash;harness 实验使用 Claude Opus 4.8。各领域的轮数、并发数与预算上限不同,因此应在同一任务和骨干模型下比较,而不是直接对不同领域的调用数量排序。

论文的 discovery compute 主要统计生成并评估候选程序的尝试次数。离线回放复用已有执行结果,能避免再次运行候选程序,但策略开发 Agent 改写策略仍然需要计算。因此,下文的“更少调用”描述的是发现阶段的工作量,不应直接换算成同倍数的总费用或墙钟加速。

4.2 GPU kernel:更快找到好结果,也可能找到更好的结果

KernelBench 实验在 NVIDIA L40S 上测量执行性能,并按官方协议检查候选与 PyTorch 参考实现的数值一致性。评分使用运行时间的倒数 1/ms1/\mathrm{ms},越高越好。

任务 相对固定探索的主要结果 比较条件
VGG16 达到相近性能所需调用量约为 1/2.43 比较发现效率
LayerNorm 达到相近性能所需调用量约为 1/1.79 比较发现效率
ConvDiv 性能评分为 2.09 倍 发现预算相近
ConvMax 性能评分为 1.44 倍 发现预算相近

前两项说明新的探索策略更快到达相近的结果,后两项则说明在相近预算内找到了运行更快的 kernel。它们分别回答搜索效率和最终候选质量两个问题。论文还比较了限制在两天搜索时间内的 PACEvolve;这组比较提供系统层面的参考,与采用相同初始化和评分协议的固定探索对照,控制条件并不完全相同。

ConvDiv 的实现案例也有助于理解收益:发现的 kernel 围绕后续池化和归约重组计算,让中间值尽量留在寄存器中,避免物化完整卷积结果和池化特征图,再把部分线性操作推迟到最后的轻量归约。这是程序结构层面的优化,说明探索过程可以通向有具体计算意义的改写;它并不能单独证明是哪条策略修改促成了这个结果。

4.3 Lasso:平均性能提升需要拆到具体数据集看

Lasso 实验在 17 个合成实例上搜索满足数值正确性要求的完整正则化路径求解器,再到六个未参与搜索的生物与非生物数据集上测量运行时间。两种方法均运行五轮,实际调用量由探索分配和停止决策决定。

骨干模型 探索方式 累积发现调用量 六个数据集的平均运行时间
Gemini-3.1-Pro Fixed 550 3587.1 ms
Gemini-3.1-Pro Dream-RSI 317 2931.0 ms
Gemini-3.7-Flash Fixed 3200 2516.7 ms
Gemini-3.7-Flash Dream-RSI 1879 2350.6 ms

两种骨干都获得了更好的平均运行时间与发现调用量折中,但逐数据集的情况不同:Pro 的平均收益主要由 RCV1 驱动,在另外五个数据集上反而慢于固定探索;Flash 则在六个数据集中的五个上更快。因而,这里的泛化证据是“在未参与搜索的数据上仍能取得收益”,并不意味着每个数据集都一致改善。

论文还将 Pro 的 317 次调用与 SimpleTES 报告的 51,200 次生成比较,得到约 162 倍的调用量差距。但两者使用不同模型骨干,这个数字不能单独归因于回放机制。上表中的同骨干对照,更适合判断自适应探索本身带来的变化。

4.4 数学发现与 harness:收益并不覆盖所有任务

三个数学任务中,Dream-RSI 在 Sum–Difference 上获得优于所列对照的结果,在 Circle Packing 上追平其中最强的已报告结果。Autocorrelation 指标则越低越好:Dream-RSI 为 1.456375,固定探索为 1.456001,SimpleTES 为 1.453675。因此,数学实验支持部分任务上的有效性,不能概括成三个任务都提升。

harness 实验从 Terminus-Kira 开始,优化固定模型周围的信息存储、检索和呈现等程序。作者使用 Terminal-Bench 2.1 全部 89 个任务,每个任务独立运行两次,最终评分从 0.7247 提升至 0.8090;同一评价设置下,Claude Code 和复现的 Meta-Harness 分别约为 0.75 和 0.79。

这一结果表明该探索框架也能用于 Agent 自身的执行程序。不过,全文描述是候选 harness 在完整任务套件上反复评价,没有像 Lasso 那样另外展示未参与搜索的任务集。它适合作为这个套件上的优化结果,跨任务泛化仍需要额外验证。

4.5 历史池与探索行为的消融说明了什么?

在 ConvDiv 上,保留全部历史的最终性能为 1.90,只使用当前轮历史则为 1.59,但前者也用了更多发现调用:786 对 430。累积历史与更高最终性能相伴,可能避免策略过早收缩;由于调用量不同,这组结果还不能单独证明相同预算下的优势。

作者还把历史总结成高层方向建议,分别加入固定探索与 Dream-RSI 的提示。在这个任务上,两种方法加入建议后的最终性能都更低。这提示,将历史压缩成语义指引可能过早约束探索,而结构化回放保留了比较不同决策的空间。这个现象来自单一任务,不能外推为所有经验总结都有害。

逐轮记录则显示,探索投入并非持续减少:随着早期性能提高,策略一度减少尝试;在收益停滞后,又增加探索并伴随新的提升。比起简单学会“早点停”,这更接近根据已有证据调节搜索深度与宽度,但目前主要是轨迹层面的观察,仍需更多重复运行检验其稳定性。

5. Conclusion

Dream-RSI 把自我改进中最昂贵的一类反馈——一个探索策略长期运行后究竟好不好——部分转移到了历史回放中。它通过可执行策略、共同决策接口与固定评分规则,让过去支付过的执行成本继续服务于下一轮策略选择。在多个领域中,这种方式带来了更好的发现质量与调用量折中,也展示了固定模型周围的探索程序可以成为持续改进的对象。

它的边界同样来自历史:回放只能覆盖已记录的分支,重新排序旧尝试也无法精确模拟改变搜索顺序后新代码会如何生成。历史上得分更高的策略,仍可能在新分布上过早剪枝或错过尚未出现的方向。后续值得在未参与策略选择的历史树和新任务上评价,并考虑何时应继续利用回放、何时应付出真实执行成本补充覆盖;这会直接影响离线收益能否持续转化为在线进步。

另一个关键问题是完整成本。发现调用量已经是比单看最终分数更有用的指标,但要判断这套闭环是否值得部署,还需要一起记录策略改写的 token、历史维护与回放开销、候选执行时间和并行资源,并在相同总预算下进行多次独立运行。这样才能进一步区分:系统是在旧历史中更有效地分配尝试,还是已经获得了可稳定迁移、能够覆盖自身改进成本的探索能力。

References

— END —浏览论文解读 →