优化器即智能体:把进化搜索、Bandit 和文本梯度全部扔掉,一个 Agent 端到端搞定 Prompt、代码和训练流程优化
做自动 Prompt 优化或者代码演化的人,大概都写过这样的外层循环:采样一批候选、跑评估、按某种启发式规则(Pareto 前沿、UCB、进化选择)挑父代、让 LLM 变异、再跑评估……LLM 在这个循环里的角色很固定——就是个"变异器",真正决定搜哪里、搜多久、什么时候放弃的,是那个硬编码的外部控制器。
上周刷到 arXiv 2608.06714 这篇 ReASearch,我第一反应是:终于有人正面挑战这个设计了。作者问了一个非常直接的问题——搜索策略本身,能不能全部内化进一个会用工具的推理 Agent? 不要进化算法,不要 Bandit,不要文本梯度,就把评估、编辑、验证这些操作打包成工具,让 Agent 自己决定下一步干嘛。
说实话,看到摘要里"2% 到 40% 的提升、部分任务超越人类已知最优"的时候,我是有点怀疑的。但把正文和附录里的 Agent 轨迹翻完,我觉得这篇论文最值钱的不是涨点,而是它证明了一件事:那些我们以为必须用算法实现的搜索行为——双重验证、回退、自适应探索——居然能从推理过程中自然涌现。
核心摘要:现有 LLM 优化系统(DSPy、GEPA、AlphaEvolve 这一挂)都把战略性搜索决策放在模型外部的硬编码控制器里,LLM 只负责提语义编辑。ReASearch 反其道而行:用一个共享的 controller-light Agent 循环,把评估、诊断、编辑、验证、回退全部工具化,让 Agent 自主决策搜索全程。同一套脚手架不换 Agent 设计、只换工具和 system prompt,就能优化 Prompt、程序和 ML 训练流程三大类任务。14 个任务上对齐预算后持续打平或超越领域专用系统,Circle Packing 在 n=26 和 n=32 两个规模上刷新了人类已知最优解。这是一篇定位清晰、证据扎实的系统论文,COLM 2026 收录,值得细读。
📖 论文信息
- 标题:The Optimizer Is the Agent: Reasoning-Driven Search across Prompts, Programs, and ML Workflows
- 作者:Junbo Li, Boyi Liu, Canwen Xu, Yite Wang, Yuxiong He, Zhangyang Wang, Qiang Liu, Zhewei Yao
- 机构:The University of Texas at Austin;Snowflake
- 链接:https://arxiv.org/abs/2608.06714 (COLM 2026)
- 提交时间:2026 年 8 月 7 日
🎯 问题动机:LLM 当了三年变异器,该转正了
先把问题形式化一下。设 \(\mathcal{Z}\) 是文本工件空间(prompt、程序、训练配置都行),给定任务分布 \(\mathcal{D}\),目标是找:
如果任务与具体输入无关(比如算法发现、几何构型优化),外层期望消失,退化成单纯最大化工件自身的奖励。
这个搜索问题的难点在于:空间巨大、离散,但工件本身有丰富的语义结构。传统黑盒优化(贝叶斯优化、进化算法)用不上语义;于是过去三年的主流范式是"LLM 提供语义编辑 + 外部控制器管搜索"——TextGrad/DSPy 用文本梯度,GEPA/EvoPrompt 用进化选择,AdaEvolve 用 Bandit,AlphaEvolve 那一系用演化规划。
方法五花八门,但有一个设计假设从来没人挑战过:从哪个候选分支、跑哪些评估、预算怎么分、停滞了怎么办——这些决策全在模型外面。LLM 只是在固定循环里打一份工。
这篇论文问:如果把评估和编辑都暴露成工具,一个推理 Agent 靠想,能不能把这些决策全做了?

