一张自动生成的标题卡,主标题为“递归式自我改进,详解”,副标题为“闭环就是计分闭环,而计分才是全部问题所在”;下方一排三张圆角卡片,分别写着“运行前登记的预测”“零值基线经过实测,而非假定”和“失败照常发布,冠军的失败也不例外”;页脚写着“实例演示:RSI-Jev v6.0-VL,发布于 2026-10-06;项目自身记录,读取于 2026-10-08。”,并配有极简扁平线性图标,右下角叠印有 OrcaRouter 标志。
Guides & Insights

递归式自我改进,用一个真正实现它的项目来解释

作者

Magnus Corvin

发布日期

最新模型 · 20查看全部模型 →
基准测试:Artificial Analysis · 每日更新
返回全部文章

“递归式自我改进”是那种多半被用来表达一种感觉的说法之一。如果去掉神秘色彩来定义,它比这更狭窄,也更有意思:一个系统提出自己的下一个实验,运行它,并依据事先固定好的规则保留或淘汰结果,而结果又为下一轮提供输入。递归不是魔法,也并非没有边界——它是一个带有评分函数的循环,其质量完全取决于这个评分函数被应用得有多诚实。RSI-Jev 是构建 Jev 风格 System One 决策模型的第三方开放项目,属于罕见情形:你可以直接阅读这个循环,而无需围绕它争论——每一个假设、每一条失败的实验分支和每一次发布都连同其数字一起公布,仓库也逐日标注日期。本页用作实例的模型是 RSI-Jev v6.0-VL,一个于 2026-10-06 发布的 4B 类型化决策模型,就在最近一周之内。它不是 TypeSafe 的 Jev,也不隶属于 TypeSafe AI——该项目自己的许可证说明正是如此,而我们在 OrcaRouter 上提供的是另一个,typesafe/jev-1.13,在我们的 systemone 端点上。

在"自我改进"这个词真正发挥作用之前,先做一点澄清,随后附上一个日期。这并不是一个不受限制地自我重写的模型,本页上的任何内容都不应被如此解读。这里所说的循环重写的是一个配方:它提出一项训练变更,登记它预期该变更会产生什么效果,花费GPU时间,然后要么保留该变更,要么记录它为何失败。模型是一个Qwen3.5-4B-Base塔式结构,配有训练好的决策头——固定的架构,由固定的训练脚本训练,搜索发生在数据、目标和阶段之上。这个循环运行自己的实验,并淘汰自己的优胜者。人们决定什么值得衡量。至于日期:v6.0-VL发布于2026-10-06,而该项目此后又发布了一个版本——这条线大约每天都在推进,本页的数字附属于此处所提及的那个版本,并标注了读取它们时的日期。在一页主题是一个持续运行的循环的页面上,这一点值得在一开始就说明。

直截了当地说明该术语的含义

把这个说法拆到底,就是三个部分,而它们全都很普通。第一,一个搜索空间:所有可能被改变的东西的集合。第二,一个评分器:用来说明某项改变是否有帮助的东西。第三,一份记录:尝试过什么、发生了什么,以及丢弃了什么。当第 N 轮的输出在第 N+1 轮成为输入,并且在这三部分中都如此,而无须人类每次重新推导搜索空间或重新决定阈值时,一个系统就是在进行递归式自我改进。

关于这个话题的多数论述都会跳过第二部分,而整个问题恰恰就在这里。一个评分器薄弱的循环会优化评分器。它会产出一条单调上升的曲线,以及一个已经学会了自己考试形态的系统。这种失败不需要恶意或缺陷——当同一个数字既用于选择又用于报告时,这就是默认会发生的事。所以,当你读到某个系统正在自我改进的说法时,有用的问题从来不是“它变得好了多少”。而是“谁设定了标准,什么时候设定的,以及它能否在看到结果之后发生变动。”

