探索策略太贵没法调?Dream-RSI 让智能体在"历史回放"里做梦,把策略改进成本打到接近零
你有没有碰到过这种情况:让 AI 智能体去做开放式探索——比如自动发现一个新算法、解一个数学构造问题、写高性能 GPU kernel——跑着跑着你发现,真正烧钱的不是"生成候选解",而是"决定往哪儿探索"。探索策略一旦定死,几万次调用砸进去可能全打了水漂;想在线调策略吧,每条策略都要跑完一整轮长程 rollout 才知道好不好,反馈又慢又贵。
这篇 Dream-RSI(arXiv:2609.14858)给我的第一印象是:它把强化学习里 World Model / Dreamer 那套"在想象中学策略"的思想,搬到了一个完全不用训练模型的地方——已经跑完的探索历史本身就是一台回放模拟器。这个视角转换挺漂亮的。
🎯 核心摘要
长程科学发现类任务(算法设计、数学优化、kernel 工程)的核心瓶颈已经从"生成能力"转移到"探索编排"。固定探索策略无法从经验中学习,在线优化策略又面临反馈延迟、元策略空间巨大两大难题。Dream-RSI 的做法是:把每次在线探索产生的发现树(discovery tree)存下来,当作一台零执行成本的回放模拟器;然后让策略开发 agent 在这台模拟器上"做梦"——一口气评估成百上千个候选探索策略,改出最好的那个再部署上线。整个过程只改探索策略代码,底层 coding agent、评估器、模型全都不动。效果上:Lasso 算法发现任务比固定探索省 1.7 倍调用量且效果更好,比 SimpleTES 省最多 162 倍;GPU kernel 任务上省 1.79–2.43 倍生成数或同预算下性能高 2.09 倍。我的定位:这是一篇"框架洞察 > 技术复杂度"的论文,idea 简单但踩在点子上,值得做 agent 系统的人细读。
📖 论文信息
- 标题:Dream-RSI: Recursive Self-Improvement through Evolving Worlds
- arXiv:https://arxiv.org/abs/2609.14858 (2026 年 9 月 14 日提交,cs.CL)
- 作者: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(17 人)
- 机构:HTML 版本显示的署名单位包括 University of Maryland, College Park、Google DeepMind、University of Virginia(部分作者单位在源码中未正确渲染)
- 代码:github.com/zhengkid/Dream-RSI,项目主页 dream-rsi.com
🤔 问题动机:探索策略是 RSI 里最贵的一环
递归自我改进(RSI)这两年很热,AlphaEvolve 这类系统已经证明了"生成—评估—反馈—改进"循环的威力。但当搜索空间变大、发现一轮要跑几千次 proposal–evaluation 循环时,一个之前被忽视的问题浮出水面:探索策略本身成了瓶颈。
现有系统基本分两派。一派是固定策略——手工设计一套"开几个并行分支、每条分支迭代几步"的规则,全程不变。问题很明显:策略不会从经验里学习,会反复把算力砸向已经证明无效的方向。另一派想在线优化策略,比如 EvoX 直接在发现过程中进化搜索策略。但这条路有两个硬伤:
- 反馈延迟且昂贵:评价一条探索策略好不好,不是看单个候选解,而是要看它塑造的整段发现过程——意味着每条候选策略都要跑完一整轮长程 rollout 才能拿到反馈。
- 元策略空间巨大:新策略大概率不好,要试很多条。每条都贵,组合起来就是天文数字。
作者的直觉用一句话说:如果有一台又便宜又快的"发现过程模拟器",就能在部署前把大量候选策略都试一遍。而这样的模拟器,其实已经躺在你历史日志里了。
这个类比其实来自 model-based RL。Dreamer 系列(Hafner 的工作)让 agent 学一个环境动力学模型,然后在想象轨迹里改策略。Dream-RSI 的对应物更直接:一棵跑完的 discovery tree,记录了每个节点的工作区快照、生成的产物、评估诊断、分数。一条"替代策略"想在这棵树上走一遍?不用重新执行任何代码,把存好的结果按新策略的选择顺序"揭晓"出来就行。一次昂贵的在线运行,变成成千上万次零执行成本的离线评估。
说实话,看到这个类比的时候我停了一下——它听起来太顺了,顺到让人怀疑是不是有坑。后面实验部分我会聊这个坑在哪。
🏗️ 方法核心:三阶段循环