图 1:方法定位图。横轴是自治程度(从顺序流程、树搜索到 Harness/Skill),纵轴是泛化性与性能。左下是 Workflow-based 方法(ADAS、OPRO、TextGrad、DSPy、GEPA、AlphaEvolve、AdaEvolve 等,本质是预定义的搜索流程),右下是 Agent-based 方法。ReASearch 处在"白盒 Agent"的位置——执行、观察、推理、搜索全部内化,而 AutoResearch 系列更接近黑盒。红星标出了它想占的甜点:泛化性和性能两头都要。
🧠 方法核心:一个不写死任何搜索逻辑的 Agent 循环
一句话讲清核心思路:把优化问题重写成序列决策问题,所有优化原语做成工具,搜索策略让 Agent 边推边定。

图 2:左边是现有方法——LLM 被包在一个"提议→评估→反馈→父代选择"的固定回路里,外面套着 Pareto、Bandit、贝叶斯、反向传播这些写死的启发式,机器人一脸生无可恋。右边是 ReASearch——Agent 自己握着 Basic I/O、Python、探索/利用、搜索树读取、教训总结这些工具,自主选择动作。画风有点萌,但对比是准确的。
架构:两个接口注入任务知识
Agent 循环本身极简:文件 I/O + Python/Bash 执行 + 轻量记忆模块。每轮 Agent 收到 system prompt(编码领域指导 + 当前优化状态)和交互历史,然后自己决定调哪个工具。
关键设计是任务无关性:任务特定信息只通过两个接口进入——工具集 \(\mathcal{A}_{\mathcal{T}}\) 和任务专属 system prompt。所以优化 prompt、程序、训练脚本用的是同一个 Agent,只换工具和提示词。
这里面有个我觉得被低估的设计:python_exec 的地位。论文说得挺到位——它把 Agent 从"纯文本推理者"变成"计算推理者",能写分析脚本、对评估日志算统计、用程序识别失败模式。后面实验会看到,超过 70% 的工具调用都是 Python 推理,这不是巧合。
记忆:lessons.md + 上下文压缩
长程优化跑几百上千轮,上下文肯定爆。ReASearch 的方案是双层记忆:
- 上下文压缩:token 用量超过阈值(默认 90,000)自动触发,把完整 transcript 存盘后压缩成 3 条消息——权威状态快照(预算、分数、候选)、对话摘要、lessons.md 内容;
- lessons.md 持久文件:Agent 在 workspace 里维护一个"什么有效、什么失败、下一步试什么"的教训文件,压缩后自动注入新上下文,还能用
--lessonsflag 跨运行预加载。
消融里有个反直觉的发现:这个简单的三段式 schema 已经够用,比更丰富的任务特定记忆指令有时还好约 1 个点——更复杂的指令反而会鼓励僵化和含噪的摘要。少即是多。
真正承重的设计:状态每轮重发
论文附录 F 有个我很喜欢的分析。他们跟 Claude Code 做了对比实验,两侧指令内容实质相同,但分数差一大截。差距来源不是"告诉了 Agent 更多内容",而是内容放在哪、以什么频率出现:
- 目标和指标每轮重新渲染,Agent 不用自己从文件里推导;
- 最近 20 个实验以结构化表格每轮呈现(父代、指标、状态、描述),解决 1,800+ 轮长运行中"重复尝试已证伪方案"的问题;
- lessons.md 跨压缩保留失败的"原因";
- 停滞建议在 3 次、7 次持平评估后无条件直接插入 prompt——因为卡在平台期的 Agent 往往根本想不到该调诊断工具;
review_search_tree把扁平历史变成分支集中度、家族分布、平台信号的结构化视图。
论文里那句话总结得很狠:提升来自让搜索状态"不可避免",而不是"可获取"这件事。 Skills 和 MCP server 不够,因为它们只在 Agent 想起来调用时才运行——而这恰恰是平台期和长程任务里最容易失败的环节。说实话,这个洞察对做 Agent 脚手架的人来说,可能比 ReASearch 本身还值钱。
🔧 三个领域,同一套循环
Prompt 优化
任务是给学生模型优化 system prompt。以往 pipeline 是写死的"采样 minibatch→改 prompt→验证"循环,ReASearch 把每一步变成工具:get_next_minibatch 让 Agent 自己选 batch 大小,call_student_model_batch 可以在困难样本上小成本试草稿(看完整轨迹),validate_candidate 只返回聚合准确率(故意不给逐样本轨迹,防过拟合验证集)。
最终 prompt 的选择也不取验证分最高的候选——优化结束后让 Agent 基于完整历史推理选择,甚至合成一个新 prompt。这个设计在小数据场景(AIME、Terminal-Bench)很关键:AIME 上 Agent 最后提交了一个没验证过的合成 prompt,测试集 52.0%,反超最佳验证 prompt 的 49.3%。