这个概念流行的版本——如今搜索该词时排名靠前的那些——大多是前瞻性的:维基百科的条目描述了一个系统重写自身代码、迈向“智能爆炸”的过程,而更广泛的报道往往关注这一时间线比预测更近还是更远。这是一个合理的论点,仅凭目前任何人掌握的证据都无法回答。可以回答的是那个更小的问题:上文描述的那种闭环,现在能否被构建出来,并让它遵守自身规则。就这一点而言,一个有公开成果的项目胜过十年的猜测,而本页剩余部分要讲的正是这个。

封闭的,而不仅仅是迭代的:五种机制

闭环之所以是闭环,并不在于它会重复。大量自动化流水线不断重复,却从未真正闭合,因为一条在看到结果之后能够调整自身阈值的流水线,与一条做不到这一点的流水线,所做的事情有着本质上的不同。RSI-Jev 自身的规则对这种差异的表述异常明确,而它们可以被当作定义来读,而不是当作一份宣言。其中五条承担了大部分作用。

预测在运行之前就已登记在案。 在消耗 GPU 时间之前,先写下一条假设,写明它预期会变动的数字以及变动幅度。一个没达到自己设定标准的版本,会作为失败被记录在案,而不是被悄悄重新剪裁。正是这一机制,阻止了这个循环沦为一部撰写事后解释的机器,而它也要付出实实在在的代价:记录里会包含一些条目,其唯一内容就是某人在记录上被证明是错的。

零假设下的噪声底是测量出来的,不是假设出来的。团队会运行与对照可证明完全相同的实验臂——在任何 GPU 时间之前通过对象身份验证——而这些实验臂之间的离散程度就是噪声底。比该下限更小的差异不算结果,无论它看起来如何。项目自身的标准也反映了这一点:在其内部套件上,阈值是 +0.006,而单个基准的按种子标准差为 0.011–0.016,因此低于该值的单基准差异不构成发现。这个领域中的大多数噪声都是测量出来的,而不是统计出来的。

留出集一旦被读取,就会被消耗掉。每个发布版都会读取留出集一次,因此两个发布版仍然可以在同等条件下进行比较——而由于读取它就会把它消耗掉,每个发布版都会冻结下一个发布版的比较。项目自己的说法值得原样保留:留出集“是从训练中留出的,而不是与搜索隔绝的。”它是对记忆化的检查,而不是对新颖性的保证。而且套件分数本身还有一个项目已公布的漏洞:一项内部任务与数百行训练数据重叠,因此从 v6.0-VL 起,套件的报告不再包含它——0.770——而 v5.0-VL 早先的 0.764 也在不包含它的情况下被重新表述为 0.763。这次重新表述才是重点。一个数字此前在虚高,原因被找到了,而较旧发布版的卡片得到了更正,而不是被置之不理。

失败也会被发布出去,包括那些扼杀了项目自身冠军的失败。该仓库的标题统计数据(读取于 2026-10-08)如出一辙:十三天内发布了八个版本,以及数百个实验的书面记录,其中包含失败。负面结果被视为产品本身。贡献指南直言不讳地说明了原因——搜索中昂贵的一环不是运行赢家,而是运行输家,因此来自外部的一个测量良好的负面结果能砍掉一条分支,比一个小幅正面结果更有价值。

发布链就是项目本身。 每次发布一张卡片,全部卡片永久保留在主分支上。每张卡片携带各自发布的数值,因此某个版本的速度和校准永远不会覆盖另一个版本的。项目直接道出了理由:这条链是唯一能看出自我改进循环是否真的在改进的方式。其他一切——配方、脚本、锁定的技术栈——只承载当前发布,因为反过来的规则会让人无法分辨什么才是当前的。已发布的检查点自带其代码,这样旧发布无需旧分支也能继续运行。

A screenshot of the subject project's own GitHub repository page, Shanghua-Gao / RSI-Jev, showing the repository description 'Typed-decision models (noul / choice / score) trained by a self-improving loop of AI agents - checkpoints, the code that produced them, and every version that failed', the sidebar counters 80 stars, 5 forks and 1 watching, 198 commits and 8 releases, the newest release headed 'RSI-Jev v6.1-VL 4B', an MIT license line, the topic tags ai-agents, autonomous-research, decision-model, jev, recursive-self-improvement, system-one and typed-decisions, and the merge commit 'Merge pull request #33 from Shanghua-Gao/release-v6.1-vl' at the top of the commit list.