图1:Dream-RSI 总览。系统跑在一个递归自我改进循环里:① Online Explore——当前探索策略指导 coding agent 扩展发现树并记录历史轨迹;② Construct Replay Simulator——把发现树转成可复用的模拟器池;③ Dreaming-based Policy Improvement——agent 在"脑海"里生成海量候选策略,喂进回放模拟器拿到快速反馈,持续打磨(见 Zoom-in 框的 Propose → Evaluate → Store 小循环)。更新后的策略重新部署,开始下一轮在线探索。
整个系统有一个很关键的工程决策:探索被显式化、可编程化了。探索策略不是埋在 agent prompt 里的隐式行为,而是一份可执行的策略代码,由一层轻量编排层控制分支、并行度、停止条件;底层 coding agent 一个字不改。这样"改策略"就变成了"改代码",可以被 agent 自己写、自己评。
发现树与决策接口
发现树以根节点 \(r\)(初始工作区)为起点,每个非根节点 \(v\) 有唯一主父节点,记录从父节点工作区出发的一次"生成—评估"尝试的完整结果:文件系统快照、产物、诊断信息、分数 \(s_v\)(越大越好)。
策略能做什么动作?观察到当前树 \(\mathcal{T}\),可选节点集合是根加所有叶子 \(A(\mathcal{T}) = \{r\} \cup \{v \in \mathcal{T} : v \text{ is a leaf}\}\)。有 \(W\) 个并行 worker,策略每轮选一个批次 \(C \in A(\mathcal{T}; W)\),即决定"从哪些节点继续探索、一次并行发几个"。在线和离线共用同一套接口,区别只在转移方式:在线是真跑,离线是查表。
回放目标:质量、成本、并行度的三元平衡
离线回放时,策略在已记录的树上被"重新执行":选中的节点返回它已存好的子节点(确定性回放,不产生新结果),直到策略主动停止、达到轮数上限 \(K_2\)、或整棵树被揭晓完。回放评分长这样:
三个项分别管:回放中拿到的最好解质量、消耗的"生成—评估"次数惩罚、以及平均每决策轮并行尝试数的奖励(鼓励把有用的延续打包成并行批次,而不是串行磨蹭)。\(\beta_1, \beta_2\) 是固定系数。
策略改进环节则由一个 LLM 策略开发 agent 负责:它看候选策略在各棵历史树上的回放轨迹和分数,识别成功决策和反复失败的模式,然后改写策略代码。每个外层迭代离线改 \(M\) 版,最后从所有版本里选平均分最高的部署。一个不错的性质:候选集里包含当前策略本身,所以新策略在固定历史上的回放分保证不差于当前策略——至少在这个代理指标上是单调不降的。
注意这个保证只是"在已见历史上的回放分"不降,真实在线表现是另一回事。历史树只覆盖了已实现的搜索空间,新策略如果想探索历史里完全没有的分支,回放是给不出分数的。这就是我前面说的那个"坑":回放模拟器天然偏向利用(exploitation),对真正新颖方向的评估是盲的。论文没有正面讨论这个覆盖度问题,算是我觉得可以追问的地方。

