harness_evolve/notes/ref27_sia-self-improving-ai.md

SIA: Self-Improving AI with Harness & Weight Updates

一句话总结:把"自我改进 AI"长期割裂的两条路线——改 harness(scaffold)改模型权重(test-time RL)——合并进同一个闭环:让一个叫 Feedback-Agent 的 LLM 在每一步动态地二选一(改 scaffold / 用 RL 改 LoRA 权重),并自己挑用哪种 RL 算法;在法律分类、GPU kernel 优化、单细胞 RNA 去噪三个毫不相干的域上,"双杠杆"都严格超过"只改 scaffold",也都刷新了各自 SOTA。


TL;DR 速览

tags: #harness工程 #自我改进 #test-time-training #test-time-RL #self-improving-agents #LoRA #RL算法选择 #两杠杆

related: [[ref09_meta-harness]](harness 步的直接前身)· [[ref17_self-harness]](自我改 harness 的受控切片)· [[ref24_hyperagents]]("最近的并行工作",只加 scaffold 表达力)· [[ref23_darwin-godel-machine]](Silo 1 代表)· [[ref13_adas-automated-design-agentic-systems]](自动 agentic 设计)· [[ref25_learning-to-discover-at-test-time]](复用其熵效用 loss + LoRA 训练栈)· [[ref26_epistemic-uncertainty-test-time-discovery]](Discover-TTT 线)· [[ref20_alphaevolve]](TriMul benchmark 来源)· [[ref06_spin-self-play-finetuning]](self-play FT)· [[ref14_self-refine]](推理时自改进)


摘要

人是构建和改进 AI 的瓶颈。模型和包裹它们的 agent 都由人来写、调、纠。"AI 自己想办法改进自己"这一长程目标仍未解决。两条基本不相交的研究线各自攻击这个瓶颈:harness-update 学派让一个 meta-agent 重写 task-specific agent 的 scaffold(工具、prompt、重试逻辑、搜索过程),而模型权重固定;test-time training 学派用手写 RL 管线在任务反馈上更新模型权重,而 harness 固定。这两个孤岛各自为政。我们提出 SIA,一个自我改进闭环,其中一个语言模型 agent(Feedback-Agent)同时更新 task-specific agent 的 harness 与权重。

三个对比域的结果:中文法律罪名分类、底层 GPU kernel 优化、单细胞 RNA 去噪。两个杠杆合起来在全部三个 benchmark 上都超过"只迭代 scaffold":LawBench 上 +25.1%(超 prior SOTA),GPU kernel 快 12.4%(1,017 vs 1,161 µs),去噪 +20.4%。Harness 更新让模型变得 agentic,塑造它如何搜索与行动;权重更新则建立起任何 prompt 或 scaffold 都灌输不了的领域直觉。


1 介绍:两个孤岛,各拧一个旋钮

1.1 人是瓶颈

论文的立论很直接:今天 AI 的进展受制于人。模型由研究者设计、后训练;建在模型之上的 agent 由工程师做 scaffold、写 prompt、调试、调参。作者把本文定位成朝"AI 自我改进"这个长程目标迈出的一个具体步骤:一个系统,只给它任务说明和一个verifier,就能同时改进自己的 scaffold 和模型权重,无需进一步人工介入。

1.2 两个孤岛

[!TIP] 什么是 harness / scaffold(本文语境)? 在 SIA 里,scaffold(等价地叫 harness)= agent 里"固定的、非权重的那部分代码",具体是四件东西的并集(§3.1): - 系统 prompt:每次模型调用前拼上的固定文本,用来框定任务; - 工具分派逻辑(tool-dispatch):解析模型工具调用输出、路由到各 handler(文件 I/O、代码执行、数据集查询、grader 调用)的 Python 代码; - 答案抽取(answer extraction):把模型响应(通常是结构化的尾块)转成 benchmark 格式预测的代码; - 任何支撑基础设施:凡是"固定代码而非模型输出"的部分都算。

直觉:模型是"大脑",scaffold 是"大脑的工作台 + 操作规程"。Grader(verifier)不算 scaffold 的可改部分——它是固定的裁判,是优化目标的一部分而非被优化对象。

作者把自动自我改进的研究划成两个孤岛:

Silo 1 — Harness / scaffold 自我改进。 一个 meta-agent 跨代重写 task-specific agent 的 scaffold(系统 prompt、工具分派逻辑、重试策略、答案抽取代码),底层语言模型权重固定。这一派反复出现的经验观察是:scaffold 的编辑集中在"软件工程卫生"——解析、重试、分派——很少能带来基座模型无论给什么 prompt 都产不出的领域推理。

Silo 2 — Test-time post-training。 一个手写 RL 管线在测试时用任务反馈更新模型权重,通常 harness 固定在单一 prompt+grader 模板。这里的增益来自内部策略变化,但交付它的管线由人工设计,不会适应 scaffold 化 agent 会暴露的任务结构。

