Dream-RSI:把搜索历史变成可回放的世界,让 Agent 改进探索策略

Dream-RSI 研究的是:能否利用已经付过计算成本的搜索记录,改进下一轮搜索的调度策略? 它将历史轨迹组织成可回放的模拟器,让不同控制器比较“先探索哪个方向、哪些任务并行、何时停止”,再把选出的控制器投入真实探索。

论文为 Tong Zheng 等人的 Dream-RSI: Recursive Self-Improvement through Evolving Worlds,2026 年 9 月 14 日提交。本文依据 arXiv v1 正文与附录,截至 2026 年 9 月 23 日核对。文中的图示和小型算例为自行制作的教学材料。

这里的自我改进发生在探索策略代码上,底层 coding agent 的模型权重保持不变。“世界”是已发生结果的回放环境,不能凭空生成未探索方向的结局。理解这两个限定,才能准确评价论文的贡献。

1. 动机:为什么连“怎么搜索”也值得优化?

想象让一个 coding agent 优化 GPU kernel:它写代码、编译、验证数值、测运行时间,再根据结果改进。一个候选版本可能很快就能判断好坏,但一个搜索策略的价值需要观察许多次尝试才能显现。

例如,某个方向连续两次编译失败。立刻放弃,可能错过修复后很快的实现;继续投入十次,又可能浪费预算。另一个方向已经有可用版本,但继续优化的边际收益很低。此时真正稀缺的是如何分配下一批实验机会。

如果比较三个调度器就必须从头跑三轮昂贵搜索,那么优化调度器本身也会变成一项昂贵任务。Dream-RSI 的切入点,是把已有探索记录复用为比较策略的试验场。原文 §2

从系统设计看,这相当于将两个问题拆开:任务执行器负责产生候选解,控制器负责分配实验预算。前者回答“这次怎么改代码”,后者回答“下一次值得在哪个工作区改代码”。

2. 方法:真实探索与历史回放交替运行

① 真实探索控制器选择工作区并安排并行任务。固定的 coding agent 产生候选程序,评估器返回分数和错误信息。
② 冻结历史保存父子关系、工作区快照、程序和测量结果。将这一轮搜索加入历史模拟器池。
③ 回放与改策略候选控制器按自己的顺序读取已记录结果。开发 Agent 根据反馈修改控制器代码,选优后进入下一轮真实探索。

循环反馈:新策略 → 新的真实搜索历史 → 更多回放材料 → 再次选策略。离线回放期间,当前历史池保持固定。

2.1 输入、状态和输出分别是什么?

系统的输入包括任务、初始工作区、评估器、计算预算和历史记录。在线阶段的产物是新的候选程序及其发现过程;离线阶段的产物是下一版可执行探索策略。

搜索树中的一个节点代表一次实际尝试,保存工作区快照、候选产物、评估诊断和分数。父节点说明这次尝试继承了哪个工作区。新策略可以从头开方向,也可以继续一个方向,并决定并行批次与停止时机。

按主文 §3 的抽象,策略只能选择根节点和当前已观察树的叶节点,批次大小不超过 worker 数量 \(W\)。同一批不能同时选择尚未出现的父子两步,因为第二步要依赖第一步的结果。根节点用于开启新分支;非根叶节点用于延续已有分支。

2.2 回放是怎样“假装执行”的?

在真实探索中,选择一个工作区会触发新的模型生成和程序评估。在回放中,相同接口返回的是历史里已经保存的下一步结果。

主文的具体约定是:延伸非根节点时,揭示它已记录的唯一子节点;选择根节点时,按历史创建顺序打开下一条尚未揭示的分支。没有已记录后续就不产生新结果。每次评估一种策略,都重置其单次运行状态,从只看到根节点开始。

这允许改变读取的子集、跨分支的先后、并行分组和停止时机,却保留每条分支内部的依赖顺序。控制器在决策时只能看到已揭示前缀;开发控制器的 Agent 可以在两次修改之间分析回放反馈。 这是运行时信息与开发时反馈的区别。原文 §3