这门 discipline(自律)要付出什么代价,又能换来什么

记录中的两个故事是对“自我改进”一词的诚实制衡,因为这两个案例中,循环自身的规则都让工作同时变得更慢、也更好。

第一个是 v1.0 背后的 bug。找到它用掉了七个已登记的负结果。这七个中的每一个都是优化器侧的修复,减轻了某种训练不稳定性,却没有消除它,因为根因是一处与优化器毫不相干的精度错误——而最终的修复只有一行。这七个没有一个值得单独发表。正是它们合在一起,才让根因变得可被找到,而这正是登记并保留负结果的完整理由:它们的价值在于整体,而不在于单个。

第二个则没那么光彩,但项目还是把它发表了出来,放在一个脚注里。一个早期试验臂恰好只在一项防护指标上未通过——MMLU-Pro 比门槛低了 0.026,而限制是 0.020——随即被记录为已拒绝。随后运行负责人把限制放宽到 0.030,理由是 MMLU-Pro 是防止遗忘的防护指标,而不是目标;该试验臂又在四个全新随机种子上得到确认,并成为下一个发布版本。最初的拒绝记录被留在了日志里,并附有项目自己的评论:在看到结果之后才挪动门槛,正是读者应当能够当场抓到它做的那种事。

那条脚注是仓库里对任何试图在现实环境中评估这类主张的人来说最有用的段落。一个被调整过的门槛并不能证明存在恶意——给出的理由是站得住脚的,而且放宽后的门槛随后还必须通过四个全新随机种子的检验。但是,一个被悄悄调整的门槛就是一个不再闭环的循环,而两者之间的区别完全在于它是否被记录下来。项目后来确定的那条一般规则,才是值得推广到其他系统的规则:一个恰好只在一个防护条件上失败的接近成功案例,会得到诊断和有针对性的修复,而不是被直接丢弃——而如果修复失败,它就会变成一个留有记录的死胡同。

循环出错的频率:十四个设置,两个保留

这就是那个要记住的数字。在能够读取图像的这一版本中,项目共统计出十四个强化学习配置和 63 个经奖励训练的臂。其中两个被保留了下来。

每套设置都是对照一个监督对照组来评判的,该对照组在相同数据项上训练了相同步数——正是这种比较才让这个计数有意义:一个强化学习实验组击败一个它从来无须匹配的基线,证明不了任何东西。那些具有启发性的失败,用项目自己的话来说:

• 二元正确性 RL —— 概率输出坍缩到了 0 和 1。奖励“选对”这一行为,而不是奖励所报告几率的诚实性,会把分布推向角落;而一个置信度总是满格的决策模型,对决策模型本该发挥的作用而言毫无用处。

• Proper-score RL,对 Laya 风格目标的复现——在 300 步时还好,在 1,500 步时发散了。它没什么作为时很稳定,却恰好在开始重要时变得不稳定。

• RLCR —— 准确率持平,原始校准更差。它没换来任何能力,却在模型存在的唯一意义上付出了代价。

• Bandit RLCD,其中只揭示所选选项的结果——并不比在相同反馈上的监督训练更好。该项目在此叫停了自己预注册的测试:该实验组必须在四项校准指标中至少两项上胜过监督训练,而它只赢了一项。

获胜者,以及它获胜的原因,是这一页上最具可迁移性的发现。它是一种列表级奖励——排序质量是在许多单独评分的候选对象之间的顺序上衡量的,而不是孤立地对待每一个候选对象。重排序在第一位上的召回率从有监督父模型的 0.192 提升到了 0.308,在配对检验中有胜有负。该项目的解释并不是一个调参的故事:逐项训练目标会单独为每个候选对象评分,而没有任何单一标签能够编码跨候选对象的顺序质量。凡是奖励说出了标签无法表达的东西,RL 就在同一批数据行上击败了监督训练。凡是它做不到的,监督训练则与之持平。

