🎯一句话判断:约束搜索轨迹,不约束编辑空间

核心判断:RRSI 的关键设计选择是"开放编辑空间 + 正则化搜索轨迹"。它没有限制 harness 可以包含什么——prompt、控制流、配置、上下文管理、工具、skill、记忆、sub-agent 全可改;它约束的是搜索如何在这个空间里移动:一次能捆几个独立编辑、编辑是否基于已证伪的历史、噪声带内的收益算不算数、新增 token 成本是否被实测收益偿付。这使 RRSI 与"限制 harness 形态"的方法在哲学上区分开,也是其 OOD 泛化收益的主要来源。
3实例共享同一循环:coding / workspace / eng
9 类可编辑组件词表 K(含 4 类结构组件)
+6.0 / +1.8Terminal-Bench 演化增益 / SWE-bench OOD 残差
~3,100 行rrsi/ 搜索核心(不含 domain 适配器)

🧩问题设定:冻结模型之上的可演化 harness

RRSI 把一个 agent 拆成两层:policy 模型(冻结,不参与训练)与 harness(包裹模型的脚手架:系统 prompt、控制流、工具注册、记忆、上下文压缩、子代理调用)。论文论点直白——agent 的能力大头由 harness 决定,而 harness 是纯文本与代码,因此可以被另一个 LLM 直接改写。这构成一种"自我改进":改进者与被改进者的运行底座都是冻结模型,但改进的对象是 harness 这个可写层。

朴素做法——对着固定 evolve set 迭代改 harness——的问题是过拟合:harness 会"记住"训练任务,在演化集上出现的任务名、实体、期望答案被写进代码,分布内指标大涨,换成 OOD 基准收益就缩水甚至归零。RRSI 的对策不是缩小编辑空间,而是在搜索轨迹上加正则化,分为提议侧(proposal side)与选择侧(selection side)两组机制。