图 3:一条真实的 prompt 优化轨迹可视化。上面是主循环:随机 batch + 历史困难样本喂给训练评估(看完整轨迹),python_exec 扫错误、对比运行,出新提案,完整验证只给聚合指标。中间是抗方差验证:复查赢家、找跨 batch 稳定性模式、探测边缘案例——目标是"真实的提升,不是运气好蒙中的"。下面是最终选择:v7 验证分 63.0% 但 v9 更稳、困难案例上更好,Agent 选了 v9。整个过程没有任何硬编码步骤。
程序演化
针对单个困难问题优化程序——Circle Packing、Heilbronn 三角、ARC-AGI-2、系统编程。工具上有个聪明的拆分:edit_code 把编辑请求路由给独立 subagent 执行,保持主 Agent 上下文干净;而高层分析和诊断刻意留在主 Agent 里,保住跨轮的推理上下文。

图 4:两个领域共享的循环——Agent 先用 python_exec 检查中间行为、隔离测试子组件,想清楚了再把定向编辑委托给 subagent,执行评估后从结果里提炼模式、失败和瓶颈。底部四个标签概括了行为特征:探索多样策略、检查中间行为、委托编辑给 subagent、识别模式与瓶颈。
ML 工作流优化
覆盖 NanoGPT 语言建模、图像分类、Atari/MuJoCo 强化学习、Kaggle 竞赛。Agent 直接读训练代码,用 run_experiment 跑限定时长的实验(5–30 分钟),观察训练动态,然后决定改哪里——超参、学习率调度、正则化、架构、优化器都行。跟黑盒超参搜索的区别在于,它能推理代码,所以修改是有针对性的。
📊 实验:14 个任务,对齐预算硬碰硬
每个设置跑 3 次独立运行报平均。Prompt 优化用 Claude Sonnet 4.6 当 Agent,程序演化用 GPT-5 和 Sonnet 4.6 双 backbone,ML 工作流直接跟 Claude Code 官方 AutoResearch 设置对比(训练脚本、数据、评估器、硬件、单次训练上限完全相同,连 wall-clock 预算都对齐——这个对照设置算是相当克制了)。
Prompt 优化(Table 1)
| 方法 | AIME ↑ | GSM8K ↑ | HotpotQA ↑ | Terminal-Bench 2.0 ↑ |
|---|---|---|---|---|
| Baseline | 46.00 ± 1.33 | 81.20 ± 0.38 | 63.00 ± 1.50 | 35.56 ± 1.48 |
| GEPA | 50.67 ± 1.15 | 82.11 ± 0.45 | 65.80 ± 0.80 | 42.22 ± 1.28 |
| ReASearch | 52.00 ± 0.67 | 83.40 ± 0.30 | 67.60 ± 0.50 | 53.33 ± 1.96 |
四个任务全面超过 GEPA。Terminal-Bench 上 53.33 对 42.22,11 个点的差距。而且一次完整运行 API 成本不到 20 美元,跟 GEPA 公开报告的成本相当——预算是对齐的,不是砸钱砸出来的。

