给 Agent 的每一次自我进化,开一张“可审计证书”
〇、写在前面:为什么这篇值得认真读
近两年"自我进化 / self-improving agent"的论文越来越多——重写自己的 prompt、蒸馏自己的输出、训练自己的奖励模型、生长自己的技能库。听起来很美,但有一个几乎没人正面回答的问题:
当 Agent 自己生产训练数据、自己当裁判、自己组装组件、自己搜索假设空间时,你凭什么相信任何一条学习理论的保证还成立?
绝大多数你会拿来引用的保证——持续学习的遗忘界、偏好优化的收敛性、策略梯度估计的无偏性、安全策略改进、库学习的最优性——全部是在"环境是外生的(exogenous)"这一前提下证明的:任务流、评估器、MDP、程序库都独立于学习者而固定。
SEA 把这种违反命名为 内生循环失效模式(endogenous-loop failure mode):进化中的策略生成它所训练的数据、评判它的评估器、构成它的组件,以及它所搜索的假设空间。
这篇论文的价值恰恰不在于"解决"了这个问题,而在于它处理这个问题的方式极其克制、极其诚实。它是我近期读到的、对"自己没证明什么"比大多数论文对"自己证明了什么"还要诚实的一篇。下面我们逐层拆解。
一、核心问题:内生循环失效模式
先把这个概念讲透,因为它是全篇的地基。
经典学习理论的保证,本质上都长这个样子:“在数据/环境满足条件 X 的前提下,算法 A 享有保证 G。” 而自我进化 Agent 恰恰让四样东西同时变成内生的:
| 内生对象 | 违反了谁的前提 |
|---|---|
| 数据流(自己生成训练数据) | 持续学习遗忘界 [Farajtabar 2020; Chugg 2023] |
| 评估器(自己当裁判) | 偏好优化收敛性 [Tiapkin 2025; Wang 2025] |
| 组件 / MDP(自己组装 harness) | 策略梯度无偏性 [Meulemans 2023]、安全策略改进 [Thomas 2015] |
| 假设空间(自己搜索、生长库) | 库学习最优性 [Bowers 2023] |
作者对这个概念的态度尤其值得学习。他明确指出,"内生循环失效"这个名字是速记(shorthand),字面理解甚至夸大了问题:
违反一个定理的前提,只是让它的证书(certificate)失效,并不否定它的结论。界可能仍然成立、可能优雅地退化、也可能彻底崩掉——取决于具体问题。
而且 performative-prediction 理论表明:只要策略诱导的分布漂移足够小,闭环其实仍然可以收缩(contract)[Perdomo 2020]。所以"内生循环"这个词只用来标记经典保证在哪里停止适用,而不是宣称"学习一定失败"。
这个分寸感,是全篇论文的基调。
二、两大设计原则
面对这个设定,SEA 只用两条原则组织整个设计:
原则一:每一次自我修改都必须通过一道 anytime-valid(时序有效)门。
每一条经典"种子结果"都被包进"刚好够它在闭环里存活的机器"里——
- performative stability(performative 稳定性)[Perdomo 2020]
- anytime-valid inference(时序有效推断)[Ramdas 2023; Howard 2021]
- dynamic-regret online learning(动态遗憾在线学习)[Cutkosky 2020; Baby & Wang 2022]
- two-timescale stochastic approximation(两时间尺度随机逼近)[Borkar 2008]
原则二:门只能在"冻结基座已经会产生的行为"里做选择,不能凭空创造能力。
当基座的失败是系统性的(而非随机的),而奖励只在 episode 结尾到来时,门根本没东西可选。因此 SEA 把任务验证器(verifier)变成一个在环(in-loop)主动控制信号——在 episode 内部、跨多次尝试、在动作空间上、在信用分配内部都起作用——好让控制器既有信号、又有可供选择的行为变化。
这两条原则的张力贯穿全文:门控保证安全,但门只能在既有行为里挑;于是必须另造一台"引擎"去生成并验证行为变化,喂给门。 记住这个二分,后面所有算法都能对号入座。
三、四层架构:围绕冻结模型的四层
部署在第 ttt 轮的 Agent 是如下复合:
πt=L0∘L1(t)∘L2(t) \pi_t = L_0 \circ L_1^{(t)} \circ L_2^{(t)} πt=L0∘L1(t)∘L2(t)
四层各自的职责:
- L0 基座模型:冻结的预训练 LLM,只作为函数
LLM(prompt) → text访问,可选返回 token 对数概率。永不更新。 - L1 适配器:唯一可训练的策略参数 θ\thetaθ。开源权重下它本可以是 LoRA / prefix / soft-prompt;而 provider-无关的实现是一个 steering adapter(引导适配器):在 kkk 个"引导指令"(短自然语言策略指令,拼到 system prompt 后)上的随机策略,p=softmax(θ)p = \mathrm{softmax}(\theta)p=softmax(θ)。
- L2 harness:可变编排层。由 ALG4 编辑、ALG5 生长、在线自我修复。每次结构性编辑都改变 harness 的身份,因此策略版本任何时刻都良定义。
- L3 循环控制器:五个算法之一(或其复合)。持有证书、门、预算、档案;从不参与 Agent 的前向传播。
3.1 关键:为什么这个架构能让理论"够得着"
这里有一个常被忽略但极其关键的设计动机:因为 L0L_0L0 冻结、L1L_1L1 低维,策略增量 ∥πt−πt−1∥\lVert \pi_t - \pi_{t-1}\rVert∥πt−πt−1∥ 是可度量、可信赖域约束(trust-regioned)的——这正是让 performative-sensitivity 机器"根本能用得上"的前提。
引导适配器的唯一梯度是 softmax 的闭式 score-function(REINFORCE)梯度:
∇θlogpθ(i)=1i−softmax(θ) \nabla_\theta \log p_\theta(i) = \mathbf{1}_i - \mathrm{softmax}(\theta) ∇θlogpθ(i)=1i−softmax(θ)
它只需要采样到的指令下标 iii 和一个 softmax——不需要反向传播、不需要模型内部——因此即便在纯文本 API 上也精确可算。这是 ALG1 和 ALG3 消费的唯一梯度。
对遗忘门而言,同一个 θ\thetaθ 被读作对角高斯 PAC-Bayes 后验 Qθ=N(θ,diag ev)Q_\theta = \mathcal{N}(\theta, \mathrm{diag}\, e^v)Qθ=N(θ,diagev),固定对数方差 vvv,于是 KL(Qθ∥Q0)\mathrm{KL}(Q_\theta \Vert Q_0)KL(Qθ∥Q0) 只是到先验均值的缩放平方距离。正交梯度持续学习里那套"Jacobian 内存",被一个有限 FIFO 缓冲区(存过去的闭式梯度)近似——从不形成模型 Jacobian。
访问级别与可实现性:纯文本 API 已经足够跑通每一个控制器(因为可训练策略就是 L1 softmax,其梯度只需采样下标)。API-logprob 增加序列级重要性比;开源权重才额外允许穿过模型本身的梯度和真正的 Jacobian 内存——而后两者在任何实验里都没用到。
四、五大循环控制器:一个失效模式,一个种子结果
这是论文声称的核心贡献。五个控制器各对应内生循环的一种失效模式,各自给出:精确的问题陈述 + 带伪代码的算法解 + 明确交代"它建立在哪条已发表结果上、哪些保证在内生设定下仍是开放猜想"。
先看全景(论文 Table 1):
| 编号 | 机制 | 作用于 | 时间尺度 |
|---|---|---|---|
| ALG1 | PPB-CL:遗忘门控持续学习 | L1 | fast |
| ALG2 | PNMP-A:锚定偏好学习 | reward qqq | slow |
| ALG3 | PA-COCOA:反事实信用分配 | L1 | fast |
| ALG4 | SGM-CS:置信度门控 harness 编辑 | L2 | slow |
| ALG5 | SDC-QD:MDL+QD 库生长 | L2 | slow |
| ALG6–10 | 验证器在环 / actor 侧机制(“引擎”) | search / verifier / L2 | — |
作者反复强调的定位:ALG1–5 是"贡献",ALG6–10 是"喂给它们的引擎"。因为门只能在既有行为里选,所以生成并验证这些行为的引擎必须单独编号。
4.1 ALG1|PPB-CL:Performative PAC-Bayes 持续学习(作用于 L1)
- 失效模式:稳定性–可塑性。在自己生成的任务流上学新技能而不灾难性遗忘旧的。
- 两条种子为何不够用:OGD 的无遗忘保证假定外生索引的任务序列 + 无限宽 NTK 区制 [Farajtabar 2020];时序有效 PAC-Bayes 遗忘证书要求数据无关的先验 [Chugg 2023]——一旦 Agent 复用自己进化中的策略当先验,前提就破。
- 解法:先验冻结、PAC-Bayes 对象保持小。每轮形成 REINFORCE 梯度,正交投影掉最近 mmm 个已提交方向(OGD 守卫),单步下降提出候选,然后过三道门:
(i)遗忘门——候选在小锚点集上部署,经验后向迁移 bt=1∣A∣∑j[(1−Rj)−(1−Rj∗)]b_t = \frac{1}{|A|}\sum_j[(1-R_j)-(1-R^*_j)]bt=∣A∣1∑j[(1−Rj)−(1−Rj∗)] 进入 Donsker–Varadhan 界:
Bfgt(θ)=b^t(θ)+KL(Qθ∥Q0)+log(2t/δ)λ+λM28∣A∣ B_{\mathrm{fgt}}(\theta) = \hat{b}_t(\theta) + \frac{\mathrm{KL}(Q_\theta\Vert Q_0) + \log(2\sqrt{t}/\delta)}{\lambda} + \frac{\lambda M^2}{8|A|} Bfgt(θ)=b^t(θ)+λKL(Qθ∥Q0)+log(2t/δ)+8∣A∣λM2
其中最优温度 λ∗=8∣A∣At\lambda^* = \sqrt{8|A|A_t}λ∗=8∣A∣At,At=KL(Qθ∥Q0)+log(2t/δ)A_t = \mathrm{KL}(Q_\theta\Vert Q_0) + \log(2\sqrt{t}/\delta)At=KL(Qθ∥Q0)+log(2t/δ)(把后两项收缩为 At/(2∣A∣)\sqrt{A_t/(2|A|)}At/(2∣A∣))。若 Bfgt>τforgetB_{\mathrm{fgt}} > \tau_{\mathrm{forget}}Bfgt>τforget,沿测地线向现任阻尼 ρ\rhoρ 后重测,最多五次。
(ii)Performative 信赖域——剩余余量 τforget−Bfgt\tau_{\mathrm{forget}} - B_{\mathrm{fgt}}τforget−Bfgt 除以 ε\varepsilonε,给出 ℓ2\ell_2ℓ2 步长上限,把诱导漂移压在 Perdomo 收缩区制内。
(iii)提交门——当且仅当 Bfgt≤τforgetB_{\mathrm{fgt}} \le \tau_{\mathrm{forget}}Bfgt≤τforget 且 εL<1\varepsilon L < 1εL<1 才提交。
作者的诚实:三块拼件都已发表且各自 sound,但"它们能否组合成一个在闭环里存活的 anytime-valid 遗忘保证是猜想,不是我们建立的定理"。且有界方向缓冲放弃了 Abbana Bennani 2020 那种需要无限 Jacobian 内存的精确无遗忘性质;anytime 下界随 ttt 增长,τforget\tau_{\mathrm{forget}}τforget 必须坐在其上否则门会冻死学习者。
4.2 ALG2|PNMP-A:带真实数据锚定的 Performative Nash-MP(作用于奖励 qqq)
- 失效模式:自指崩溃(self-referential collapse)。递归自训练 + 自奖励漂向退化不动点:策略钻奖励模型的过预测空子,奖励模型又在策略输出上重训。
- 两条种子各覆盖一半:常数比例真实数据锚定防数据崩溃 [Fu 2025] 但不管奖励模型漂移;last-iterate Nash 收敛 [Tiapkin 2025; Wang 2025] 假定偏好博弈固定。
- 解法:把两种风险分到两个时间尺度 [Borkar 2008] 并对慢的那个上门。偏好模型是 Bradley–Terry 分数向量 qqq,P(i≻j)=σ(qi−qj)P(i\succ j)=\sigma(q_i-q_j)P(i≻j)=σ(qi−qj),冻结锚点 qrealq_{\mathrm{real}}qreal。
慢尺度(奖励模型更新,混入向锚点的拉力):
qcand=q+atslow[α(qreal−q)+(1−α)∇qL^BT(q)],atslow=12(t+1)−1 q_{\mathrm{cand}} = q + a_t^{\mathrm{slow}}\left[\alpha(q_{\mathrm{real}}-q) + (1-\alpha)\nabla_q\hat{L}_{\mathrm{BT}}(q)\right],\quad a_t^{\mathrm{slow}}=\tfrac12(t+1)^{-1} qcand=q+atslow[α(qreal−q)+(1−α)∇qL^BT(q)],atslow=21(t+1)−1
且只有过了漂移门才采纳:逐对偏离 Xij=∣σ(qicand−qjcand)−σ(qireal−qjreal)∣X_{ij}=|\sigma(q_i^{\mathrm{cand}}-q_j^{\mathrm{cand}})-\sigma(q_i^{\mathrm{real}}-q_j^{\mathrm{real}})|Xij=∣σ(qicand−qjcand)−σ(qireal−qjreal)∣ 喂给 Hoeffding e-process 检验 H0:E[X]≤τH_0: \mathbb{E}[X]\le\tauH0:E[X]≤τ。
快尺度(策略追逐奖励模型,正则化 Nash mirror-prox / extragradient):
θt=θt−1+atfast(θMP−θt−1),atfast=12(t+1)−0.7 \theta_t = \theta_{t-1} + a_t^{\mathrm{fast}}(\theta_{\mathrm{MP}}-\theta_{t-1}),\quad a_t^{\mathrm{fast}}=\tfrac12(t+1)^{-0.7} θt=θt−1+atfast(θMP−θt−1),atfast=21(t+1)−0.7
博弈梯度是自博弈优势 advi(p)=∑jpjσ(qi−qj)\mathrm{adv}_i(p)=\sum_j p_j\sigma(q_i-q_j)advi(p)=∑jpjσ(qi−qj)。因为 atslow/atfast→0a_t^{\mathrm{slow}}/a_t^{\mathrm{fast}}\to 0atslow/atfast→0,模型比策略追它settle得更快——这正是所需的时间尺度分离。
4.3 ALG3|PA-COCOA:Performative 感知的反事实信用分配(作用于 L1)
- 失效模式:信用分配。长视界、稀疏结果要跨多组件栈归因,而转移/奖励核随部署策略移动 [Mandal 2023]。
- 种子:COCOA 的无偏性 [Meulemans 2023] 只在固定 MDP、全预测编码 + 真值贡献系数下成立。
- 解法:用反事实的逐动作贡献替换"reward × log-prob",把部署策略并入条件集 U~=(U,πt)\tilde{U}=(U,\pi_t)U~=(U,πt) 使漂移不再混淆,再喂给无需学习率的 parameter-free 学习器(漂移触发重启)。增广 COCOA 梯度对 softmax 引导适配器有闭式:
g=∑a′w^(a′)∇θpθ(a′)=w^⊙p−p⟨w^,p⟩,p=softmax(θ) g = \sum_{a'}\hat{w}(a')\nabla_\theta p_\theta(a') = \hat{w}\odot p - p\langle\hat{w},p\rangle,\quad p=\mathrm{softmax}(\theta) g=a′∑w^(a′)∇θpθ(a′)=w^⊙p−p⟨w^,p⟩,p=softmax(θ)
信用附着在 episode 结果(用 §5 的过程奖励 R~\tilde{R}R~)而非逐步奖励。学习器是逐坐标 Krichevsky–Trofimov 投币赌博 [Orabona & Pál 2016],wild-bootstrap 趋势检验一旦报非平稳就重锚——是对强自适应动态遗憾 O~(TVT)\tilde{O}(\sqrt{TV_T})O~(TVT) [Cutkosky 2020] 与 O~(T1/3VT2/3)\tilde{O}(T^{1/3}V_T^{2/3})O~(T1/3VT2/3) [Baby & Wang 2022] 的重启式代理。
4.4 ALG4|SGM-CS:Anytime-Valid 置信序列门控(作用于 L2)— 最先该部署的治理层
- 失效模式:可验证的自我修改。在无界的、内生的自提编辑流上,只有统计上确实改善才准入,且家族错误率(familywise error)跨整条流有界。
- 解法:一道 peek-safe 的配对检验,每次编辑花掉全局错误预算 δ0\delta_0δ0 中递减的一片,并针对编辑自身诱导的分布漂移做修正;拿不准就弃权。基线 πt−1\pi_{t-1}πt−1 与候选 πcand\pi_{\mathrm{cand}}πcand 在同一批任务上、共同随机数下并发部署,决策是对配对过程奖励增益的下界(经 performative 修正):
LCB=CSδklower (Rcand−Rbase)−ε⋅W1(Rcand,Rbase),准入当且仅当 LCB≥−ϵtol \mathrm{LCB} = \mathrm{CS}^{\mathrm{lower}}_{\delta_k}\!\left(R_{\mathrm{cand}}-R_{\mathrm{base}}\right) - \varepsilon\cdot W_1(R_{\mathrm{cand}},R_{\mathrm{base}}),\qquad \text{准入当且仅当 } \mathrm{LCB}\ge -\epsilon_{\mathrm{tol}} LCB=CSδklower(Rcand−Rbase)−ε⋅W1(Rcand,Rbase),准入当且仅当 LCB≥−ϵtol
其中 CTHS 层级 δk=δ0/(Z klog2(k+1))\delta_k=\delta_0/(Z\,k\log^2(k+1))δk=δ0/(Zklog2(k+1));W1W_1W1 项在 1-D 精确计算,按编辑诱导的漂移膨胀界。三个细节让检验既诚实又便宜:(i)两道免费守卫(预算耗尽/no-op 直接 HOLD,不花预算);(ii)pre-gate 试点先在"已知可过"的最强证据任务上淘汰毫无希望的候选;(iii)wild-bootstrap 趋势检验在基线值流非平稳时把界再放宽一个半径。
一个漂亮的工程分离——shadow-best(影子最佳):跨轮见过的最高奖励候选补丁被保留,即便 harness-编辑门弃权。这把"该部署哪个 harness"(受门控)与"该提交哪个补丁"(取历史最佳)解耦。被拒的 harness 若产出了强补丁,会带着有界重试次数被重新入队。
4.5 ALG5|SDC-QD:Stitch-in-DreamCoder + 质量多样性接受(作用于 L2)
- 失效模式:假设空间扩张。要生长自己的抽象库,而挖掘抽象的语料正是在"被学习的库"之下生成的。
- 解法:不追求单个收敛的库,而是维护一个行为上互异的库的质量多样性档案(MAP-Elites),且每步生长都精确。程序是 S-表达式,描述长度 ∣ρ∣|\rho|∣ρ∣ = 节点数,目标为 MDL 代理 J(L;C)=∣L∣+∑ρ∈C∣ρ∣J(L;C)=|L|+\sum_{\rho\in C}|\rho|J(L;C)=∣L∣+∑ρ∈C∣ρ∣。Sleep 阶段做 Stitch 式压缩,候选模式 = 所有子树 + 所有兼容子树的成对反合一(antiunification);模式净效用 u=m(b−1−a)−bu=m(b-1-a)-bu=m(b−1−a)−b。最佳抽象 A∗A^*A∗ 仅当(i)ΔJ=u(A∗)≥umin\Delta J=u(A^*)\ge u_{\min}ΔJ=u(A∗)≥umin 且(ii)在以行为描述子 ϕ=\phi=ϕ=(库大小, 平均已解程序大小)为键的 MAP-Elites 档案中新颖或改进时才接受。
留出集描述长度证书(Hoeffding/Occam 型,与 [Pentina & Lampert 2014] 的终身 PAC-Bayes 共享 Hoeffding 核):
Enew task[DL]≤J(Lt;Ct)∣Ct∣+∣Lt∣∣Ct∣+log(1/δ)2∣Ct∣ \mathbb{E}_{\mathrm{new\ task}}[\mathrm{DL}] \le \frac{J(L_t;C_t)}{|C_t|} + \frac{|L_t|}{|C_t|} + \sqrt{\frac{\log(1/\delta)}{2|C_t|}} Enew task[DL]≤∣Ct∣J(Lt;Ct)+∣Ct∣∣Lt∣+2∣Ct∣log(1/δ)
作者继续保持诚实:单步压缩精确且已发表(Stitch 的 dominance pruning 引理),但质量多样性档案收敛到有意义前沿并非已发表结果——没有任何 QD 框架证明过——所以我们不作此声明,它至多是猜想。
五、验证器作为在环控制信号:真正的"引擎"(ALG6–10)
这一节是我认为工程上最有迁移价值的部分。作者先精确诊断了"为什么被动学习器在硬 agentic 任务上没东西可学":
- 天然奖励是终局二元的——从不解决的基座给出恒零信号,循环没有梯度;
- 有些失败是系统性的而非随机的——同一次尝试在温度下反复重跑,选择没有方差可利用;
- 但同一基座在**微步(micro-step)**上是可靠的——它能定位并发出一行可应用的编辑,哪怕整补丁内容错了;
- 有帮助的干预是控制流(探索预算后强制编辑)而非能力;
- 唯一知道 ground truth 的验证器,只在 episode 结束、无可挽回时被咨询了一次。
解法是一个分级验证器 + 一族搜索算子,全部只从测试执行导出。
5.1 分级验证器与过程奖励
塑形里程碑奖励把"通往解决"的路径拆成台阶:无可解析 diff = 0,不可应用的 diff = 0.2,测试跑起来后 0.4+0.6⋅fracf2p0.4+0.6\cdot\mathrm{frac}_{f2p}0.4+0.6⋅fracf2p(出现 pass-to-pass 回归时减半并封顶 0.55)。在此之上分级验证器再加两个更细的信号:
V={1resolvedmin (0.99, sshaped+1[sshaped≥0.4](wp 1[progressed]+wj j))otherwise V = \begin{cases} 1 & \text{resolved}\\[4pt] \min\!\Big(0.99,\ s_{\mathrm{shaped}} + \mathbb{1}[s_{\mathrm{shaped}}\ge 0.4]\big(w_p\,\mathbb{1}[\text{progressed}] + w_j\, j\big)\Big) & \text{otherwise} \end{cases} V=⎩ ⎨ ⎧1min(0.99, sshaped+1[sshaped≥0.4](wp1[progressed]+wjj))resolvedotherwise
关键新增是错误推进(error-progression):当测试的失败签名移动(掩码掉易变数字/地址后,最后一行 pytest 错误与种子不同——说明编辑在失败前走得更远),就把"一堆同样能应用的补丁"这个平台,变成了一个梯度。fracf2p\mathrm{frac}_{f2p}fracf2p 来自留出金标测试,只留给终局测量。
过程奖励是 episode 到达过的最佳验证器状态:
R~=max (Rterminal, maxjsj) \tilde{R} = \max\!\left(R_{\mathrm{terminal}},\ \max_j s_j\right) R~=max(Rterminal, jmaxsj)
一条到达过好状态又回退的轨迹仍带信用——ALG3 消费的正是这个 R~\tilde{R}R~。
配合 run_tests 工具(可在 episode 中途跑真实目标测试、读回可执行反馈),任务从"一次性猜补丁"变成"闭环调试"。
5.2 ALG8|自撰复现预言机(self-authored reproduction oracles)— 全篇最巧的点
- 难题:搜索需要稠密的、逐候选的信号来爬坡,但金标测试必须留给无偏终局测量。所以在环验证器必须只从 issue 文本可算,不碰任何金标信息。
- 不对称杠杆:复现一个被描述的 bug,比修复它容易得多——issue 已经陈述了症状,模型只需把症状编码进一个断言脚本。于是一个"修不好"的模型,仍然能写出一个可用的验证器。
准入规则只有一条:oracle 必须在未修复基座上失败(能过的检验什么都没捕获)。两种便宜拒绝:timeout、以及无疑是脚本自身的错(语法/缩进)。import / name error 被刻意不自动拒绝——症状本身就是坏 import 的 bug 必须保持可准入。候选补丁 ρ\rhoρ 的标量分是它把已准入 oracle 从"失败翻转为通过"的比例(任何绿检回归则置零):
Vself(ρ)=∣{ o∈A: o 在基座失败, o 在 ρ 通过 }∣∣A∣(无绿检回归时,否则 0) V_{\mathrm{self}}(\rho) = \frac{\big|\{\,o\in A:\ o\text{ 在基座失败},\ o\text{ 在 }\rho\text{ 通过}\,\}\big|}{|A|}\quad(\text{无绿检回归时,否则 } 0) Vself(ρ)=∣A∣ {o∈A: o 在基座失败, o 在 ρ 通过} (无绿检回归时,否则 0)
为什么测量仍然诚实:因为 VselfV_{\mathrm{self}}Vself 只是 issue 文本与仓库自身行为的函数,金标测试对搜索的引导毫无参与;它唯一的终局调用只测量、不塑形。代价是 VselfV_{\mathrm{self}}Vself 可错——所以一个补丁被报告为 “promising(有希望)”,从不叫 “resolved”;自我预言机判决与独立终局裁判的一致性,才是论文真正上报的量。
5.3 ALG10|Harness 的验证式自我修复 — 一个"拒绝修复"的漂亮反例
- 难题:快环里约一半的集成候选编辑无法应用,因为模型从 issue 的 diff(带 +/− 标记的行)里抄搜索文本,而非从当前文件抄——搜索器被断了粮。
- 诱人的错误做法:人工手打补丁(“把 diff 标记从 search 里剥掉”)。但手打补丁是"关于失败原因的未经验证的信念",照做正是全文其余部分所禁止的那种信任。
- 解法:harness 携带一条可进化的修复流水线,门(PROPOSEREPAIRS)对每个库原语测量它让候选实际应用的比例,只采纳过阈值者,best-first。
这个机制靠"拒绝一个修复"证明了自己:在真实录制的失败上,diff-去标记原语在 34 个候选中通过了 0 个——主导失败根本不是朴素 diff 前缀,而是搜索文本瞄准了种子补丁已替换的代码,任何文本重写都救不回来。于是验证门拒绝了一个人类本会直接上线的手打补丁,转而采纳了一个生成级修复(重生成把实测应用率从 33%→50%33\%\to 50\%33%→50%),并在无增益处正确地拒绝它(83%→83%83\%\to 83\%83%→83%)。
作者标注:这些是单实例观察,不是受控评估。但作为"propose-and-gate 纪律应用于 Agent 自身失效模式"的示范,它极有说服力。
六、两环设计:从搜索到权重(ALG9 与再瞄准)
快环在测试时提升质量;慢环则把它摊销进权重——收集验证过的微步轨迹(无标签正样本,因为它们过了测试),用拒绝采样蒸馏进低秩适配器 [Zelikman 2022 STaR; Gulcehre 2023 ReST]。慢环设计了但任何实验都没训练。 五个控制器被从单遍 actor 再瞄准到这个两环脚手架上(论文 Table 2):
| 控制器 | 作用环 | 在两环脚手架里的再瞄准角色 | 状态 |
|---|---|---|---|
| ALG4 | 快环 | anytime-valid 算力分配停止:置信序列显示无期望增益时中止分支/实例 | 已建,门模拟 |
| ALG5 | 快环 | 质量多样性档案作分支多样性生成器;从验证子序列挖步级宏 | 已建,门模拟 |
| ALG3 | 快环 | 分支/假设类上的步级信用,从验证轨迹缓冲区离策略 | 已建,门模拟 |
| ALG1 | 慢环 | 锚定遗忘门:仅当更早仓库分数不回退才接受策略更新 | 已建,门模拟 |
| ALG2 | 慢环 | 守护蒸馏环防模式崩溃(轨迹多样性的 e-value 漂移门) | 设计(待训练) |
七、Anytime-Valid 统计内核
每个控制器都监视自己的运行统计并可能在任意轮停止/接受/重启。共同危险是同一个:固定样本量的检验,在控制器偷看自己数字的那一刻就失效了。 内核提供的都是在连续偷看下仍然有效的标准工具:
-
正态混合置信序列(对所有 nnn 同时成立的误差棒):
∣Sn∣n≤1n(ρ+Vn)(2log2α+logρ+Vnρ)对所有 n \frac{|S_n|}{n} \le \frac{1}{n}\sqrt{(\rho+V_n)\left(2\log\tfrac{2}{\alpha}+\log\tfrac{\rho+V_n}{\rho}\right)}\quad\text{对所有 } n n∣Sn∣≤n1(ρ+Vn)(2logα2+logρρ+Vn)对所有 n -
Hoeffding e-process(检测漂移的赌本):∏iexp(λiXi−λi2/8)\prod_i \exp(\lambda_i X_i - \lambda_i^2/8)∏iexp(λiXi−λi2/8),在 Et≥1/δE_t\ge 1/\deltaEt≥1/δ 时拒绝,任意停时都 anytime-valid。
-
横跨无界编辑的一个错误预算(CTHS):SGM 的 δt=δ0/(tHB)\delta_t=\delta_0/(tH_B)δt=δ0/(tHB) 需预设有限视界 BBB,而自进化 Agent 没有。朴素选择 δ0/(2klog2(k+1))\delta_0/(2k\log^2(k+1))δ0/(2klog2(k+1)) 其实超支(∑k≈1.69δ0\sum_k\approx 1.69\delta_0∑k≈1.69δ0,悄悄破坏有效性),于是第 kkk 次确认改花:
δk=δ0Z klog2(k+1),Z=∑j≥11jlog2(j+1)≈3.39 \delta_k = \frac{\delta_0}{Z\,k\log^2(k+1)},\qquad Z=\sum_{j\ge1}\frac{1}{j\log^2(j+1)}\approx 3.39 δk=Zklog2(k+1)δ0,Z=j≥1∑jlog2(j+1)1≈3.39
用解析尾部修正使 ∑kδk=δ0\sum_k\delta_k=\delta_0∑kδk=δ0 精确成立——无视界的家族有效性。(这个"发现朴素调度会超支并修正"的细节,是全篇工程严谨性的一个缩影。) -
无学习率的投币赌博 + 重启、精确 1-D Wasserstein 与敏感度估计、wild-bootstrap 趋势检验、加权重要性采样、MDL 压缩与 QD 档案 —— 分别喂给对应控制器。
八、实验设置与结果
8.1 设置
- 基准:SWE-bench Verified(500 实例人工验证子集),官方基于执行的评分器。工作样本是种子随机抽取的 52 个实例(24 Django,27 Matplotlib,1 Flask)。
- 奖励三档:Proxy(补丁 F1 重叠,仅内环开发,绝不用于声明)、Native(真实测试执行)、Shaped(§5 稠密里程碑)。实际线上爬的是 §5.2 的自撰验证器;金标测试留给终局。
- 四个冻结基座:GEMMA (~31B)、QWEN (~27B)、GPT-MINI (gpt-5.4-mini)、GPT (gpt-5.5,集合中最强),另加 GLM 5.2。全部只作 L0L_0L0 访问,无一微调。
- 4×2 设计:四模型 × 算法 off/on,全 52 实例、同一 harness、同一官方评分器。
8.2 两个 headline 结果
结果一:基座能力是巨大的、无混淆的效应。 单遍基线在同一 harness 上干净地按能力排序,且全栈开启后顺序保持。
结果二:全栈提升每个基座;在两个强模型上用 no-op 控制隔离出算法本身的贡献为 +5 和 +4。
论文 Table 3 / Figure 2:
| 基座模型 | off | Algorithms–A | Δ (on−off) |
|---|---|---|---|
| GEMMA (~31B) | 18 | 22 | +4 |
| QWEN (~27B) | 24 | 25 | +1 |
| GPT-MINI (gpt-5.4-mini) | 25 | 29 | +4 |
| GPT (gpt-5.5) | 28 | 34(65%,最佳) | +6 |
| GLM 5.2 | 24(★no-op 控制) | 28 | +4 |
★ GLM 的 “off” 格是 no-op 控制(脚手架开、算法关),故其 +4 已经是去脚手架的。
8.3 去混淆的单基座消融(GPT,Table 4)
作者跑了一个刻意的 no-op 复合控制:全复合脚手架 + 策略指令开,但每个算法都禁用。它得 29,对单遍基线 28 —— 指令/脚手架效应只有 +1;全栈到 34,比正确的控制高 +5,归因于算法本身。
| 配置 | resolved / 52 | 备注 |
|---|---|---|
| 单遍基线 | 28 | 无策略指令 |
| no-op 复合(控制) | 29 | 指令开、算法关 |
| ALG1 | 30 | |
| ALG2 | 34 | 策略指令学习器(比控制 +5) |
| ALG3 | 31 | |
| ALG4 | 36 | 0 接受——实际跑的是控制配置(伪影,被事件日志抓到) |
| ALG5 | 28 | ≈0 接受 |
| ALG6 | 26 | best-of-2;从未触发 + 应用失败——已移除 |
| ALG7 | 32 | 微步搜索 |
| ALG8 | 32 | 自撰预言机 |
| ALG9 | 29 | |
| ALG10 | 30 | |
| 全栈 | 34 | 比控制 +5 |
8.4 机制"可验证地"做了什么(§9.2)
作者特别区分了方差敏感的过关计数与方差免疫的事件日志(决策、接受、oracle 准入、否决与 react/refine 触发):
- 栈内可测的杠杆是更多的闭环调试,由自我预言机(ALG8)驱动:相对控制,
run_tests调用上升 ~50%,平均 episode 长度增加 ~1.3 步。 - 每轮都触发的证书控制器是指令学习器 ALG2 与 ALG3(各 52 次策略更新);门控/库/遗忘控制器 ALG4/ALG5/ALG1 贡献更少。
- 与"选择而非创造"一致:栈不破坏基座(全栈 4 个 p2p 标记 vs 控制 3 个);共识翻转分析显示 17/52 被每个配置解决,10/52 无一配置能解(大多是 Matplotlib)——这是能力/harness 墙,更多搜索推不动。
作者的定位(Position):两个杠杆不可互换。固定基座内,杠杆是算法套件(去混淆增益由 ALG2/ALG3 的指令塑形 + ALG7/ALG8 的验证搜索与自预言机承载);要绝对解决率,杠杆是更强的基座。
九、局限(作者自陈)
- 内生循环保证仍是开放猜想;各控制器的统计原语单独已发表且 sound,但它们的组合未在此证明,且若干依赖被内生循环本身侵蚀的假设。
- Performative 敏感度 ε\varepsilonε 是被当作超参的行为常数,无法带自身有效性保证地在线估计;收缩条件 εL<1\varepsilon L<1εL<1 在 LLM 尺度可能失效。
- 让门 sound 的 anytime-validity 也让它们保守:高维后验的 PAC-Bayes 项趋于 vacuous,DV 遗忘下界随 ttt 上升,ALG4 保证的是安全而非进步。
- 控制器和验证引导搜索只能选择/门控/重塑冻结基座的行为,无法制造它缺失的能力——这限定了绝对天花板。
- 每格单次运行、昂贵评估、无显著性;只报量级不报显著性。
- 自我预言机设计上可错(会 under-claim 与 over-claim)。跨多样 harness 与基座的真正阶乘消融尚未做,是最有信息量的下一步。
十、结语
1. 这是一篇"诚实到罕见"的论文,光这一点就值得推荐。
在一个人人都在"overclaim"的时代,一篇通篇把自己每个机制标注为"conjecture, not a theorem we prove"、把 ALG4 那个看起来漂亮的 36 分主动揭穿为"门接受了 0 次编辑、其实跑的是控制配置"的伪影、把 best-of-2 因为"从未触发还拉低应用率"而直接从线上栈移除的论文,是稀缺品。JPMorgan 那段法律免责声明之外,正文里的这种"科学免责声明"文化,本身就是一种示范。它对"自己没证明什么"的诚实,超过大多数论文对"自己证明了什么"的诚实。
2. 最深的一句话是"选择而非创造",它有超出本文的产业含义。
门只能在冻结基座已经会产生的行为里挑。实证也印证:基座能力(18/24/25/28)的排序在开关栈后完整保留,10/52 是任何配置都推不动的"能力墙"。对任何在做 Agent 产品的人,这是一条冷静的提醒——harness / loop 层是能力的乘数,不是替代品。这也正好落在这两年逐渐清晰的"prompt → context → harness → loop"工程范式演进上:本文的四层架构(L0 基座 / L1 适配器 / L2 harness / L3 loop 控制器)几乎就是"harness 工程 + loop 工程"的一个教科书式切片。它没有神话 loop,反而给 loop 划了一条能力上界。
3. 一个必须点出的反讽:论文的"概念核心"并不是驱动结果的东西。
被作者称为"贡献"的、理论上最漂亮的那几个证书门控控制器(ALG1/4/5),事件日志显示贡献更少(ALG4 接受 0 次、ALG5 ≈0 次);真正抬升指标的是指令学习器(ALG2/ALG3)和验证引擎(ALG7/ALG8)——也就是那台"喂给门的引擎"。于是一个绕不开的问题浮现:在这个基准上,那套 anytime-valid 门控机器,配得上它的复杂度吗?
这里我给两个都成立的读法,供读者自己权衡:
- 辩方:门本来就该保守。它们的职责是"在有界错误率内防回归",而它们做到了(全栈 4 vs 控制 3 个 p2p 标记,几乎不引入回归)。门弃权 ≠ 门失职;在一个 52 实例、单次运行的评估上,指望它们同时产出显著增益本就不现实。
- 控方:也可能是这套机器对当前 payoff 过度工程化了。真正可迁移、能立刻帮到任何编码 Agent 的,是两个几乎与理论框架无关的工程点——ALG8 的自撰复现预言机("复现 < 修复"的不对称 + 自预言机 steers / 金标只 measures 的严格防火墙)和 ALG10 那个"拒绝手打补丁"的 0/34 反例。我会把这两点当作本文的实用精华单独收藏。
4. 评估的窄与单,读者不要 over-index 那个 65%。
52 实例、偏 Django/Matplotlib、每格单次、无显著性,且是 500 全集的一个小偏子集——它不能和 SWE-bench 排行榜上的数字直接比。作者自己把这些都老实标了,但传播时这个 65% 极易被断章取义。建议引用时务必带上"52 实例子集、单次运行"的限定。
5. 机构语境本身是信息。
一家银行来发"自我进化 Agent",且把整套东西架在"certificate ledger / error budget / familywise error control / 可审计 / NSF 弃权"之上——这是一个被监管行业看待 Agent 自治的独特镜头。它把问题从"它变好了吗?“重述为"我能否在有界错误率内证明它变好了,并事后审计每一个决策?”。对企业级 Agent 部署,这个"先治理、后进步;宁可 NSF 也不冒进"的框架,可能比论文的绝对分数更有长期影响力。对做自主可控、本地化、可审计 AI 的人来说,"冻结基座 + 低维引导适配器 + 版本化 harness + 证书账本"这套可度量、可回放、可归因的底座,恰恰是这一方向天然想要的形态——这层价值,我认为被论文自身的谦逊低估了。
更多推荐

所有评论(0)