因此,回放能回答的是“在这份已记录结果上,这样调度表现如何”。它不能直接回答“如果当初换个上下文、换个随机种子,再写一次代码,会得到什么”。

2.3 用什么目标选策略?

主文公式 1 将一次回放的得分写成三个部分。省去策略和历史树的下标后:

\[ V=s_{\mathrm{best}}-\beta_1N +\beta_2\frac{N}{\max(1,k)}. \]

这里 \(s_{\mathrm{best}}\) 是已揭示节点中的最好分数,越大越好;\(N\) 是揭示的非根节点数;\(k\) 是完成的决策轮数。\(\beta_1,\beta_2\geq0\) 分别调节工作量惩罚与并行奖励。

第一项鼓励找到好程序,第二项防止无节制地消耗尝试,第三项偏好将有价值的尝试放进并行批次。这里的 \(N\) 表示回放轨迹所代表的生成—评估请求数,回放本身并没有重新执行这些请求。

对固定历史池中的各棵树分别计算,再取平均,得到候选策略的总分。当前策略也参与比较,最后选择平均分最高的已评估版本。公式 1 与策略选择

这只保证被选版本在同一个历史池、同一种评分上不差于当前版本。未来真实探索的质量能否上升,仍是经验问题。

2.4 主文公式与附录实现不能直接画等号

附录 B.2 提供了更具体的开发提示与 API,其中采用的是另一种评分形式:扫描策略的一个 \(\beta\) 参数,计算质量—探测量曲线的 AUC,再扣除并行惩罚。并行惩罚涉及有效顺序轮数与总探测量之比。这个 \(\beta\) 是调节探索耐心等行为的参数,不能直接当作主文的 \(\beta_1\) 或 \(\beta_2\)。

动作接口也更具体:附录将历史表示为“分支 × 尝试”的网格,同一批可以包含多个未打开的分支起点,以及已有分支的前沿;主文则用单个根节点依次打开分支。附录还要求在一轮开始前规划宽度和深度,并区分可修复错误与应当放弃的方向。附录 B.2

因此,下文使用主文的简化树模型与公式 1讲清计算逻辑;它不是对完整实验控制器的逐行复现。要复现实验,需要进一步核对实际 runner、目标函数和策略版本。

3. 数值教学:同一棵树,为什么不同调度会有不同价值?

以下是自行构造的教学用简化示例。分数没有物理单位,根节点分数为 0,最多两个 worker;设 \(\beta_1=0.05\)、\(\beta_2=0.02\)。这些数值均不是论文实验超参数。

假设历史记录包含两条分支,创建顺序为 A、B。下面展示完整记录供读者理解;运行中的策略看不到未揭示的分数。

历史记录全图 · 根节点 r,分数 0
r →A1 · 0.30→A2 · 0.35→A3 · 0.36
r →B1 · 0.55→B2 · 0.90→B3 · 0.91

每个节点是一份已经测量过的候选结果。B3 虽然存在于历史中,某个提前停止的策略可能始终不读取它。

比较两个教学调度器:S 串行读完全部节点;P 先打开第二方向,并行推进,使用完预设的 5 次探测预算就停止。P 的固定预算仅用于演示算账,不代表附录里的自适应停止逻辑,也没有根据隐藏的最优分数设置停止线。

决策轮 S:选择的父节点 → 揭示结果 P:选择的父节点 → 揭示结果
1 r → A1 r → A1
2 A1 → A2 A1、r → A2、B1
3 A2 → A3 A2、B1 → A3、B2
4 r → B1 停止,已使用 5 次探测
5 B1 → B2 —
6 B2 → B3 —

可以逐步展开下面的回放,观察 P 在每轮结束后拥有的信息:

第 1 轮:只能看到 A1

已揭示 A1 = 0.30。N = 1,k = 1。A2、A3 和全部 B 分支分数仍未知。下一轮可以延伸 A1,同时从根节点打开下一条分支。

第 2 轮:同时看到 A2 与 B1

已揭示 A1、A2 = 0.35、B1 = 0.55。N = 3,k = 2。当前最好分数 0.55;B2 = 0.90 仍然不可见。A2 与 B1 是两条独立分支的前沿,可以组成下一批。

