AlphaEvolve: A coding agent for scientific and algorithmic discovery

AlphaEvolve

一句话理解

AlphaEvolve 用冻结的 LLM 生成程序 diff,用自动 evaluator 评分,把候选程序和评分保存在进化数据库中,并反复从历史优良候选继续生成后代,从而在不更新模型权重的情况下持续搜索更好的程序。

它展示的不是“LLM 自己学会了”,而是:

冻结的生成器可以嵌入一个具有记忆、选择和反馈的外部搜索系统;模型不变,但搜索状态可以不断积累。

1. AlphaEvolve 到底在演化什么?

主要演化对象是候选程序,而不是 LLM 权重。

一次基本循环可以写成:

$$
p_{t}^{\mathrm{parent}}
\xrightarrow{\operatorname{Prompt}}
M
\xrightarrow{\operatorname{GenerateDiff}}
\Delta_t
\xrightarrow{\operatorname{Apply}}
p_t^{\mathrm{child}}
\xrightarrow{\operatorname{Evaluate}}
s_t
$$

其中:

  • $M$:冻结的 LLM;
  • $p_t^{\mathrm{parent}}$:从程序池选出的父程序;
  • $\Delta_t$:LLM 生成的代码修改;
  • $p_t^{\mathrm{child}}$:应用 diff 后的子程序;
  • $s_t$:一个或多个 evaluator 给出的分数。

程序池可以写成:

$$
\mathcal P_t
=
{(p_i,s_i,m_i)}_{i=1}^{n_t}
$$

$m_i$ 表示程序的来源、父代、生成上下文、运行结果等元数据。

新候选被评估后加入数据库:

$$
\mathcal P_{t+1}
=
\operatorname{Update}
(\mathcal P_t,p_t^{\mathrm{child}},s_t)
$$

下一次生成时,系统不必再从初始程序开始,而可以从历史上表现好或具有多样性的程序继续搜索。

2. 它和 Harness Engineering 的关系

AlphaEvolve 本身是一套 Coding-Agent Harness:它包含 prompt sampling、父代选择、LLM 调用、diff 应用、程序执行、evaluator 和候选数据库。

但论文主要优化的是:

  • 解决问题的程序;
  • 用于搜索解的启发式程序;
  • 某些情况下共同演化的 meta-prompt。

它并不是像 AHE 那样,明确把 tool implementation、middleware、skill、sub-agent 和 long-term memory 等 Agent Harness 组件全部开放为修改对象。

因此更准确的区分是:

AlphaEvolve:用一个固定的进化 Harness 搜索更好的程序
AHE:让 Agent 修改 Harness 本身

3. Figure 编号纠正

网页文章中这张消融图可能被标为 fig17,但在 AlphaEvolve 原论文中它是:

Figure 8,Section 4 Ablations,PDF 第 18 页。

PDF 第 17 页定义 No evolutionNo context in the prompt;第 18 页给出 Figure 8,并继续定义其他三个消融设置。

4. Figure 8 的坐标怎样读?

横轴:Fraction of compute budget

表示已经消耗的搜索计算预算比例:

$$
x
=
\frac{B_{\mathrm{used}}}{B_{\mathrm{total}}}
$$

它不是准确轮数,也不能从图中换算成 wall-clock time、token 数或 LLM 调用次数。论文没有公开这张图对应的绝对预算。

纵轴:Target metric (aggregated)

表示跨多个 target 聚合后的内部任务分数。作者只明确说明:

$$
\text{higher is better}
$$

所以图中:

$$
-2>-6
$$

但不能把左图的 $-2$ 解释成“tensor rank 等于 2”,也不能把右图的 $-5$ 解释成具体 kissing number。论文没有给出该聚合指标的详细变换公式。

左右两个面板使用不同任务,纵轴绝对值不能跨面板比较。

曲线与阴影

每条曲线表示某一种系统配置随着预算增加达到的聚合表现。阶梯状曲线符合“发现并保留新最佳候选时才跳升”的搜索过程,但这是结合 AlphaEvolve 机制对图形的解释,图注没有单独定义阶梯的计算细节。

阴影是作者所称的 intra-target standard deviation。结果汇总自 3 次不同随机种子的独立运行。阴影不是论文报告的正式置信区间。

5. 每项消融准确拿掉了什么?

配置 论文中的准确含义
Full method 完整 AlphaEvolve
No evolution 不使用历史候选继续繁衍;反复把同一个初始程序交给 LLM
No context in the prompt 不在 prompt 中加入显式的问题特定 context
No meta prompt evolution 禁用由 LLM 建议、在独立数据库中共同演化的 meta-prompt
No full-file evolution 张量分解实验中只演化 loss function,而不是完整可编辑程序范围
Small base LLM only 只使用单个小模型,而不是 Gemini 2.0 Flash 与 Pro 的组合