[!NOTE] The gap(本文的靶心):这两个孤岛各自为政。Harness 工作把模型冻住;test-time training 把 harness 冻住。 SIA 的全部创新就是把这两根被人为分开的杠杆合进一个循环,并让一个 LLM 来动态调度。

各孤岛的代表作对照(§4 会逐个讲透):

孤岛 改什么 冻什么 代表作
Silo 1 Harness scaffold(prompt/工具/重试/搜索) 权重 Darwin Gödel Machine、[[ref09_meta-harness]]、[[ref24_hyperagents]]、ADAS
Silo 2 Test-time RL 权重 harness(单一 prompt+grader) TTRL、Discover-TTT、"TTT 的惊人有效性"
SIA(本文) 两者都改 只冻 grader/verifier

1.3 贡献


2 研究问题

论文围绕两个 RQ 组织(各由后面某节回答):

[!NOTE] RQ1(整体论点):先问——权重冻结时,harness 迭代单独能把 task-specific agent 提升多少? 再问——两根杠杆一起跑(在一个循环里迭代地更新 harness 与权重)能否突破"只改 harness"的天花板? 组合方法是否超过"只迭代 scaffold",且这一结论跨对比域成立吗?

RQ2(机制:每根杠杆改变什么?):权重更新是否浮现出任何 scaffold 编辑都够不到的领域知识?harness 迭代是否产生质上不同的(外部基础设施类)改动?


3 背景与预备

3.1 Agent 及其组件

一个 task-specific agent 是"输入任务实例、输出答案"的程序,分解为:LLM(权重 \(\theta\),全程用 openai/gpt-oss-120b 作基座)、系统 prompt工具分派逻辑答案抽取Grader(确定性 verifier,算 per-instance reward)。前四者(+ 支撑基础设施)合称 scaffold / harness

3.2 Meta-agent vs. task-specific agent

[!TIP] 什么是 meta-agent? meta-agent = 一个"输出本身就是一个 agent"的 LLM 调用。 它不直接解任务,而是生成/修改解任务的那个 agent。SIA 用了两个 meta-agent: - Meta-Agent (M):从任务说明 \(U\) 和参考实现 \(R\) 生成初始 scaffold —— \(A_1 = M(U, R)\)。它只在开局跑一次。 - Feedback-Agent (F):读上一代 scaffold \(A_g\)、执行轨迹 \(\tau_g\)、性能指标 \(E_g\),合成改进后的 scaffold —— \(A_{g+1} = F(A_g, \tau_g, E_g, U)\)。它是驱动整个改进循环的核心。

二者的区别:M 是"从零起草",F 是"看着上一版的实际运行证据来改"。这与 [[ref09_meta-harness]] 的 proposer / [[ref17_self-harness]] 的 proposer 是同一类角色。

\[ A_1 = M(U, R) \qquad\qquad A_{g+1} = F(A_g,\ \tau_g,\ E_g,\ U) \tag{3.2} \]

3.3 轨迹与反馈循环

[!IMPORTANT] 不同于只用聚合指标来驱动改进的系统,F 收到完整轨迹 \(\tau_g\)——即 \(A_g\) 跑评测集 \(D\)完整结构化执行日志:每个任务实例的每次 prompt、模型响应、工具调用、工具结果、抽取的答案。这让 F 能诊断具体失败模式,而不是对着汇总统计做反应。(这一点与 [[ref09_meta-harness]] 的核心主张"不要压缩反馈、把原始 trace 留给 proposer"完全一致。)

每一代 \(g\)三阶段协议

  1. Execution(执行)\(A_g\) 在沙箱里跑 \(D\)——对数据集目录只读、对工作目录读写,捕获轨迹 \(\tau_g\)
  2. Analysis(分析):F 收到 \(A_g\) 源码、\(\tau_g\)、指标 \(E_g\),以及可选的样本任务描述(用来抑制单实例过拟合);
  3. Improvement(改进):F 产出两件东西——一份改进报告(散文式分析 + 提议的改动)和下一代 agent \(A_{g+1}\)

3.4 符号表

符号 含义
\(g\) 代(generation)索引
\(G_{max}\) 最大代数
\(A_g\) \(g\) 代的 agent scaffold
\(D\) 评测数据集
\(U\) 任务说明(benchmark 描述 + 样本实例)
\(E_g\) \(g\) 代的性能指标与错误日志
\(\tau_g\) \(g\) 代的执行轨迹
\(F\) Feedback-Agent
\(G\) RL 训练时每个状态的 rollout 数
\(\pi_\theta\) 当前策略(带可训练权重 \(\theta\) 的模型)
\(\pi_{\theta_0}\) 冻结的参考策略(基座模型)
\(s\) 初始状态(任务 prompt)
\(a\) 动作(模型生成的响应 / rollout)
\(V(s,a)\) 给定状态 \(s\)、动作 \(a\) 的任务 reward

4 相关工作:把 SIA 摆进坐标系