图 6:Terminal-Bench 验证准确率随提案数量的变化。GEPA 第 2 个提案后基本躺平在 40% 附近,ReASearch 前两轮还落后,第 3 轮跳到 63%,最终稳定在 71% 左右。起步慢是因为 Agent 先花时间建任务理解,后面是复利。
程序演化:刷新人类已知最优
Circle Packing(Table 2)上,ReASearch + Sonnet 4.6 在 10 个规模(n=23 到 32)上全部打平或超过人类已知最优,其中 n=26(2.636 vs 2.635)和 n=32(2.940 vs 2.939)严格超越。AdaEvolve 同预算下没有一个规模达到人类水平。
Heilbronn 三角(Table 3)类似:n=12 到 n=14 追平或逼近人类最优,AdaEvolve 在 n=14 上直接崩到 0.00299。
系统编程(Table 4)有点意思:EPLB 上 ReASearch + GPT-5 拿到 0.2305,比最强的 AdaEvolve + GPT-5(0.1976)高约 17%;但 TXN 上 Shinka 的 4329 仍是最高,ReASearch 没赢。不是所有任务都赢,这点论文没藏着。
ARC-AGI-2(Table 5)差距最夸张:
| 方法 | 模型 | Train acc ↑ | Test acc ↑ |
|---|---|---|---|
| AdaEvolve | GPT-5 | 20.8% | 5.0% |
| AdaEvolve | Sonnet 4.6 | 21.9% | 12.5% |
| ReASearch | GPT-5 | 35.0% | 11.7% |
| ReASearch | Sonnet 4.6 | 85.0% | 50.0% |
50.0% 对 12.5%,4 倍。论文给的解释很具体:有 22 个任务 ReASearch 测试满分而 AdaEvolve 低于 0.5,模式高度一致——AdaEvolve 学会了"近似正确"的模型(单元格准确率 90–99%),但结构性假设错了,未见输入上直接死。ReASearch 靠 python_exec 先花十几轮分析任务结构(比如 Task 72 用 31 轮确认规则是带整数中心平局处理的左右对称),想明白了再写代码。
ML 工作流:对刚 Claude Code(Table 6)
| 方法 | NanoGPT ↓ | IMG-100 ↑ | Atari Q*bert ↑ | MuJoCo ↑ | Crypto ↑ |
|---|---|---|---|---|---|
| Baseline | 0.998 ± 0.006 | 63.51 ± 0.85 | 475 ± 90 | 1537 ± 220 | 0.0953(rank 36) |
| Claude Code | 0.974 ± 0.010 | 78.59 ± 1.40 | 1250 ± 180 | 3986 ± 410 | 0.0999(rank 29) |
| ReASearch | 0.976 ± 0.008 | 83.99 ± 1.10 | 4500 ± 320 | 5267 ± 480 | 0.1110(rank 6) |
NanoGPT 上两者统计不可区分,其余四个任务全胜。Atari 上 4500 对 1250 是 3.6 倍;Crypto 任务只用 15 次实验就把 Kaggle 私榜排名从 36 拉到第 6。


图 7:性能曲线(实线)与 token 用量(浅色线)。IMG-100 上 ReASearch 约 30 次实验内冲到 82%+,Claude Code 停在 78.6%;MuJoCo 上 ReASearch 第 17 次实验左右就锁定 5200+ 的奖励,Claude Code plateau 在 4000。注意右轴——ReASearch 用的 token 还更少。Claude Code 的 token 只能拿到终点值,所以画成线性轨迹。
消融:记忆和 Python 工具各司其职
| 方法 | AIME ↑ | Terminal-Bench 2.0 ↑ |
|---|---|---|
| ReASearch 完整版 | 52.00 | 53.33 |
| 去掉记忆 | 49.33 | 48.15 |
| 去掉 Python 工具 | 51.33 | 51.11 |
ARC-AGI-2 上反过来:去记忆降到 39.2%,去 Python 工具降到 32.5%——长轨迹 prompt 任务吃记忆,程序演化任务吃 Python 分析。还有个记忆迁移实验挺打动我:用 NanoGPT 旧运行的 lessons.md 初始化新运行,起点直接从 0.998 变成 0.977,相当于白捡了前面一大段探索。
开源 backbone 也能用(Table 9/10)
换 GLM-5 和 Kimi-2.5 当 Agent,prompt 优化上 AIME/HotpotQA 跟 Claude 版差距在 1 个点以内,Terminal-Bench 差距大些(GPT-OSS-120B 学生模型下 23.00 / 14.81 / 8.15);ML 工作流上五个任务全面小幅落后但仍远超 baseline。框架不是 Claude 专属,但 Agent 模型的推理深度确实影响上限。