No context 不等于“整个 prompt 被清空”。程序、生成协议及 evaluator 反馈仍然可以存在;被删除的是显式问题上下文,例如:

  • 问题说明;
  • 固定的人类指令;
  • 方程;
  • 代码片段;
  • 相关文献或 PDF。

这是理解右图时必须保留的边界。

6. 左图:Matrix multiplication tensor decomposition

左图测试寻找更低 rank 的矩阵乘法张量分解,但显示的是已经转换为“越高越好”的聚合指标。

从图中读取的近似终点为:

配置 100% budget 附近的聚合指标
Full method 约 $-2.0$
No meta prompt evolution 约 $-2.5$
Small base LLM only 约 $-2.7$
No context in the prompt 约 $-3.0$
No full-file evolution 约 $-3.1$
No evolution 约 $-6.4$

最强的信号来自 No evolution

  • 它仍能通过多次独立 LLM 采样找到一些改进;
  • 但不能从历史较好程序继续积累多步修改;
  • 后期明显落后于完整进化闭环。

其余中间曲线也低于 Full method,支持 meta-prompt、更强模型组合、显式 context 和扩大编辑范围都有价值。

但这些曲线存在交叉,阴影也有重叠,不能根据终点给四个组件建立普适、精确的贡献排名。

7. 右图:Kissing number problem

7.1 Kissing number 是什么?

在 $n$ 维空间中,kissing number 问题询问:最多有多少个互不重叠的单位球,可以同时接触一个中心单位球?

论文报告 AlphaEvolve 在 11 维找到由 593 个球组成的构造,将当时的 lower bound 从 592 提高到 593。

这类任务不是普通的输入输出编程题。候选程序通常承担数学构造或搜索算法的角色,问题中存在几何约束、目标函数、数值表示和已知构造等领域结构。

7.2 右图实际测了什么?

右图只画了三种配置:

  1. Full method。
  2. No context in the prompt。
  3. No evolution。

它没有测试 meta-prompt、full-file evolution 和模型组合,因此不能根据右图判断这三个组件在 kissing number 上的作用。

近似终点为:

配置 100% budget 附近的聚合指标
Full method 约 $-4$ 到 $-5$
No evolution 约 $-25$
No context in the prompt 约 $-31$

完整方法在前约 25% 的预算内迅速上升到高平台;两个消融配置最终都明显低于完整方法。

8. 问:为什么 Kissing number 对 Context 敏感?

论文事实是:去掉显式 context 后的平均曲线远低于 Full method。

一个合理的机制解释是,数学搜索程序中的许多修改只有结合问题语义才能判断方向:

  • 哪些约束必须保持;
  • evaluator 奖励的数学对象是什么;
  • 哪些变量或表示具有领域含义;
  • 哪些已知方法值得继续组合;
  • 哪些程序变化只是数值投机或无效改写。

显式 context 相当于给冻结 LLM 一个搜索先验:

$$
p(\Delta\mid p,\text{problem context},\text{evaluation history})
$$

去掉它以后,生成分布变成:

$$
p(\Delta\mid p,\text{evaluation history})
$$

LLM 仍然能看到程序并接收某些反馈,但生成的修改更难对准问题结构。

需要谨慎:图本身只能证明“在该设置下,显式 context 与更高结果相关”。它没有直接记录每个失败候选是不是因为破坏了某个几何约束,所以“LLM 完全不知道目标、只能盲改”是过强表述。

9. 问:为什么均值上 No context < No evolution

从右图终点均值看:

$$
\mathrm{No\ context}
<
\mathrm{No\ evolution}
$$

No evolution 的行为可以表示为:

$$
p_0\rightarrow c_1,
\qquad
p_0\rightarrow c_2,
\qquad
p_0\rightarrow c_3
$$

每次都从同一个 seed 出发,不能把 $c_1$ 的改善继续组合到 $c_2$,但每次生成仍有问题 context 指路。因此它是“有方向的独立采样”。

No context 仍然保留进化:

$$
p_0\rightarrow p_1\rightarrow p_2\rightarrow p_3
$$

但缺少显式领域先验。一个合理推断是:父代选择能积累 evaluator 已经识别的改善,却不保证 LLM 理解这些改善背后的数学原因,后续 diff 可能更难稳定地组合有效结构。

所以这张图提示:

有反馈的累积搜索不能替代问题表述;搜索方向与搜索记忆是两个互补条件。

但不能把右图解释成“无 context 的 evolution 一定会累积错误”。原因是:

  • 这只是均值曲线;
  • 两个消融的阴影范围较大且存在重叠;
  • 只有 3 个随机种子;
  • 论文没有提供候选级因果轨迹证明这个机制。