作者逐个孤岛survey,点明 SIA 补的具体空缺,最后用 Table 1 收口。这里把重要前作讲透。

4.1 Harness / scaffold 自我改进

[!TIP] Darwin Gödel Machine(Zhang et al., 2025)——见 [[ref23_darwin-godel-machine]] 对 agent 源码做进化搜索:一个 agent 种群对自身提出并评估代码变异,最高适应度的变体存活。模型固定。它是 Silo 1 里"开放式自改进 agent 本体"的代表。SIA 与它的区别:DGM 只在代码空间进化,SIA 在 harness 收敛后切到权重更新

[!TIP] Meta-Harness(Lee et al., 2026)——见 [[ref09_meta-harness]] LLM 驱动的 harness 变异,对 harness 图做端到端优化。SIA 明说自己的 harness 更新步"在精神上最接近 Meta-Harness";唯一区别是——SIA 在 harness 收敛之后跟上权重更新,而不是继续变异 harness。换句话说 SIA 的"H 阶段"≈ 一个简化版 Meta-Harness,真正的新东西是后接的"W 阶段"。

[!TIP] Hyperagents(Zhang et al., 2026)——见 [[ref24_hyperagents]],"最近的并行工作" Hyperagents 让元机制本身(meta-agent 编辑 task-specific agent 所依据的规则)也可编辑,而不只是 task-specific agent 可编辑——即 agent 与 agent-improver 共同进化与 SIA 的区别在"杠杆":Hyperagents 给 scaffold 编辑加表达力,但权重仍冻结;SIA 加的是第二根、基于权重的杠杆。二者是"加深同一根旋钮" vs "加一根正交旋钮"。

其余:AI Scientist(Lu et al., 2024) 全研究管线 meta-agent(产出研究成果而非改后的 scaffold,scaffold 跨 run 固定);Automated design of agentic systems(Hu et al., 2024)——见 [[ref13_adas-automated-design-agentic-systems]],在积木(子 agent/工具/prompt)组合上做元搜索,模型固定;AutoResearcher(Karpathy, 2026) 静态 scaffold 做自主 ML 实验,架构本身不跨迭代变。

4.2 Test-time training / test-time RL

[!TIP] Learning to discover at test time(Yuksekgonul et al., 2026)——见 [[ref25_learning-to-discover-at-test-time]] 这是 SIA 训练更新步直接采用的目标函数来源。 它在测试时用 rollout、在一个熵效用(entropic-utility)目标下训练权重;SIA 复用了这个 loss 以及基于 LoRA 的训练栈。所以 SIA 的"权重杠杆"不是从零发明的 RL,而是站在 Discover-TTT 的肩上——SIA 的贡献是"何时调用它、跟哪种 harness 状态配合调用它"。相关的还有 [[ref26_epistemic-uncertainty-test-time-discovery]](同一 Discover-TTT 谱系)。

[!TIP] TTRL(Zuo et al., 2025)无标注测试数据上做 RL,用多数投票导出的伪奖励。设定是"单 prompt、单响应",没有 scaffold、没有 per-instance verifier。SIA 的差异:reward 是一个确定性任务 verifier,rollout 是scaffold 化的(经过一整套 agent 流程),而非裸模型的单次回答。

[!TIP] STaR / Self-Refine / Reflexion / Self-play FT / EUREKA - STaR(Zelikman 2022):在自生成 rationale 上微调(一种监督式权重更新)。 - Self-Refine(Madaan 2023)/ Reflexion(Shinn 2023)——见 [[ref14_self-refine]]:纯推理时操作,无权重更新(口头批评 / 迭代自反馈)。 - Self-play fine-tuning(Chen 2024)——见 [[ref06_spin-self-play-finetuning]]:用模型自身输出当训练信号迭代微调,训练管线手写、scaffold 固定。 - EUREKA(Ma 2023):LLM 生成 reward 函数(scaffold 侧改动)→ 用来训 RL 策略(权重侧改动)。两组件有交互,但 reward 生成器不被训练出的策略更新——是单向而非共演化。SIA 的区别:Feedback-Agent 在一个闭合反馈环里动态在 scaffold 与权重更新之间选择,每种更新都由"当前两组件状态下产生的轨迹"来告知。

4.3 RL 与训练基础设施

所有训练用 gpt-oss-120b + LoRA rank 32。权重更新在 H100 上、经 Modal(作者的 RL 训练平台)执行,单一托管管线内完成 rollout 生成、reward 分配、梯度更新。SIA 把这些基础设施当作 Feedback-Agent 控制下的可组合组件,把"权重更新"视为与"scaffold 重写"并列的两个可选动作之一。相关基础设施:verl/HybridFlow、SkyRL、LLaMA-Factory、Axolotl。

4.4 对比表(全文定位的落点)

[!NOTE] Table 1|沿两个轴对比各自我改进 / 自动 agent 系统:① 改 harness 吗?② 改权重吗?