第 3 轮:找到 B2,随后按预算停止

新增 A3 = 0.36、B2 = 0.90。N = 5,k = 3。当前最好分数 0.90,B3 没有揭示。控制器并不知道再走一步只会提升到 0.91;此处停止来自预设的教学预算。

对 S:最好分数为 0.91,总共 6 个节点、6 轮,代入后得到:

\[ V_S=0.91-0.05\times6+0.02\times\frac66=0.63. \]

对 P:最好分数为 0.90,总共 5 个节点、3 轮:

\[ V_P=0.90-0.05\times5+0.02\times\frac53 \approx0.6833. \]

P 的最终质量低 0.01,但节省了一次探测,而且平均每轮揭示 \(5/3\) 个节点,所以综合分更高。若不惩罚工作量也不奖励并行,即两项系数均为 0,排名又会变成 S 更好。这说明“最优调度器”取决于明确的成本偏好。

实际选择要看整个历史池。再假设第二棵历史树上,S 与 P 的回放分数分别为 0.68、0.74,那么平均分为:

\[ \bar V_S=(0.63+0.68)/2=0.655, \]

\[ \bar V_P=(0.6833+0.74)/2\approx0.7117. \]

在这两个候选中选 P,然后让它进入下一轮真实搜索,产生新记录。这才完成“收集经验—比较策略—重新部署”的一轮循环。轮数从 6 减到 3,也不意味着真实墙钟时间必然减半:不同尝试耗时、启动开销和慢任务都会影响实际延迟。

4. 实验:先分清指标,再看提升

论文覆盖一个 Lasso 算法工程任务、三个数学发现任务和四个 GPU kernel 任务。关键受控基线是 Recursive Fixed Exploration:同样进行多轮探索,但维持人工设计的固定策略。论文将两者的首轮搜索行为设为相同。

实验中的 discovery cost 主要按发现 Agent 的累计调用次数计量。这个口径与最终程序的运行时间、所有模型调用总费用、端到端墙钟时间都不同。原文 §4

4.1 Lasso:平均运行时间改善,同时发现调用更少

Lasso 路径任务要求计算一系列正则化强度下的解。搜索使用 17 个合成实例,另在六个留出数据集上评估程序运行时间;Dream-RSI 与固定探索均进行 5 个递归轮次。正确性检查与计时实例分开;附录以相对 sklearn 的目标函数值容差检查结果,通过后才计入有效搜索分数。

论文图 3(a) 中,与各自相同模型的固定策略相比:

模型与方法 发现调用次数 ↓ 六个留出集平均运行时间,ms ↓
Gemini-3.1 Pro,固定策略 550 3587.1
Gemini-3.1 Pro,Dream-RSI 317 2931.0
Gemini-3.7-Flash,固定策略 3200 2516.7
Gemini-3.7-Flash,Dream-RSI 1879 2350.6

由表中数值计算,Pro 设置少用 233 次调用,减少约 42.4%;平均运行时间减少 656.1 ms,降低约 18.3%。Flash 设置少用 1321 次调用,减少约 41.3%;平均运行时间降低约 6.6%。原文 §4.1、图 3

有两个影响结论范围的细节:

  • 平均值并不代表每个数据集都提升。 Pro 版本在 RCV1 上从 19550.1 ms 降到 14616.0 ms,但在 Gisette 上从 1861.8 ms 升到 2841.0 ms;其余四个留出集也没有优于对应固定策略。原始毫秒的算术平均容易被耗时最大的任务主导。
  • 约 162 倍是跨方法的调用次数比。 SimpleTES 的报告预算为 51200 次,\(51200/317\approx161.5\);它使用的模型也不同。这不能解读为同配置总费用降低 162 倍。更直接的受控比较是 \(550/317\approx1.74\)。

还需区分搜索目标与下游汇总:附录 A 的 Lasso 搜索分数是计时实例运行时间几何平均的倒数;上表则报告六个留出数据集的平均毫秒数,两者不是同一个统计量。附录 A

4.2 数学发现:一项更好,一项持平,一项略差