因此,更严谨的表述是:在这一实验中,No context 的平均终点低于 No evolution;上述搜索方向解释是合理假设,不是被图直接证明的事实。

10. 问:为什么 Full method 很快进入平台?

可直接观察到的是:Full method 在前约 20% 到 30% 预算内完成大部分提升,随后曲线变平。

可能原因包括:

  1. 初期容易发现的高收益修改先被找到。
  2. 聚合指标或部分 targets 接近当前可达到的饱和值。
  3. 更进一步的改进需要罕见、组合式创新,采样概率更低。
  4. 搜索进入局部平台,现有父代选择和 prompt 难以跨越。
  5. 指标是离散或低分辨率的,微小改进不会显示为曲线变化。

“边际收益递减”是合理总结,但图不能区分以上原因。

此前讨论中举出的“修 loss、改初始化、加缓存、改搜索策略”应当视为解释平台现象的示意例子,而不是论文披露的 kissing-number 实际修改顺序。

平台也不意味着 Agent 已经停止生成程序,只表示在剩余预算中没有发现能够明显抬高该聚合指标的新最佳候选。

11. 冻结 LLM,但搜索状态可以学习

完整系统状态可以写成:

$$
S_t
=
(\mathcal P_t,\mathcal E_t,\mathcal C_t,\mathcal M_t)
$$

其中:

  • $\mathcal P_t$:候选程序池;
  • $\mathcal E_t$:评价分数和程序输出;
  • $\mathcal C_t$:当前 prompt context;
  • $\mathcal M_t$:meta-prompt 与搜索元数据。

虽然模型保持不变:

$$
M_t=M_0
$$

但外部状态不断变化:

$$
S_{t+1}
=
F(S_t,M_0,\operatorname{Evaluate})
$$

因此后续 LLM 调用面对的父程序、历史结果和提示上下文都不同:

$$
p(\Delta_{t+1}\mid S_{t+1},M_0)
\ne
p(\Delta_t\mid S_t,M_0)
$$

这就是“模型没有在线训练,但系统仍表现出持续改进”的数学原因。

更准确地说,学习发生在外部搜索过程的状态转移中,而不是模型参数中。

12. 这张图真正支持什么?

它支持:

  1. 在两个被测试任务上,完整 AlphaEvolve 比所展示的消融配置取得更高聚合表现。
  2. 历史候选复用和 evaluator 反馈使改进能够跨代积累。
  3. 显式问题 context 对复杂数学搜索非常重要。
  4. 在张量分解任务上,meta-prompt、全文件编辑和强弱模型组合也提供额外价值。
  5. 冻结模型的外部搜索系统可以随预算增加找到更好的程序。

它不支持:

  1. 每个组件在所有任务上都同样重要。
  2. 各消融差距可以相加为独立贡献。
  3. $-2$ 相比 $-3$ 对应某个固定百分比的实际算法提升。
  4. No context 在统计意义上必然差于 No evolution
  5. 平台一定由 low-hanging fruit 耗尽造成。
  6. AlphaEvolve 的模型权重发生了自我改进。
  7. 这已经构成开放式 Recursive Self-Improvement。

13. 对 RSI 的含义

AlphaEvolve 提供了一种参数外自我改进:

冻结 LLM
   +
可增长的程序池
   +
自动 evaluator
   +
选择与历史记忆
   +
可变化的 prompt context

它距离开放式 RSI 仍有明确边界:

  • 目标函数由人定义;
  • evaluator 固定;
  • 搜索空间受程序接口约束;
  • 模型不修改自身权重;
  • 进化控制器的核心规则主要由人设计;
  • 成功依赖可以自动执行且可靠评分的问题。

因此,这篇论文更准确地证明:

在可自动验证的程序搜索空间中,冻结模型加上有状态的演化闭环,可以产生持续且可累积的系统级改进。

14. 后续问题

  1. Figure 8 的 aggregated target metric 具体怎样计算?
  2. 横轴 100% 对应多少 LLM calls、候选程序和 evaluator compute?
  3. 如果为所有消融匹配 token、模型成本和 evaluator 次数,结论是否保持?
  4. 增加随机种子后,No contextNo evolution 的终点顺序是否稳定?
  5. Context 的收益来自数学知识、约束描述、参考代码还是历史结果?
  6. Meta-prompt evolution 与程序 evolution 之间是否存在非线性交互?
  7. 平台来自任务饱和、指标分辨率、父代选择还是生成模型能力上限?
  8. 如果允许 AlphaEvolve 修改父代采样器或 evaluator orchestration,它是否会从 program evolution 走向 harness evolution?

15. 相关资料