这可以推广成一条规则,用来判断这类循环究竟何时才能发现任何东西。手握黄金标签时,期望的策略梯度更新等于一个监督损失的梯度——这是项目自己的措辞——因此,用带标签的决策来评分的“RL 臂”实际上是一个损失设计臂。而损失层面的改动最多让内部测试套件变动 0.002,新数据却让它变动了 0.13。合起来看:这个循环的杠杆从来不在目标函数里,而在于测量了什么、喂入了什么。

这正是对读者理应提出的问题的诚实回答。RL 设置在其他地方被引作关于一般性自我改进的证据;在这里,它们只是关于决策任务中一个循环的证据。listwise 结果是单个随机种子,项目自己也这么说:配对的 RL 与监督式对比是在一个与发布版所应用到的父本不同的父本上运行的,而且该发布版“没有匹配的监督式对照”。附带这一限定的发现,比没有这一限定的发现更有价值,这也是你正在阅读的页面不将其泛化的原因。

人类所坐之处

这个项目是明确的,而有趣之处正在于这种明确性:这个循环自行运转,并让自己的冠军退役,但它不决定什么值得衡量,也不会自己察觉出,一个数字在技术上属实、在实践中却具有误导性。这些得由人来做。

项目的两条自身规则之所以存在,是因为有人提出了反对意见。MMLU-Pro 的防护被放宽了,而不是让一次擦边未过被直接丢弃。种子数量的要求如今会随效应量而调整,而不是在每个差异上都花四个种子——因为确认种子,也就是一个臂未被据以筛选的那个数字,才是真正承重的那个,而在你已经能看出的差异上花费算力毫无收获。这一链条中的某个版本,最初就源于拒绝放弃一个未能通过某项防护的臂。项目在致谢中按名字感谢了发出这些反馈的人。

所以,这里的“自我改进”描述的是循环的中段,而不是整个循环。这个循环是一种无需人来转动曲柄就能运行的搜索。人仍然处在循环的顶端,负责选择目标;同时处在循环的底端,批判性地阅读结果——正是这种安排使循环不至于变成一台确认自身偏好的机器。任何省略了那个席位的递归式自我改进论述,所描述的都不是这个系统,而很可能是某种假设中的系统。

项目自身数据未能显示的内容

上述纪律只有在其局限被同时说明时才值得描述,而 RSI-Jev 的记录本身就说明了这些局限。

• 它只涉及一个项目,一次只涉及一个模型规模,以及一个种子。发布的检查点来自单个种子,并事先被固定为主要检查点,而不是为了获得最佳评分而挑选出来的。强化学习证据只来自一个种子。

• 这是决策任务,而非生成任务:针对一份文档、一段对话或一张图像提出的“是/否”问题、从 k 个选项中择其一的问题,或按评分标准打分的问题,通过一次前向传播即可作答,并为每个选项给出经过校准的概率。由于不生成任何内容,也就没有推理 token 可供消耗。此处这一循环所证明的,是它能够改进这种形态的评分器。

• 其中部分内容无法仅凭该仓库复现。训练语料库和策略开发集均未公开,项目在发布卡中明确说明了这一点:“这些阶段无法仅凭本仓库重新运行。”一个语料库构建器需要约 96 GB 内存,且未进行端到端重跑。

• 并非所有东西都完全可核查。内部套件从未被完全留出。在十五个基准测试中,有十个以某种形式贡献了训练数据,因此这些数字没有一个属于零样本——留出集才是那个被留出的比较对象,而且它是唯一的一个。

而外部部分也有自己的疤痕组织。某次发布后的一项审计发现,公共基准套件的测试行中约有 1000 条出现在训练语料中——约占该套件行数的 0.3%,其中来自单一来源的最大一笔贡献为几百行。剔除这些行重新评分后,该指数最多只变动 0.04。这项更正被公布在下一个版本的说明卡中,而不是悄悄应用,依据的是项目所声明的规则:“无污染,经检查而非断言。”这是一条会让他们损失一个数字的规则,而这是唯一一类值得拥有的规则。