Agent 改 harness 改权重
SIA(本文) Yes Yes
Hyperagents (2026) Yes No
Darwin Gödel Machine (2025) Yes No
Meta-Harness (2026) Yes No
AI Scientist (2024) Partial No
Automated agentic system design (2024) Yes No
AutoResearcher (2026) No No
TTRL (2025) No Yes
Discover-TTT (2026; 2024) No Yes
EUREKA (2023) Partial Yes
FunSearch (2024) Partial No
Voyager (2023) Yes No
Self-Refine / Reflexion (2023) Partial No
STaR (2022) No Yes
ReAct (2022) No No

SIA 是(据作者所知)唯一在单个自我改进循环里同时更新 scaffold 与权重的条目——即表中唯一"两列都 Yes"的行。 这张表就是全文的一句话论点的可视化:整个 2×2 象限里,右上角(两者都改)此前是空的。


5 方法:一个循环,两根杠杆

5.1 总览

[!IMPORTANT] SIA 是一个由三个 LLM 组件驱动的可配置循环:Meta-Agent、Task-Specific Agent、Feedback-Agent。Meta-Agent 初始化 scaffold;每次执行后,Feedback-Agent 观察轨迹与性能,然后在每一步动态地二选一: - harness update:scaffold 演化,权重固定; - training algorithm update:权重更新(用 Feedback-Agent 自选的某种 RL 方法),scaffold 固定。

动作的选择、以及选权重更新时用哪种训练算法,都以任务类型和观察到的 reward 动态为条件"Harness Update Phase"和"Weight Update Phase"只是这两类动作的软标签,不是刚性的顺序阶段。

Figure 2:SIA 的概念视图——两根杠杆、一个循环

Figure 2 逐元素解读(这张图是全文方法的心脏,把"两杠杆一循环"讲清楚):

[!TIP] 为什么用"软标签、自由交错"而不是"固定先 H 后 W"?(讲透 + 举例) 表面看 SIA 在实验里其实是"先跑 harness 直到停滞、再切权重"(§6.2 说"across all tasks, the Feedback-Agent begins with scaffold iteration and switches to weight updates once harness progress stalls")。那为什么方法上要强调"可自由交错"? - 动机:把"何时切换"这个决策下放给 Feedback-Agent,而不是写死成硬编码的调度。这样同一套框架能适应不同任务的 reward 动态——有的任务可能 harness 早早饱和、有的可能需要在权重更新后回头再改 harness。 - 举例:在 TriMul 上,如果一次权重更新让模型学会了 shared-memory tiling,Feedback-Agent 理论上可以回头再改 harness(比如加一个能利用新能力的 kernel 模板),再切回权重。这种"W→H→W"的可能性正是软标签设计要留的口子。 - 代价与现状:作者诚实地把"更细粒度的交错"列为 future work(§9),承认当前循环是"离散、粗粒度的轮次"。所以 Figure 2(b) 的自由交错更多是设计愿景,实验里跑的是它的一个特例(H-block 后接 W-block)。

Figure 3:SIA 系统架构

Figure 3 逐块解读(信息流全景):

5.2 系统组件

[!NOTE] 关键实现细节(谁用什么模型):跨所有实验—— - Meta-Agent 和 Feedback-Agent 用 Claude Sonnet 4.6(即"出主意/改 scaffold/选算法"的大脑是 Claude); - Task-Specific Agent 用 gpt-oss-120b(harness 步)或其 RL 适配的 checkpoint(训练步)。

这个分工很值得注意:被优化的模型(gpt-oss-120b)和做优化决策的模型(Claude Sonnet 4.6)是两个不同的模型。这与 [[ref17_self-harness]]"提议者=被评估模型本身"形成鲜明对比——SIA 是"强外部 meta-agent 指导 + 权重杠杆",更接近 [[ref09_meta-harness]] 的"强外部 proposer"路线,只是多了权重这根杠杆。

5.3 Harness 更新

当 Feedback-Agent 选 harness 更新,循环跑一步 scaffold 演化,走 Execution→Analysis→Improvement 协议。rollout 由当前模型 \(\pi_\theta\)(基座或 RL 适配后)产生;权重 \(\theta\) 在这一步冻结,只有 scaffold \(A_g\) 变。递归式:

\[ A_{g+1} = F\big(A_g,\ \tau_g(\pi_\theta),\ E_g,\ U\big) \tag{5.3} \]

其中 \(\tau_g(\pi_\theta)\) 表示用模型 \(\pi_\theta\) 执行 scaffold \(A_g\) 收集的轨迹。