H_{t+1} = argmax_{H' ∈ admissible} S'(H'),或无可行候选时 H_{t+1} = H_t admissible 条件:S' ≥ S* − δ(噪声地板)∧ 成本规则 c ∧ 领域守卫 guards 全部通过——selection.py

🏗️总体架构:一轮七步,候选活在 git worktree 里

搜索核心在 rrsi/loop.py 的 Run.round(t),每一轮严格按算法 1(提议侧)→ 算法 2(选择侧)执行:

1Analyze分析器对现任 harness 的评测产出三透镜报告 F_t
2预算与指令退火编辑预算 b_t;停滞旗标 σ_t、未试组件 U_t、剪枝集 B_t
3起草 m 个候选每个候选一个 git worktree + 独立分支
4Critic 筛查评测前先做泄漏检查,可修复则打回修改
5并行评测存活候选在完整 evolve set 上跑 k trials
6算法 2 裁决可行性判定 + argmax + 写历史
7fast-forwardevolve/<domain> 分支快进到胜者 commit

这套实现里最值得注意的两个工程决定:

另有三个运维子命令构成完整的"实验治理"面:calibrate(用基准评测的 bootstrap 或重复测量估计噪声带 δ = z·sd(null ΔS))、readjudicate(改 δ 或权重后对某一轮的已存测量重跑算法 2,不花新评测预算)、reevaluate(基础设施故障后对一轮候选重测再重裁)。driver 还规定:一轮未结算最多重试 3 次,连续 infra 失败即停,防止坏环境烧光预算。

📐提议侧正则化:预算退火、历史条件化与强制归因

Analyze:三透镜报告 F_t

批量分析器(analyst.py)自己不读原始轨迹,而是派出只读 digester 子代理(digester.py)逐条调查——工具被监禁在当轮渲染轨迹目录里,bash 仅放行 grep/cat/jq 等只读命令,写操作全拒。产出的报告固定三透镜:failure_modes(丢分机制,跨任务聚类)、capability_gaps(agent 想做但做不到的)、success_habits(让高分任务干净收尾的习惯,作为提议者不许破坏的回归护栏)。

退火编辑预算 b_t

每轮候选最多捆 b_t 个独立可归因的编辑:

b_t = ⌈b_min + (b_max−b_min)·½(1+cos(πt/T))⌉schedule.py — 早轮允许多个协调编辑打包,晚轮变得稀疏、可归因

约束的是 ‖z_t‖₀(一个提议里激活的独立编辑数),不是 harness 最终能装的机制集合。预算在 done() 里硬执行——超预算或无标签提交被打回,绝不接收。

历史条件化 L_t 与探索指令 E_t

提议者以完整编辑历史为条件:每个编辑记录组件、假设、实测 ΔS/ΔC 与裁决——已证伪的假设不会被重画。停滞旗标 σ_t = 𝟙[S_t − S_{t−w} ≤ δ] 触发时,候选槽位为从未行使过的组件保留(m_draft 个),把停滞的搜索重定向到未探索的机制(history.py: stall_flag / exploration)。

提议者的"宪法"与结构化假设

提议者是 Claude Opus 4.8 编码 agent,通过严格 JSON 协议(list_files / read_file / read_trace / edit_file / write_file / done)在候选 worktree 内原地改 harness,路径监禁在 harness 目录(propose.py: Workspace)。每个编辑必须申报:component、hypothesis、targets_mode、why_not_lower_lever、trigger_condition、predicted_affected(具体任务 id)、retroactive_check(三段式反事实:纠正性/保护性/迁移性)、regression_risk。预测命中率会记分并回喂——过度宣称会被计入。没有 abort 动作:必须交卷,"不建的机制没有测量"。

⚖️选择侧正则化:泄漏筛查、噪声地板与成本规则

Critic:评测前的泄漏闸门

critic.py 在任何评测预算花出去之前先审 diff。两层:确定性 denylist(通用凭证模式 + 领域自有的 grader 路径/任务 id/裁判引用正则)+ LLM 审查(六类拒则:任务特化泄漏、退化/无效改动、grader 作弊、未申报捆绑、运行时记忆/skill 泄漏、无界工作循环)。拒绝意见打回给提议者做有界修复(repair_rounds=5),修不好的候选直接丢弃并记入历史——不消耗测量。

噪声地板与成本规则

S' ≥ S* − δ;ΔS > δ 时要求 ΔC ≤ β₀ + β₁·ΔSselection.py — δ 由 calibrate 用基准评测 bootstrap 标定;β₀=0.10 意为"10% 额外 token 免费"
带内(ΔS ≤ δ):w_s·ΔS − w_c·ΔC + w_n·ν > 0噪声带内的候选只能靠省钱或触碰新结构组件入选,不能靠带内分数收益

缺失 trial 按 r=0 计、分母全额保留——候选不能靠"摧毁自己做不出的任务"显得更好。无可用 token 成本测量的候选被成本规则拒绝,而不是当作零成本。

通过闸门后按 S' 取 argmax;无人可行则 H_{t+1}=H_t——这一步本身就是正则化:搜索宁可停也不接受噪声。S*(历史最优)单调更新,地板随水位抬升,防止后期衰退。

🏷️组件词表与逐编辑归因:演化史上的"实验记录"

每个编辑必须挂到固定组件词表 K 上,申报标签还会被 diff 证据校验——声称是 skill 的编辑若 diff 里没有 skill 机制信号,会被 diff 分类器改判,防止用"未试组件"标签骗探索槽位:

组件类性质说明
prompt / control_flow / config / output_plumbing / context_mgmt文本与逻辑改 prompt 文案、循环与分支、参数、输出装配、上下文压缩策略
client_tool / skill / memory / subagent结构组件 K_str新增机制(工具、skill 文件、记忆存储、子代理调用);novelty ν 只对 K_str 计数——首个触碰某结构组件的入选编辑获得带内加成

history.jsonl 逐编辑记录 (t, 组件, 假设, diff 路径, ΔS, ΔC, 是否被接受);捆了 n 个编辑的候选共享一次测量,b_t 退火到 1 后记录即单组件证据。近产率 g_t(l) = max{ΔS_i : l_i=l, t−t_i≤n_prune} 驱动剪枝集 B_t——近期不再产出收益的组件,其已入选的机制被作为合法编辑目标移除。attribution.jsonl 另记每条编辑的 predicted_affected 命中率与未预测回归,构成可审计的归因证据链。

🔌Domain 适配器:一个接口挂三个异质实例

核心循环从不直接跑 agent、改分数或读轨迹格式——这些都由 Domain 适配器(domain.py,domains/<name>/adapter.py 导出 DOMAIN)提供。适配器要实现:任务集切分(evolve_ids / heldout_ids / smoke_ids)、评测(run + score,必须 resume-safe)、证据渲染(load_trial / render_trace / task_row)、存活检查(smoke)、领域守卫(guards,非补偿性标准),外加文本资产:泄漏 denylist 正则、diff→组件信号、四个角色的领域 brief、以及提议者宪法 SKILL.md / PATTERNS.md。

实例演化集OOD 检验基座 harness / 评分关键超参
codingTerminal-Bench 2.1(89 任务 × k=2 = 178 trials)SWE-bench VerifiedTerminus-2(harbor + Docker);S = 隐藏测试通过率δ=0.017(178 中 3 个 pass),β1=44.5,w_s=0
workspaceHarvey LAB(120 evolve + 40 纯净 held-out)JobBench / GDPval / APEX-Agents官方 ReAct toolbelt;S = rubric criteria 通过率(约 14,100 条),judge = Gemini 3.5 Flashδ=0.004,β1=35.4,w_s=1414(1 分/条 criteria)
engEngDesign-Open(61 免许可任务 × k=4 = 244 trials)EngDesign v1 / Frontier-EngReAct toolbelt + MCP 工具网关;冻结的任务级代码 verifierδ=0.020,β1=24.4;guards:valid-rate 降幅 ≤0.03、no-payload 升幅 ≤0.02

三个实例的搜索角色(提议者/分析器/critic)均为 Claude Opus 4.8(Vertex,多 project round-robin + cache prefix),policy 模型与搜索角色解耦——coding 实例换 Gemini 3.5 Flash 作 policy 时同一循环依然有效。

📊结果解读:分布内涨幅与 OOD 残差

领域基准角色H₀RRSIΔ
CodingTerminal-Bench 2.1evolve74.280.2+6.0
CodingSWE-bench VerifiedOOD82.083.8+1.8
Agentic workspaceHarvey LABevolve89.490.5+1.1
Agentic workspaceHarvey LABID held-out86.989.2+2.3
Agentic workspaceJobBenchOOD36.040.7+4.7
Agentic workspaceGDPvalOOD48.852.3+3.5
Agentic workspaceAPEX-AgentsOOD34.237.9+3.7
Engineering designEngDesignevolve50.054.9+4.9
Engineering designFrontier-EngOOD17.722.0+4.3

论文发布数字,policy 冻结为 Claude Opus 4.8,所有数字与同窗口内未演化 H₀ 对比。"Evolve" 是搜索所在 split,其余行未进入选择。换 Gemini 3.5 Flash 作 policy 时 coding 实例为 TB2.1 64.6→78.7、SWE-bench 76.8→79.0——方法与单一 policy 家族解耦。

读法上要注意两点。第一,OOD 收益普遍小于分布内收益但不为零——JobBench +4.7、Frontier-Eng +4.3 的残差说明正则化确实保住了可迁移成分;这正是"正则化搜索轨迹"相对"无约束演化"要证明的核心命题。第二,Harvey LAB 这类高基线实例上 +1.1 的演化涨幅很小,但 held-out 反而 +2.3,说明 gain 的结构偏向可泛化机制而非记忆——δ 与成本规则把噪声收益挡在了门外。

🔬AI4Science 应用:这套架构在科学智能体上怎么落

证据边界先说明:参考实现的三个实例是终端编码、文档工作与工程设计,没有一个是科学基准。本节是基于架构属性的迁移分析,不是已实现功能。

为什么 RRSI 的形状恰好适合科学 agent

科学智能体的典型痛点——工具链长(序列检索→结构预测→对接→打分)、每任务成本高、评测方差大、泄漏即污染——正对应 RRSI 的四块机制:成本规则按实测 token 付费,直接惩罚"堆更多推理"的廉价改进;噪声地板 δ 用 bootstrap 标定,天然适配科学评测的高方差;critic 的泄漏筛查对应科学 benchmark 最致命的数据污染问题(把 PDB id、配体 SMILES、数据点答案写进 harness 等价于 test-set leakage);逐编辑归因(假设→预测受影响任务→实测命中率)本质上是把每次改动登记成微型对照实验,符合科学审计习惯。

Domain 适配器 = 科学基准的接入点

接入一个科学场景只需实现 Domain 接口:evolve/held-out 任务切分(例如按时间或按蛋白家族切分,比随机切分更接近真实部署)、run/score 封装现有流水线(对接成功率、ipSAE/ipTM 阈值通过数、湿实验回读指标)、render_trace 把轨迹渲染给分析器、guards 写非补偿性领域约束(例如"可表达性/可合成性下降超过阈值即否决"——eng 实例已示范了 valid-rate guard 的写法)。SKILL.md/PATTERNS.md 则承载该领域的"宪法":禁止任务特异实体、强制机制假设。

具体可想象的 AI4Science 实例

· 蛋白设计 agent:演化集 = 一组靶点的 binder 设计任务,评分 = 计算漏斗通过率(scRMSD/interface pAE/ipSAE)而非单一分数;harness 可演化点包括 MSA/模板选择策略、重折叠验证顺序、过滤阈值管理。
· 文献综述 agent:演化集 = 系统性综述任务,评分 = 引用核验通过率 + 覆盖度 rubric;结构组件(记忆、subagent)特别适合长程文献任务。
· 实验设计 agent:演化集 = DOE/方案生成任务,guards 写"安全约束违规即否决"。
· 工作流编排 agent:eng 实例的 MCP 网关模式可直接复用到仪器/LIMS 工具暴露。

迁移时的三个真实障碍

· 评测成本:k 次 trial × 完整 evolve set × 每轮 m 个候选,科学评测单 trial 动辄分钟级、GPU 级——k=2~4 与 δ 标定方式须按方差重估,eval_parallel 与 resume-safe 机制是刚需。
· 可验证性:RRSI 要求每次评测返回 [0,1] 标量奖励;湿实验回读周期长的场景必须先有可靠的计算代理指标,否则搜索没有信号。
· 泄漏定义本地化:科学任务的泄漏更隐蔽(同源蛋白、同骨架分子、同实验室数据),critic_patterns 与领域 denylist 需要按领域认真写,这是迁移中工作量最大也最关键的部分。

对 AI4Science 社区更大的启示是方法论层面的:harness 是一阶优化对象,而且应该被当作实验变量管理。目前多数科学 agent 的 prompt/工具编排是手工冻结的"暗物质"——不版本化、不归因、不做 OOD 检验。RRSI 演示了把它变成可审计对象的完整机制:git 分支即谱系、history.jsonl 即实验记录、δ 即检验显著性、guards 即领域先验。即便不跑这套循环本身,"给 agent 演化加双侧正则化"这一范式对设计自改进的科学智能体(自演化协议、自动假设-实验闭环)是直接可借的框架。

🧭局限、证据边界与采用建议

  1. OOD 残差为正但显著缩水。所有实例都是分布内涨幅 > OOD 涨幅(+6.0→+1.8、+4.9→+4.3)。"不消失"是相对于无约束演化的成功,不等于泛化免费——δ、成本规则、泄漏筛查三者任何一个配错都会退回记忆化。
  2. 每轮成本不低。m 个候选 × 完整 evolve set × k trials,外加三个 Opus 4.8 搜索角色;成本规则约束的是运行时 token,不约束搜索过程本身的开销。改进 token 经济学在论文范围之外。
  3. 搜索角色能力上限即提议质量上限。提议者、分析器、critic 都是同一模型家族;对需要领域专家知识才能发现的机制,演化只能找到轨迹证据支持的那些。
  4. 单一数值目标。argmax over S 意味着多目标权衡只能靠成本规则与 guards 近似表达;真正的 Pareto 搜索不在当前机制内。
  5. 复现门槛。三个 benchmark 环境各自独立(harbor/Docker、Harvey LAB 固定 commit、EngDesign verifier 布局),Vertex 项目配置、judge 模型与 frozen policy 版本都会影响可复现性——论文数字应视为作者报告结果。
最终结论:RRSI 是"harness 演化"方向上一份少见的、把防过拟合当作一等公民的实现:开放编辑空间保留上限,双侧正则化(退火预算+历史条件化+探索指令 / 泄漏闸门+噪声地板+成本规则+剪枝)兜住下限,git worktree 与逐编辑 JSONL 让整个搜索可审计、可断点续跑、可重裁决。它对 AI4Science 的价值不在开箱即用——三个实例都不是科学基准——而在于提供了一套把 agent 脚手架当实验变量管理的完整机制设计,以及一份可以直接仿照的 Domain 适配器接口。迁移工作的重心在泄漏定义与代理指标,而非循环本身。

📚来源与核验说明

主要来源(本地源码审查为主,2026-09-29):

· 本地 checkout /home/qiao/qiao_design/algorithm/rrsi(对应 github.com/google-research/rrsi):rrsi/{loop,propose,analyst,digester,critic,evaluate,selection,history,components,schedule,calibrate,driver,domain,llm}.py、domains/{coding,workspace,eng}/rrsi.json 与适配器、顶层 README。机制描述均按代码行为而非论文表述撰写。

· 论文:Xia, Han, Wang 等《RRSI: Regularized Recursive Self-Improvement of Agent Harnesses》,arXiv 2609.24972(2026),Google Research。结果表数字取自仓库 README 的论文数值。

证据口径:架构与机制结论以源码为准;benchmark 数字为作者报告结果,未作独立复现。AI4Science 一节明确标注为迁移分析——参考实现不含科学基准实例,相关论述不构成"已实现"声明。