你真正能在哪里运行它——以及不能在哪里运行

这里没有任何内容由 OrcaRouter 提供。我们的目录中既没有 RSI-Jev 的 id,也没有它的模型卡;在有人将其纳入服务之前,也不会有。RSI-Jev 从它自己的代码仓库安装,并运行自己的服务器,该服务器使用 Jev API:你只需将现有的 Jev 客户端指向它,并更改基础 URL。它可在 Linux、Windows 和 macOS 上运行,支持 CUDA GPU、Apple Silicon 或普通 CPU。

The one model we do host is the other side of that contract. TypeSafe's Jev 1.13, which we serve as typesafe/jev-1.13, is the commercial decision model whose request and answer shapes RSI-Jev reproduces, and it is reached on our dedicated systemone endpoint rather than through the chat-completions shape. That is the whole relationship, and it is a structural one rather than a quality claim: one is a hosted commercial model on a vendor's endpoint, the other is a checkpoint you download and serve yourself. Nobody has run an independent head-to-head between them, and this page is not going to declare a winner from two different harnesses.

A generated single-column scoreboard headed 'RSI-Jev - the loop's own ledger', with six rows reading 'Predictions: registered before the run', 'Null floors: measured from identical arms', 'Held-out set: read once, then spent', 'Failures: published, including the champion's', 'Release chain: one card per release, on main forever' and 'RL setups kept: 2 of 14, each judged against a matched control'; a footer reads 'All figures from the project's own record, read 2026-10-08.'

如果你想要的正是把这样一个决策模型放到应用背后,那么路由问题与模型问题是两回事,而前者决定了这个实验到底值不值得做。OrcaRouter 就是一个 API 接入 200+ 模型,0% 加价——按提供商标价透传,所以供应商调价当天你的价格就同步——再加上自动故障转移和路由 DSL,可把多个模型组合成一次调用。对于目前还无法通过通用 API 调用的循环模型,这一点有着特殊的意义:这意味着你用来与之对比的替代候选模型已经都在同一个密钥之下,比较只是一次配置更改,而不是再做一次集成。

A screenshot of OrcaRouter's own model page for typesafe/jev-1.13 showing the left navigation, a PERFORMANCE panel with prefill and decode lines, the heading 'Jev 1.13' with the provider line 'typesafe', the price fields $0.11 prefill and $0.36 decode per million tokens, a benchmark box with MED 0.3, Response Trust 0.784, Structured Output 0.964, Refusal Correctness 1.0 and Consistency 0.59, an accuracy-versus-cost scatter with a 'Jev 1.13' marker, an 'Individual Runs' table, API and Agent curl snippets pointing at the systemone endpoint, the OrcaRouter logo and a sign-up button.

值得留存的部分

通过这样一个项目来讨论递归自我改进,而不是去论证它是否会通向某种戏剧性结果,原因在于:循环的规则才是可迁移的部分,而猜测不是。已登记的预测、实测的零结果基线、已用掉的留出集、公开发表的失败、不可变的发布链:这些没有一个是超级智能的属性。它们是一个决定让自己可被核查的实验室的属性,而且如今任何运行自动搜索的团队,无论规模大小、使用什么模型,都可以拥有它们。

这样读来,RSI-Jev 的记录中有趣的说法不是那个分数,而是:这个循环自己的账本表明,它错的次数远多于对的次数——十四个设置里只保留了两份配方,为找出一个一行代码的 bug 经历了七次阴性结果,还有一根移动了并被记录下来的柱子——而且这个项目公布了这份账本。某个公开指数在一次发布中从 38.38 升到 46.24,如果没有旁边的那些失败,就只是一桩奇事。正是那些失败让这个平均值有了意义。

这才是对该术语本身所应持的诚实立场。问题不在于一个系统能否自我改进,而在于这种改进是否由一个本可以说不的东西来衡量。当这种分离真实存在并且白纸黑字写下来时,这个循环就值得一读。当它并非如此时,一条上升的曲线只是在描述一个评分器,而不是一个正在变好的系统——再多的递归也无法弥补这一点。