[!TIP] 把式 (5.3) 讲透 逐项:Feedback-Agent \(F\) 吃四样东西——上一代 scaffold \(A_g\)用当前权重 \(\pi_\theta\)\(A_g\) 得到的轨迹 \(\tau_g(\pi_\theta)\)、指标 \(E_g\)、任务说明 \(U\)——吐出下一代 scaffold \(A_{g+1}\)。 - 和 [[ref09_meta-harness]] 式 (1) 的关系:Meta-Harness 优化的是 \(H^* = \arg\max_H \mathbb{E}[r(\tau,x)]\)(在程序空间里搜最优 harness)。SIA 的 (5.3) 是这个搜索的一步迭代算子——F 就是那个 proposer。 - 关键的新记号是 \(\tau_g(\pi_\theta)\) 里的 \(\pi_\theta\):它显式标出"轨迹依赖当前权重"。这正是两杠杆耦合的数学体现——一旦权重被更新过(\(\theta\) 变了),后续 harness 步看到的轨迹分布也随之改变。这也是 §8"耦合共演化 Goodhart"担忧的根源。 - Sample-task 正则化:Meta-Agent 在 scaffold 生成时被一组多样的任务说明所条件化,缓解初始 scaffold 对单个 benchmark 实例的过拟合。


6 实验:三个对比域

在法律、系统、生物三个任务上评估。选这三个是因为它们常被用来评测其他自我改进系统,便于直接对比。

6.1 设置

[!NOTE] Table 2|每任务评测设置

任务 训/测 指标 Prev. SOTA Verifier
LawBench(191 类) 中文法律 5,332 / 913 top-1 准确率 0.450 held-out 测试划分 grader
AlphaEvolve TriMul 底层 n/a / 固定输入形状 score = 1500/runtime(越高越快) 1.292 H100 计时
MAGIC scRNA-seq 去噪 单细胞 n/a / 胰腺 scRNA-seq mse norm(∈[0,1],越高越好) 0.24 对 ground truth 的 MAGIC 参考

所有权重更新步都用 LoRA(rank r=32,学习率 4×10⁻⁵) 适配 gpt-oss-120b。

6.2 Baseline 结构

[!IMPORTANT] Baseline 的定义很关键:因为 harness 更新步从一个"meta-agent 初始化的、围绕 gpt-oss-120b 的 scaffold"起步,初始分数按构造 = gpt-oss-120b 经过 Meta-Agent 初始 scaffold \(A_1\) 过滤后的结果\(A_1\) = 一个任务专用系统 prompt + 单工具分派循环 + 输出解析器,在任何 Feedback-Agent 迭代之前从 benchmark 说明一次性生成)。然后: - harness 更新轨迹 = 追踪"scaffold 迭代在 baseline 之上加了什么"; - 权重更新轨迹 = 追踪"权重更新在 harness-only 最优之上加了什么"。

跨所有任务,Feedback-Agent 从 scaffold 迭代开始,等 harness 进展停滞后切到权重更新;报告 SIA-H(harness-only 最优)和 SIA-W+H(harness + 权重最优)以隔离每根杠杆的贡献。

6.3 三个任务的结果

Figure 1:SIA 在三个多样任务上的招牌结果

Figure 1 逐面板解读(全文的招牌图,三面板对应三域):每个面板比较 5 个操作点——Baseline(灰,第一代无 SIA)、Codex(深灰,Codex 5.5)、Claude Code(橙,Opus 4.7)、SIA-H(浅蓝,只 harness)、SIA-W+H(深蓝,harness+权重),红色虚线标 prior SOTA。

6.3.1 LawBench:191 类中文刑事罪名分类

[!TIP] 什么是 LawBench 的 191 类罪名分类? 取自真实中文刑事案件描述的多类法律文档分类。给一段事实案情摘要,模型要从中国刑法的 191 个不同罪名里选对。这 191 类编码了连训练有素的从业者都觉得吃力的细粒度法律区分:盗窃的类别(普通盗窃、公共财产盗窃、职务侵占)、伤害的分级(一般、加重、重伤)、诈骗的变体,各自在法律上精确的事实要件上不同,直接影响量刑。随机猜正确率 <1%。 5,332 训练样本 / 913 测试样本,全在 held-out 测试划分上评估。

Figure 4:LawBench 结果详图

Figure 4 解读:LawBench 单任务的 5 柱条形图(Baseline 0.135 / Codex 0.193 / Claude Code 0.173 / SIA-H 0.500 / SIA-W+H 0.701),红虚线 = prior SOTA 0.450。它是 Figure 1 左面板的放大版,最清楚地展示"两段式增益":从 Baseline 到 SIA-H 是 harness 的功劳(0.135→0.500,翻近 4 倍),从 SIA-H 到 SIA-W+H 是权重的功劳(0.500→0.701)。两段增益幅度相当,印证"两根杠杆各占独立改动空间、谁都不饱和另一个"。

6.3.2 AlphaEvolve TriMul:蛋白质结构预测的 CUDA kernel 优化