Dream-RSI 与固定探索在这些任务上都使用 Gemini-3.1 Pro,经 Gemini CLI 执行 10 个递归轮次。以下保留原文表 1 的指标方向。这些任务的目标与量纲不同,不宜再合并成一个简单平均分。

方法 Sum–Difference ↑ Autocorrelation ↓ Circle Packing ↑
SimpleTES 1.143975 1.453675 2.635983
固定探索 1.144047 1.456001 2.635983
Dream-RSI 1.145427 1.456375 2.635983

相对固定探索,Dream-RSI 的 Sum–Difference 高 0.001380;Circle Packing 在报告精度下持平;Autocorrelation 的数值高 0.000374,按该列“越低越好”的方向看,表现略差。论文报告其数学任务使用少于 1000 次生成,而 SimpleTES 的对比预算是 51200 次。原文 §4.2、表 1

这些结果支持“在较少调用下取得有竞争力的结果”,不能概括成“所有数学任务都取得更优解”。

4.3 GPU kernel:两种收益需要分别表达

在 KernelBench 的四个选定任务中,论文使用通过正确性检查后的运行时间倒数 \(1/\mathrm{ms}\) 作为性能指标。

任务 原文图 4 报告的比较 应如何理解
VGG16 相近性能时,生成次数比为 2.43 倍 达到目标所需探索更少
LayerNorm 相近性能时,生成次数比为 1.79 倍 达到目标所需探索更少
ConvDiv 相近发现预算时,性能比为 2.09 倍 找到的程序运行更快
ConvMax 相近发现预算时,性能比为 1.44 倍 找到的程序运行更快

前两项是发现效率,后两项是产物性能。它们来自四个代表性任务,并非整个 KernelBench 的统一平均提升。原文 §4.3、图 4

5. 最有价值的创新:把历史变成可比较决策的材料

本文认为,最值得迁移的思想是将过去的执行结果组织成可以反复测试控制器的接口。只有日志文本时,人或 Agent 可以总结经验;有了可回放结构,还能比较某条策略在相同历史上的质量、工作量与并行行为。

这对 Agent infra 的启发相当具体:每次执行记录除了最终分数,还应保留父节点、工作区版本、错误分类和观察顺序。否则,后续很难判断某次成功是从哪里继承来的,也无法限制控制器只使用当时可见的信息。

论文 §5.1 在 ConvDiv 上比较了将历史提炼为方向指导、注入后续提示的做法;该设置下,加入这种显式指导反而降低了表现。作者认为过强的方向偏置可能约束探索多样性。这是一个具体设置的结果,不足以推出“语义记忆普遍无效”。原文 §5.1

§5.2 还展示了探索量随轮次变化:先从 110 次尝试下降至 50 次,后续遇到平台期又增加投入。它说明控制器能够改变资源分配;是否稳定优于更强的手写自适应调度器,仍需要更多对照。原文 §5.2

6. 边界与改进:历史上的好调度,怎样变成未来的好调度?

作者在方法定义中明确将回放限制在已实现的搜索空间。下面几项是本文基于这一机制的分析与改进建议,不是论文已经验证的结论。

6.1 固定历史会遗漏什么?

最明显的遗漏是未探索分支:历史里不存在的结果无法被回放评估。还有更隐蔽的遗漏——改变探索顺序,可能改变 coding agent 读到的历史上下文,从而改变它后来生成的代码。附录 B.1 的在线提示要求 Agent 阅读已有尝试,这使跨分支上下文尤其值得注意。

建议:将离线排名靠前的若干控制器放到全新在线轮次,用多随机种子比较。观察离线排名与在线质量—成本排名的相关性,同时保留未用于开发的历史树。代价是额外在线预算,但这正是检验回放代理指标是否可信所需的成本。

6.2 只看前缀,是否就不会过拟合?

前缀限制防止运行中的控制器直接偷看未来结果,却不能阻止开发过程反复调策略,逐渐适配这批固定历史的特征。候选策略数量越多,反复选最大值的乐观偏差越值得关注。

建议:按完整搜索轮次划分开发集与验证集,并采用时间顺序留出。记录候选数、选择前后的验证分差以及多次在线运行的方差。不能随机拆散同一条父子链,否则仍可能共享大量近似信息;代价是可用于开发的历史变少。