图2:发现历史作为回放模拟器。已部署策略先在线探索生成结构化的发现树(每个节点是一次带完整观测的尝试);之后成千上万条候选策略可以在模拟器里测试——换分支选择、换探索顺序、换并发度、换停止规则。因为所有节点结果都预存了,一次昂贵的在线运行支撑成千上万次零执行成本的离策略评估。
🧪 实验:三个领域,8 个任务
实验设置先交代清楚。受控基线是 Recursive Fixed Exploration:和 Dream-RSI 用完全相同的 discovery agent、评估器、初始化和资源约束,唯一的区别是探索策略从头到尾固定。两个方法第一轮行为完全一致,之后才分道扬镳——这个对照设计是干净的,值得肯定。发现成本用累积 discovery-agent 调用次数衡量。模型用 Gemini-3.1 Pro(每轮 10 并行工作区 × 11 步 = 110 次调用)和 Gemini-3.7-Flash(32 × 20 = 640 次调用)。
算法工程:Lasso 正则化路径求解器
任务是发现完整的 Lasso 正则化路径高效实现(SimpleTES 的基准设置),17 个合成实例上做发现,6 个 held-out 下游数据集上测泛化。结果(数值越低越好):
| 方法 | 模型 | 调用次数 | 平均运行时 (ms) |
|---|---|---|---|
| sklearn | – | – | 44180.3 |
| glmnet | – | – | 13767.5 |
| SimpleTES | gpt-oss-120b | 51,200 | 3804.8 |
| Recursive Fixed Exploration | Gemini-3.1-Pro | 550 | 3587.1 |
| Dream-RSI | Gemini-3.1-Pro | 317 | 2931.0 |
| Recursive Fixed Exploration | Gemini-3.7-Flash | 3200 | 2516.7 |
| Dream-RSI | Gemini-3.7-Flash | 1879 | 2350.6 |
几个值得说的点。Dream-RSI 在两种骨干模型上都同时做到"更省"和"更好":Pro 版省 1.7 倍调用还降了 656ms 平均运行时;对比 SimpleTES 的 51200 次生成,Dream-RSI 用 317 次拿到更低的平均运行时——162 倍的差距,这个数确实很能打。发现的求解器本身也有意思:不像 SimpleTES 那样按问题维度在 LARS 和坐标下降之间切换,它把自适应性做进了 active-set 优化内部——strong-rule 筛选加基于 Cauchy–Schwarz 的 KKT 剪枝,只在界无法证实特征时才重算精确梯度,配合惰性 Gram 矩阵构建和硬件感知实现。
不过我也得泼点冷水:6 个下游数据集里,Dream-RSI (Pro) 在 DNA、Leukemia 等生物数据集上的单项运行时(49.9/30.2/16.4/32.5)其实比 Fixed Exploration(41.5/26.1/14.5/28.4)略差,平均值是被 RCV1 上的大幅领先(14616 vs 19550)拉下来的。论文自己也提到 Pro 发现的程序"特别适合 RCV1 这种大规模矩阵"。所以"全面超越"谈不上,更准确的描述是"在大规模实例上优势显著"。
数学优化:三个经典构造任务
Sum–Difference、Autocorrelation Inequalities、Circle Packing,跑 10 轮,对比 AlphaEvolve、AlphaEvolveV2、OpenEvolve、CodeEvolve、ShinkaEvolve、TTS-Discovery、ThetaEvolve、EvoX、SimpleTES 一大票系统:
| 方法 | Sum Diff ↑ | Auto Corr ↓ | Circle Packing ↑ |
|---|---|---|---|
| AlphaEvolve | – | 1.455700 | 2.635862 |
| AlphaEvolveV2 | 1.121936 | – | 2.635983 |
| OpenEvolve | – | 1.460000 | – |
| ShinkaEvolve | – | 1.457800 | 2.635982 |
| EvoX | – | 1.458900 | 2.635900 |
| SimpleTES | 1.143975 | 1.453675 | 2.635983 |
| Recursive Fixed Exploration | 1.144047 | 1.456001 | 2.635983 |
| Dream-RSI | 1.145427 | 1.456375 | 2.635983 |
这块的结论是"打平或略优":Sum Diff 上拿到对比方法里最好的 1.145427;Circle Packing 的 2.635983 和好几个方法并列(这个值可能已经接近该问题的已知上界,区分度不大);Auto Corr 上 SimpleTES 仍是 SOTA(1.453675),但人家烧了 51200 次生成,Dream-RSI 不到 1000 次。坦白讲,这张表里最值钱的不是名次,而是预算差了两个数量级还能留在牌桌上。
GPU kernel 工程:KernelBench
四个任务(VGG16、LayerNorm、ConvDiv、ConvMax),评估指标是逆运行时间 \(1/\mathrm{ms}\),要过正确性检查。这个领域的难点在于要同时推理算法结构、内存访问、并行化和硬件特定优化,和数学发现是完全不同的测试床。
结果分两类:VGG16 和 LayerNorm 上,Dream-RSI 用 2.43 倍和 1.79 倍更少的生成数达到可比性能;ConvDiv 和 ConvMax 上,同预算下性能高 2.09 倍和 1.44 倍。kernel 优化这种评估噪声本来就比较大的领域,这个提升幅度是值得注意的。
🔬 两个有意思的分析实验
历史归纳偏置反而帮倒忙。 一个自然的替代方案是:别搞回放了,直接把历史轨迹抽象成"高层方向性洞察"塞进 prompt 当语义指导。论文在 ConvDiv 上测了,结果是加了 guidance 的版本(无论 Fixed 还是 Dream-RSI)一致地差于不加的版本。作者的解释是:长程发现里多线程并行探索,强加关于未来方向的语义偏置会过度约束搜索空间、扼杀多样性。这个结果我挺喜欢——它说明"把历史用起来"的方式很讲究,显式指令不如隐式结构。
策略真的会"看人下菜"。 ConvDiv 上追踪了 9 轮递归执行里策略行为的演化:round-best 性能从 0.427 一路涨到 1.898,而每轮评估的尝试次数先从 110 降到 50(性能爬升期,策略学会省算力), plateau 之后又回升到 90 上下(加大探索力度,随后性能继续涨)。这个"该省省、该花花"的 adaptivity 正是固定策略做不到的事,也是这篇论文最直接的存在性证明。
💡 我的判断
这篇论文最值钱的地方在于视角转换:把 discovery history 从"静态上下文"升级成"可交互的回放模拟器"。之前的工作要么把历史当 prompt 里的文本(Memory 那一路),要么当微调数据(TTS-Discovery、ThetaEvolve 那一流),Dream-RSI 是把它当环境模型用——不重训权重、不动 agent,纯靠结构化回放就把元策略优化从在线试错变成了离线评估。工程上这个改动很小,洞察层面我认为是实打实的。
但几个问题也得说清楚。第一,回放的覆盖度天花板:模拟器只能评估"已探索空间内的替代走法",对全新方向的策略它是瞎的。论文里策略改来改去其实都在调分支选择、顺序、并发、停止这类"调度参数",没有触及"去哪儿找新分支"这种真正的探索创新。第二,回放是确定性的,在线执行却是随机的——同一个父节点再跑一次未必得到同样的孩子。回放分和在线表现之间有多大 gap,论文没量化。第三,对照实验做得干净,但 Baseline 阵容里固定探索是唯一的受控对照,和 SimpleTES 等系统的对比隔着不同模型和预算,严格说不能算 apples-to-apples。
对工程的启发倒是很直接:如果你在做 agent 驱动的长程搜索系统(AutoML、自动 kernel 优化、自动化科研),把所有尝试的完整轨迹结构化存下来,这个习惯本身就是资产。哪怕不上 Dream-RSI 这套完整的做梦循环,单是"可以在历史上离线评估调度策略"这一条,就能帮你省掉大量盲目线上试错的预算。世界的每一次演化都会变成下一轮改进的训练场——这个"evolving worlds"的闭环,我觉得会是 agent 自我改进系统的一个标配组件。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我