[!TIP] 什么是 TriMul(triangular multiplicative update)? AlphaFold2 的 Evoformer 模块里的一个核心操作,用于在蛋白质结构预测中传播成对残基相互作用特征。任务(取自 [[ref20_alphaevolve]] benchmark)要求 agent 为这个操作在 H100 GPU 上写一个自定义 CUDA kernel。TriMul 是内存带宽受限而非计算受限的:由于三角稀疏结构,线程访问非连续内存,引发 warp 分歧和 cache miss,让标准稠密矩阵优化技术失效。要高吞吐得靠 H100 特有知识(tensor core 调度、shared-memory tiling、寄存器压力管理),而 cuBLAS/cuSPARSE 这些标准库对这个操作不适用。score = 1500/runtime,越高越快。

6.3.3 MAGIC scRNA-seq 去噪:单细胞 RNA 插补

[!TIP] 什么是 MAGIC(Markov Affinity-based Graph Imputation of Cells)? 单细胞 RNA 测序(scRNA-seq)测成千上万个细胞的基因表达,但计数矩阵高度稀疏:许多真实非零计数因技术性 dropout 被观测成零。MAGIC 的解法:在细胞间构建 k-近邻图 → 计算 Markov 转移概率 → 沿图邻居扩散表达值以插补缺失信号。任务要 agent 调 MAGIC 的耦合超参(邻居数 \(k\)、扩散步数 \(t\)、核带宽 \(\alpha\))和预处理选择,在胰腺 scRNA-seq 数据上。优化非平凡:\(k\) 太小对单细胞噪声过拟合、太大过度平滑毁掉真实生物信号。mse norm 是对 ground truth 的归一化重建质量分(越高越好,1.0 完美)。

[!NOTE] 这是全文最有说服力的定性证据(RQ2 的存在性证明):去噪任务上,np.clip + np.rint 这个改动在概念上属于 scaffold(它就是两行后处理代码!),但无论 harness 怎么迭代都没被提出来,反而是权重更新这条路径"逼"出了它。这有力地说明——权重更新塑造的是模型"关于解的先验(prior over solutions)",它会引导模型自发写出连 scaffold 搜索都想不到的、符合领域约束的代码。杠杆之间不是简单叠加,而是互相解锁了对方的搜索空间。


7 讨论:每根杠杆改变什么

7.1 组合 vs. 只 harness(RQ1)

[!NOTE] Table 3|消融:SIA-H vs. SIA-W+H("Initial" = gpt-oss-120b 经 Meta-Agent 初始 scaffold \(A_1\) 的分数)

任务 Initial Prev. SOTA SIA-H(只 harness) SIA-W+H(harness+权重)
LawBench(top-1 acc) 13.5% 45.0% 50.0% 70.1%
AlphaEvolve TriMul(reward) 0.105 1.292 0.120 1.475
Denoising(mse norm) 0.048 0.240 0.241 0.289

SIA-W+H 在每个任务上严格超过 SIA-H,确认 RQ1。 增益可观:LawBench +20.1 pp、TriMul runtime 降 91.9%(12,483→1,017 µs)、去噪 +20%。每根杠杆占据不同的改动空间——外部 scaffold vs 内部参数——所以谁都不会饱和另一个能提供的增益。

特别注意 TriMul 那一行:SIA-H 只从 0.105 挪到 0.120(几乎没动!),而 SIA-W+H 冲到 1.475。这一行单独就证明了"在某些任务上 harness 杠杆几乎无效,权重杠杆才是关键"——反过来 LawBench 上 harness 从 13.5% 拉到 50% 又证明"另一些任务上 harness 杠杆威力巨大"。两根杠杆的相对重要性随任务而变,这正是需要一个能动态选择的 Feedback-Agent 的理由。

7.2 Harness 迭代改变什么?(RQ2a)

Harness 迭代产生外部化的改动——新工具、更严的解析器、搜索过程、重试策略、prompt 结构,而权重不变。三个任务上观察到 Feedback-Agent 在搭建越来越专门的 scaffolding:

任务 Harness 迭代搭出的东西
LawBench 一个结构化答案抽取层 + 一个在模型 top 候选上的 SVC 重排器
TriMul 一个把 CUDA 诊断作为结构化上下文反馈的编译错误解析器 + 一个返回中位 runtime 的计时 harness
MAGIC 去噪 一个批量配置驱动器 + 一个把(参数集, 分数)对组织好供模型推理的结果解析工具

三例中改动都是软件工程改进:新工具、更严输出解析、更聪明的重试。模型 checkpoint 全程不变;所有增益都来自"scaffold 如何在模型与任务环境之间做中介"。(这直接印证了 §1.2 说的 Silo 1 通病——harness 编辑集中在软件工程卫生。)

7.3 Feedback-Agent 如何施加权重更新(RQ2b)

[!IMPORTANT] Feedback-Agent 不跑固定的 RL 流程,而是根据轨迹观察在多种算法里选。作者坦言:本文只报三个任务,但他们在更广的任务集上跑过 SIA,下面的算法描述反映的是那些更广实验里观察到的常见模式。三个报告任务里:LawBench 观察到 PPO+GAE、TriMul 观察到熵优势加权、去噪观察到 GRPO。