6.3 并行计数与真实系统成本还有距离

一次“尝试”可能只花几秒,也可能触发长时间编译和 GPU 测量。平均批次占用无法完整表达慢任务拖尾、资源争用、缓存与任务启动开销。此外,修改策略的开发 Agent、历史读取和模拟器维护也消耗资源。

建议:为每次尝试记录 token、GPU 时间、墙钟耗时和失败重试,报告达到同一质量的总成本。先用这些测量值建立更真实的回放成本,再在线验证。测量与版本管理会增加工程复杂度,硬件噪声也需要重复运行来估计。

6.4 目标函数会不会奖励错误行为?

主文公式对并行度给正奖励,因此系数设置与分数尺度会影响行为。若分数的尺度变了而成本系数没变,策略可能过早停止,或为凑批次投入不值得做的尝试。附录使用质量—工作量曲线,有助于观察权衡,但也需要明确归一化和计分实现。

建议:在多个成本权重或预算下展示完整前沿,并加入“有限预算内最好质量”和“达到目标质量所需总成本”两种评估。风险是评估开销增加,且不同目标可能选出不同控制器;这比仅报告一个综合分更有助于部署决策。

6.5 目前能复现到哪一步?

截至本文核对日期,官方仓库的完整代码、发现程序和复现脚本仍标注为准备发布。论文附录 C 已给出一个发现的 Lasso solver,但单个产物代码不能替代整套递归探索流程的复现。主文与附录在目标及动作表示上的差异,也需要实际实现来确认。官方仓库与发布计划

因此,本文完成的是论文机制和数值核对,没有声称复跑了论文实验。

7. 从 Agentic RL 与系统实现的角度,怎样理解它?

Dream-RSI 借鉴了“从经验构造模拟环境,再改进策略”的思路,但具体学习载体是由 LLM 修改的控制器程序。阅读时可以将几类组件分清:

组件 此文中的对应物 主要职责
任务执行器 固定的 coding agent 生成或修改候选程序
任务评估器 正确性检查与性能测试 提供分数、错误与诊断
策略 可执行探索控制器 选择分支、深度、批次与停止
回放环境 冻结的历史搜索记录 按接口揭示已经发生的结果
策略开发器 固定的 LLM 开发 Agent 依据回放反馈修改策略代码

与常见的神经网络策略训练相比,这条路径没有要求对 coding agent 做梯度更新。与能够预测新状态的生成式世界模型相比,它依赖的结果都来自历史观测。“Evolving Worlds” 可以理解为历史模拟器池随着真实探索不断扩充。

若要先实现一个学习用原型,本文建议从三个可检查的接口开始:不可变的轨迹存储、仅暴露已观察前缀的回放器、返回合法批次的控制器。先用本文的小树验证父子依赖、状态重置和成本计数,再把真实执行器接入。这是学习建议,不是官方复现脚本。

对于未来结果不可重复、上下文依赖很强的任务,还需要额外在线验证;不能只凭回放分数就认为系统已经学会了更好的通用探索。

8. 读者应记住什么?

  • 改进对象是探索策略代码。 要理解它,就追踪谁分配计算,而不只关注谁写最终程序。
  • 历史回放降低了比较策略的边际成本。 这个优势成立在已记录结果范围内,新的知识仍需真实探索。
  • 实验收益有不同口径。 调用节省、产物运行速度和总系统成本,应分别测量。
  • 离线选优需要在线兑现。 同一历史池上分数不下降,不构成未来发现质量持续上升的保证。

进一步阅读:论文版本页、v1 完整正文与附录、官方仓库、项目页面。


Dream-RSI:把搜索历史变成可回放的世界,让 Agent 改进探索策略
https://kissshhot.github.io/2026/09/23/dream-rsi-replay-exploration/
作者
丁一帆
发布于
2026年9月23日
许可协议

点赞与评论

喜欢这篇文章?点个赞,或留下你的想法。登录 GitHub 后即可参与。

如果评论无法加载,请检查网络连接后刷新页面。