从 RSI 到 Google RRSI:AI 智能体如何改进自己的工作流程
智能体得分变高,可能是因为增加了有效的错误恢复逻辑,也可能是因为记住了评测任务。面对下一项工作时,这两种改动的价值并不一样。
Google 的 RRSI 研究了递归自我改进,也就是 RSI,过程中出现的这个问题。本文说明循环里究竟改了什么、候选改动如何被筛选,再用一个小型 Python 示例,在本地检查已经公开的选择器。
资料核对日期为 2026 年 10 月 9 日。RRSI 的全称是 Regularized Recursive Self-Improvement of Agent Harnesses,可译为智能体运行框架的正则化递归自我改进。项目页面列出了 Google Cloud AI Research、北卡罗来纳大学教堂山分校、斯坦福大学和圣路易斯华盛顿大学的研究人员。它是公开代码的研究项目,不是 Google 提供正式支持的产品。本文运行了本地核心测试和合成数据演示,没有运行模型驱动的进化流程,也没有复现论文基准实验。
1. 这里的 RSI 指什么
递归自我改进描述这样一种循环:系统利用运行经验,修改后续轮次使用的系统。判断时,需要看改了什么、改动是否持续存在,以及改进如何被验证。
不同项目开放的修改层级不同。例如,Sakana AI 的 Darwin Gödel Machine会修改编程智能体自己的代码,并测试产生的版本。改进后的智能体还可以参与后续自我修改。这是 RSI 在系统层面的一个具体场景。
阅读 RRSI 时,可以先做以下区分:
| 方法 | 持续存在的改动 | 需要检查什么 |
|---|---|---|
| 在单次任务内重试或反思 | 可能只改变当前对话 | 当前任务是否解决? |
| 运行框架进化 | 提示词、工具、记忆或执行逻辑 | 修改后的系统能否帮助后续任务? |
| 权重层面的改进 | 模型参数 | 独立评测能否验证训练效果? |
RRSI 修改运行框架,基础模型保持冻结。这个研究提供的是有限范围内智能体改进流程的证据,不能据此认定已经实现无限自主改进,或者模型权重的自训练。参见论文第 3 版。
2. 可以修改的是工作流程
可以把模型看成程序内部的一个组件。外围程序决定模型能看到什么、能调用什么工具、遇到失败怎么处理,以及哪些信息会留给后续工作。
公开代码中的组件分类包含提示词、控制流、配置、输出处理、上下文管理、客户端工具、技能、记忆和子智能体。RRSI 保持这些修改方向开放。
举个通用例子:修改工具封装,让失败的 shell 命令返回退出码和简短错误摘要,这可能帮助多种任务。把某个具名评测任务的答案存进框架,则属于另一种改动。这个例子用于解释差别,不是论文报告的实验结果。
流程可以写成:
current harness → task traces → analysis → candidate edits
→ leakage screen → evaluation → selection → next harness
候选版本位于独立的 Git worktree 中。被接受的框架对应一个版本提交,因此可以检查具体源码变化。README列出了各个阶段对应的实现文件。
3. 为什么要约束搜索过程
反复用同一组任务选择改动,会让反馈具有适应性:后面的提案依赖前面的得分。于是,分数提高可能来自通用机制,也可能来自针对任务的拟合、偶然波动或更多计算。
RRSI 约束提案和选择过程,并不把运行框架锁定在一张固定的允许改动清单里。
提案侧的约束
修改预算会随着轮次推进,减少单个候选允许包含的独立改动数量。这里数的是改动,不是 token,也不是修改的代码行数。
历史模块记录假设、结论,以及测得的分数和成本变化。进展停滞时,它支持探索之前没有触及的组件;长期没有贡献的组件则成为裁剪目标。被否定的假设也会留作后续提案的证据。
选择侧的约束
审查器会在完整评估前,用领域匹配规则和 LLM 审查检查 diff 中的基准专属内容。这是过滤步骤,不能证明所有可能的数据泄漏都已消除。
选择器使用相对于历史最佳分数的下限、测得的噪声带、成本规则和领域限制,再从符合条件的候选中选取得分最高者。
当增益超过噪声带时,成本规则为:
delta_S = candidate_score - incumbent_score
delta_C = (candidate_tokens - incumbent_tokens) / incumbent_tokens
admit on cost if delta_C <= beta0 + beta1 * delta_S
噪声带内部使用另一条规则,成本下降或结构新颖性也可能让候选被接受。因此,不能把 RRSI 简化为所有小幅分数变化都被拒绝。它借鉴的正则化思路作用于离散改动和资源使用,也不意味着在模型训练中加入了 L1 或 L2 惩罚。
4. 阅读结果时带上比较基线
下表采用 2026 年 10 月 4 日修订的论文 v3 表 2 和表 3。这些是作者报告的结果,不是本文测量所得。
| 设置 | 初始框架 | RRSI | 变化 |
|---|---|---|---|
| Claude Opus 4.8,Terminal-Bench 2.1 进化集准确率 | 74.2 | 80.2 | +6.0 个百分点 |
| 相同模型,SWE-bench Verified 分布外准确率 | 82.0 | 83.8 | +1.8 个百分点 |
| 工作空间任务的分布外平均得分 | 39.7 | 43.6 | +3.9 分 |
| 工作空间任务每次试验的策略 token | 156 万 | 242 万 | 约增加 55% |
工作空间任务的无正则化进化组消耗 380 万 token。RRSI 的 242 万相对这个组约减少 36%,但仍比未经进化的初始框架昂贵。token 减少也不能直接换算成总搜索成本、延迟或账单降幅。论文 v3,表 2–3。
摘要和项目页面使用的头条汇总数字有所不同。引用结果时,应同时注明版本、表格、模型、指标和比较对象。尤其要区分百分点变化与相对百分比变化。
5. 不调用模型,先检查核心逻辑
准备 Python 3.10 或更新版本,以及 Git。这里的本地检查已在 macOS、Python 3.14.7 上通过。从新目录开始:
mkdir rrsi-reading
cd rrsi-reading
git clone https://github.com/google-research/rrsi.git
git -C rrsi checkout be50316e1db05914068a973f322770ef08ed7ba1
python3 rrsi/tests/test_core.py
python3 rrsi/rrsi.py --help
独立核心测试覆盖预算调度、估计器、校准、成本规则、选择、历史、组件归类和配置。它们不调用模型,也不运行基准任务。
把 rrsi_gate_demo.py 下载到 rrsi-reading,与仓库目录放在一起。运行:
python3 rrsi_gate_demo.py --help
python3 rrsi_gate_demo.py rrsi
预期输出:
SYNTHETIC INPUTS: selection only; no benchmark evaluation
small-noisy-gain: REJECT
expensive-gain: REJECT
reusable-gain: ADMIT
cheaper: ADMIT
below-floor: REJECT
WINNER: reusable-gain
6. 完整选择演示
"""Exercise RRSI's released selector with synthetic inputs; no model calls."""
import argparse
from pathlib import Path
import sys
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("repo", type=Path, help="path to the pinned google-research/rrsi checkout")
args = parser.parse_args()
repo = args.repo.resolve()
if not (repo / "rrsi" / "selection.py").is_file():
parser.error("repo must contain rrsi/selection.py")
sys.path.insert(0, str(repo))
from rrsi.config import RRSIConfig
from rrsi.evaluate import EvalResult
from rrsi.selection import Candidate, select_round
# Illustrative settings, not the paper's domain hyperparameters.
cfg = RRSIConfig(beta0=0.10, beta1=4.0, w_s=0.0, w_c=15.0, w_n=0.5)
def result(name, score, tokens):
return EvalResult(job=name, k=1, per_task={}, S=score, C=tokens,
n_expected=1, missing=0)
incumbent = result("base", 0.70, 1000)
specs = [
("small-noisy-gain", 0.71, 1000),
("expensive-gain", 0.75, 1800),
("reusable-gain", 0.73, 1200),
("cheaper", 0.70, 800),
("below-floor", 0.68, 700),
]
candidates = [
Candidate(name, [{"component": "prompt", "hypothesis": "synthetic demo"}],
ev=result(name, score, tokens))
for name, score, tokens in specs
]
winner, decisions = select_round(
candidates, incumbent, S_star=0.72, delta=0.02,
cfg=cfg, incumbent_counts={},
)
print("SYNTHETIC INPUTS: selection only; no benchmark evaluation")
for decision in decisions:
verdict = "ADMIT" if decision.admissible else "REJECT"
print(f"{decision.variant}: {verdict}")
print("WINNER:", winner.variant if winner else "none")
return 0
if __name__ == "__main__":
raise SystemExit(main())
这些分数、token 数和参数都是为教学构造的输入。脚本调用固定版本仓库中的真实选择器,没有实现提案器、审查器、校准、裁剪,也没有运行递归进化。
当前分数为 0.70,历史最佳为 0.72,噪声带为 0.02,因此分数下限为 0.70。所有候选都标记为提示词改动,结构新颖性贡献为零。
在这组演示参数下,0.75 分的候选提高了 0.05,但 token 增加 80%。允许的成本增幅是 0.10 + 4.0 * 0.05 = 0.30,所以被拒绝。0.73 分的候选增加 20% token,没有超过其 22% 的预算。更便宜的候选也符合条件,但最终由 0.73 分的候选按得分胜出。
0.71 分的候选没有成本节约或结构新颖性;w_s=0 让噪声带内的分数增益不获得加分。换一组参数,结论可能改变。配置源码说明了单位:分数使用比例,token 变化使用相对量。
7. 规划一次实际实验
运行模型驱动的实验前,按固定版本 README 配置对应领域。基准运行器需要各自的环境、数据、工具和模型访问权限。核心测试通过,只能说明本地机制能够运行,不能说明这些资源已经配置好。
可以按以下顺序准备:
- 记录初始框架提交、模型标识、任务划分和预算。
- 多次测量未修改的初始框架,校准噪声带。
- 只允许提案使用指定进化集的反馈。
- 保存每次 diff、假设、评估结果、token 数和结论。
- 用预先说明的协议,在未参与搜索的任务上评估冻结后的最终框架。
这些是帮助解释实验的实践控制。如果不断根据保留集结果调整决策,这个集合也会成为搜索的一部分,不能继续承担原来的独立评估作用。
评估模块会把缺失试验保留在分母中,奖励记为零。删除失败试验,会让不稳定的候选看起来更好。也应把搜索阶段开销和最终框架执行单项任务的成本分别记录。
构建本地实验工具时,可以搭配本站的子进程日志工具和数据集校验清单,保存命令和输入信息。
8. 常见问题
| 问题 | 下一步处理 |
|---|---|
演示提示缺少 rrsi/selection.py |
传入仓库目录,不是演示脚本所在目录。 |
ModuleNotFoundError: rrsi |
检查固定版本仓库,以及传给演示脚本的路径。 |
| 核心测试通过,完整实验仍失败 | 检查领域环境、数据、凭据和运行器。 |
| 分数提高,迁移效果停滞 | 检查任务专属改动、噪声和计算量变化,并重复预定评估。 |
| 成本规则不符合预期 | 分数使用 [0, 1],token 使用相对变化量,并检查实际领域配置。 |
9. 小结
RSI 是更广泛的概念,RRSI 则是冻结模型条件下的一种运行框架进化方法。它提供了有约束地提出、测试、保留和移除工作流程改动的做法。判断进展时,应同时查看迁移效果、可复查证据和明确的成本比较,而不只关注进化过程中使用的分数。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/google-rrsi-recursive-self-improvement.html
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。