作者给出了一个"什么时候用哪种 RL 算法"的决策图谱(这是 §7.3 最有价值的可迁移知识):

[!TIP] 六种 RL 算法及其触发条件(讲透 + 举例)

算法 观察到用它的条件 核心机制 典型任务
PPO + GAE step 级 reward 密集、训练稳定性是瓶颈 value head \(V_\phi\) 产 per-token 优势 \(\hat{A}_t = \sum_l (\gamma\lambda)^l \delta_{t+l}\);clipped surrogate 约束在 trust region 内 多步工具用 / 长代码生成(一次灾难性更新会崩策略)
GRPO rollout 便宜可采样、verifier 在 episode 末尾触发 在大小为 \(G\) 的 rollout 组内归一化优势 \(\hat{A}_i = (r_i - \bar{r})/\sigma_r\)完全去掉 value 网络 分类 / 短答 / 单元测试(数百 completion 一次前向可评分)
熵优势加权 reward 直方图重度右偏(正确解稀有但单个高信号) softmax + 自适应温度 \(\beta\) 重分配梯度质量 \(w_i \propto \exp(r_i/\beta)\),不把低于均值的 rollout 归零 难数学证明 / 低通过率代码合成
REINFORCE + KL-to-base reward 密集、主要风险是能力回归而非梯度方差 Monte Carlo 回报 \(R_t = \sum_{t'\ge t}\gamma^{t'-t} r_{t'}\) 直接当优势 + \(\alpha \text{KL}(\pi_\theta\|\pi_{\theta_0})\) 罚项;无 critic、无分组 细粒度域适配(基座已近可用、不想大幅移动参数)
Best-of-N 行为克隆 reward 极稀疏 \(\mathbb{E}[r]\approx 0\)、策略梯度信号数值为零 把 verifier 分数 top-k 的 rollout 用交叉熵蒸馏进模型(phase-zero 冷启动) 抬高 baseline 通过率到 PPO/GRPO 可行的水平
DPO verifier 能排序但不能绝对打分 给定胜/负 rollout \(y^+/y^-\),直接最小化 \(-\log\sigma(\beta\log\frac{\pi_\theta(y^+)}{\pi_{\theta_0}(y^+)} - \beta\log\frac{\pi_\theta(y^-)}{\pi_{\theta_0}(y^-)})\),无 reward model 软质量标准、序数信号可靠但基数 reward 不可靠

举例说明"为什么 TriMul 用熵优势加权而非 GRPO":TriMul 的 reward 直方图重度右偏——一批 128 个生成 kernel 里可能 120 个编译失败(reward≈0)、只有几个能跑且各有不同 runtime。若用 GRPO 的组内归一化 \((r_i-\bar{r})/\sigma_r\),那 120 个近零 rollout 会把均值 \(\bar{r}\) 压得极低、方差 \(\sigma_r\) 极大,稀释掉那几个高信号 kernel 的梯度。而熵优势加权 \(w_i\propto\exp(r_i/\beta)\) 用 softmax 把梯度质量集中到高 reward 的少数 rollout 上,且温度 \(\beta\) 在线调节保证有效样本量不塌缩到单条轨迹。这就是"根据 reward 分布形状选算法"的具体逻辑。

7.4 权重更新改变什么(RQ2b)

权重更新产生内化的知识:编码进模型参数、任何 scaffold 编辑都够不到的领域特定模式。不同于修改模型周围基础设施的 harness 改动,权重更新直接修改模型关于解的先验

[!IMPORTANT] 一句话概括 RQ2:harness 塑造 agent **怎么搜;权重更新改变模型知道什么("The harness shapes how the agent searches; weight updates change what the model knows.")。**每种内化知识都是任务特定、verifier 对齐的——它从直接的梯度压力涌现,而非任何人类撰写的指令。这就是全文 abstract 那句"harness make the model agentic; weight updates build domain intuition"的机制层展开。


8 局限

[!IMPORTANT] 耦合共演化 Goodhart(Coupled co-evolutionary Goodhart)——这是作者唯一列出的局限,但相当深刻。 Harness 搜索和 RL 权重更新都对着同一个固定 verifier \(V\) 优化每一遍都在塑造另一遍看到的分布:harness 找到"对当前策略容易利用"的 scaffold;权重则在"一个即将被改动的 scaffold 收集的数据"上训练。这个耦合系统的联合不动点是两个对彼此更新历史盲目的优化器之间的 Nash 均衡,而不是"在分布外 scaffold 或新策略上最大化 \(V\)"的点。

为什么这比标准 Goodhart 更麻烦:标准 Goodhart 分析假设单个优化器;两杠杆设定产生一个耦合变体——它的不动点可能在训练 verifier 上看起来很强,但在对任一组件的任何扰动下都很脆弱。这实际上是对"两杠杆自我改进"的一个根本性警告:你可能优化出一个"scaffold 和权重互相刷分"的局部最优,一旦换环境就崩。


9 未来工作

[!TIP] ① Meta-RL over the action-selection policy(把"选杠杆"这件事本身变成可学习的) Feedback-Agent 目前用冻结的 LLM 先验在 harness / 权重更新之间选。更原则化的做法:把选择策略本身当作要学的对象——在一个任务分布上跑 SIA,把每个 (轨迹, 动作, 结果) 三元组当作外层 MDP 的一个 transition,用 RL 训练这个 selector。这创造出一个真正递归的结构——一个"其改进机制本身也在自我改进"的系统,并引出关于这类嵌套循环稳定性的、区别于单层 RL 或元学习的非平凡问题。这与 [[ref24_hyperagents]]"让元机制也可编辑"是同一方向的不同实现(RL vs LLM 编辑)。

[!TIP] ② 更细粒度的交错训练与 harness 切换 当前 SIA 在离散、粗粒度的轮次里交替 harness 搜索和权重更新阶段。更细的调度——Feedback-Agent 能在 harness 搜索中途触发权重更新、或在一次梯度步后立即恢复 harness 探索——能减少"观察到平台期"和"对它采取行动"之间的滞后,可能解锁粗粒度交替错过的改进轨迹。这坦承了 Figure 2(b) 的"自由交错"目前只是愿景、实验跑的是 H-block→W-block 的特例。


个人思考

⭐ 与 [[ref09_meta-harness]] / [[ref17_self-harness]] 的三角对照(本项目最值得写的一组)

SIA 明确把自己接在 Meta-Harness 之后("harness 步精神上最像 Meta-Harness,区别是我们在 harness 收敛后接权重更新")。把三篇摆一起,能把"自动 harness 优化 → 自动 harness+权重优化"的演进讲清:

维度 Meta-Harness (ref09) Self-Harness (ref17) SIA (ref27)
改什么 只改 harness(代码空间搜索) 只改 harness(有界最小编辑) harness + 权重(LoRA)
谁来改 强外部 proposer(Claude Code + Opus) 模型自己(提议者=被评估模型) 强外部 meta-agent(Claude Sonnet 4.6)改 gpt-oss-120b
权重 冻结(明确留作未来) 冻结 用 RL 更新
反馈 全历史文件系统(可 grep) 当轮聚类后的失败证据包 完整执行轨迹 \(\tau_g\)
核心新意 "不压缩反馈 + 代码空间搜索" "自我改进的工程纪律(证据/回归门/审计)" "两根正交杠杆 + LLM 动态调度"
准入 Pareto 前沿 保守非回退门(两 split 都不降) 无显式门(切换靠 Feedback-Agent 判停滞)
共同基准 TerminalBench-2 Terminal-Bench-2.0 LawBench / TriMul / scRNA-seq

我的判断SIA 是 ref09 结尾那句"未来方向:co-evolve harness 与模型权重"的第一个正式兑现。它最干净的贡献不是任何组件(harness 步≈简化版 Meta-Harness,RL loss 直接抄 Discover-TTT),而是证明了两根杠杆占据不相交的改动空间、且相对重要性随任务剧烈变化(TriMul 上 harness 几乎无效、LawBench 上 harness 威力巨大)——这就从经验上论证了"为什么需要一个能动态选杠杆的调度器"。但它也比 ref17 在安全纪律上退了一步:SIA 没有 Self-Harness 那种"回归门 + 有界编辑 + 审计",而 §8 的"耦合 Goodhart"担忧恰恰说明它需要这类护栏。一个自然的合流猜想:把 ref17 的"证据聚类 + 非回退回归门"当安全外壳,套在 SIA 的"双杠杆 + Discover-TTT loss"之上——既有两根杠杆的威力,又有可审计、抗 Goodhart 的纪律。这可能是本项目叙事里一个很好的"未来方向"落点。

与更广谱系的关联

方法论启示(可迁移)

  1. "两个正交杠杆"是一个可推广的框架视角:任何系统若同时有"外部代码/配置"和"内部参数/权重"两个可改层,都值得问"能不能让一个调度器动态在两者间选"。SIA 证明了这两层往往占据不相交的改动空间、不互相饱和。
  2. §7.3 的"reward 分布形状 → RL 算法选择"决策图谱是我见过最实用的一份"RL 算法选型 cheatsheet":右偏稀疏→熵加权、便宜可并行→GRPO、稳定性瓶颈→PPO、怕回归→REINFORCE+KL、极稀疏→Best-of-N BC 冷启动、只能排序→DPO。这份图谱本身就值得单独抽出来当工具。
  3. 权重更新能"解锁"scaffold 想不到的代码np.clip+np.rint 那个例子)是个反直觉但重要的观察:训练权重不只是"让模型更准",还能改变模型的解空间先验,让它自发写出符合领域约束的结构。这对"该调 prompt 还是该微调"的老问题给了一个新答案——有时微调反而更能引出正确的符号化行为。

在我的工作中能怎么用

开放问题 / 疑问