图 5:三个领域的工具调用分布饼图。Prompt 优化 71%、程序演化 77% 的调用是 python_exec 推理;ML 工作流里 run_experiment 占 23%、edit_train_file 占 45%,python_exec 占比虽小但对最强结果仍关键。一句话:Agent 大部分时间在想,不在跑。
🔬 涌现行为:那些我们以前要手写算法的部分
这部分是全文我最喜欢的一节。作者系统翻了 Agent 轨迹,找出了一堆"以前得手写算法组件、现在自己长出来"的行为:
- 先建任务理解再动手:HotpotQA 上 Agent 用 python_exec 把 126 个失败案例分类——57 个回答冗长、68 个推理错误、8 个 yes/no 答案被解释污染——这个分类直接塑造了后续的 "minimum phrase" prompt 设计;
- 昂贵验证前走廉价渠道:AIME 上设计新候选后,先拿全部剩余错误跟上一候选逐一对比,确认改进"出于正确原因"才提交验证;
- 自主回退:Terminal-Bench 上 Candidate #4 验证分掉了 3 分,Agent 推理出原因,精确回退到 Candidate #3 的文本、只加一句 heredoc 格式说明,拿到全程最佳的 71.2%;
- 方差校准:HotpotQA 上重跑最佳候选分数波动 4.2 分,Agent 立刻写下"需要 3–5 分的一致提升才能确认变化是真的"——这不就是我们手写在进化算法里的显著性检验吗;
- 因果诊断的外科手术修复:EPLB 上停滞 120 轮后,Agent 诊断出瓶颈是"只允许有 2 个以上副本的 expert 捐赠"这条规则太严,临时允许捐出最后一个副本,分数从 0.21 跳到 0.23。同一任务上 AdaEvolve 卡在低 61% 的水平 272 轮没出来;
- 数学抽象坍缩搜索空间:Heilbronn n=12 上 Agent 发现最优构型有 8 重对称,把 24 维坐标形式化成 2 个自由参数,50 位精度求解。这个真的有点漂亮。
你想想看,双重验证、回退、显著性校准——这些组件在 GEPA、AlphaEvolve 里都是工程师一个个手写进去的。ReASearch 里没有任何一个被实现过,它们从"目标+状态每轮重发+工具"的组合里自己冒出来了。
💡 我的判断
亮点。这篇论文最大的贡献是把"优化系统该长什么样"的默认答案撬动了一下。它不是又发明了一个更强的外层控制器,而是论证了外层控制器可能根本不需要存在——只要 scaffolding 把状态喂得足够"不可避免"。实验设置也克制:预算对齐、3 次运行报均值、跟 Claude Code 的对比连硬件和训练上限都拉平,还老实报告了 TXN 上没赢 Shinka。
几个保留意见。其一,天花板明显依赖 Agent 模型本身的推理能力——开源 backbone 的 Terminal-Bench 结果掉得挺狠,这套方法的红利和强模型深度绑定。其二,Sonnet 4.6 在 ARC-AGI-2 上 85% 的训练准确率对 50% 的测试准确率,泛化 gap 不小,"先分析后写代码"是否在所有谜题类型上都成立,我持观望。其三,每轮重发状态的 token 开销虽然总量更少,但这是拿 Agent 推理换评估次数,在评估便宜、推理贵的场景未必划算。还有个小地方我没完全想透:最终 prompt 由 Agent 自由合成且不经验证,AIME 上赌赢了,但这个机制本身是引入了一个新的无约束决策点,运气成分恐怕不低。
对工程的启发是实打实的。如果你在做 Agent 脚手架,附录 F 那条结论值得抄下来:别指望 Agent 主动调工具自救,把搜索状态、停滞警告、近期实验表每轮怼到它脸上。这个原则对任何长程 Agent 任务都成立,不限于优化。
这类"优化器即 Agent"的路线,我猜接下来会成为自动 ML/Prompt 工程系统的标配方向之一——外层控制器的代码会越删越少,脚手架的状态工程会越来越重。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我