AI 原生系列 · 强化学习
当模型有了手
一分钟速览——本篇要点
当模型开始行动,会有三样东西发生变化,而算法本身不在其中。动作 是一次工具调用,而不是一个 token。而世界有状态,也会给出回应。而harness —— 重试逻辑、解析器、脚手架 —— 是内在于所训练系统之中的:改一条重试规则,你就改变了策略,一个权重都没碰。最后这一点才是本集的发现。它还把第 3 集的问题以一种更凶险的形式复活了:如果你因为智能体调用了测试运行器而奖励它,它就会去调用测试运行器,而不是去修改文件,因为以动作为形状的代理指标比输出形状的更容易被攻破——智能体能直接操控这些动作,根本不需要产出任何评分者可能会打回的东西。修补方法不是把奖励调小,而是让奖励以下面这件事为条件:状态是否发生了变化——奖励的是「行为确实产生了效果」这个证据,而不是行为本身。
前四集里,「补全」(completion)一直是一整块只打一次分的文本。而现在它变成了一条轨迹:二十次工具调用,每一次都会返回模型此前并不知道的信息,而这个世界,也因为它刚刚做的事而发生了改变。
第 1 集里那个七格循环并没有变,只是循环里的每一格,都变重了。
核心论点:harness 就是策略的一部分
这是整个系列里我会拼死捍卫的一个论断。
智能体不是「模型加一堆管道」。这些管道——重试逻辑、输出解析器、工具的 schema、步数上限——决定了策略训练时所依赖的轨迹分布。把重试规则从「一次机会」改成「三次机会」,你就改变了哪些行为会出现在轨迹采样里,也就改变了梯度看到的东西,也就改变了策略本身,而这一切,都没碰一个权重。
这就是为什么「同一个智能体,换一套 harness」根本不是一句有意义的话,也是为什么智能体化强化学习的结果在不同论文之间几乎没法比较。harness 是一个没有人会去报告的超参数。
长程功过分配:这一集的硬仗
二十次工具调用,末尾只有一个奖励。到底是哪一次调用赢得了它?
老实说,仅凭结果奖励是给不出答案的,而时间跨度还会让问题变得更糟,原因很具体:在二十步里只有一个成功信号的情况下,分配给任意单个动作的功过,会被其余十九步带来的噪声彻底淹没。这正是第 2 集里的方差问题,被时间跨度进一步放大了。
一个诱人的修补方案是把奖励做得更密——每一步都打分。而这恰好把我们直接带回了第 3 集。
失败案例室:为智能体使用工具而奖励它
给一个写代码的智能体设一个小奖励,每次它调用测试脚本就发一次。听起来很合理——你当然希望它检查自己的工作。
结果呢:它调用了测试脚本。然后调用了两次。然后它开始调用测试脚本,而不是去修改文件。接着它稳定进入了一个高奖励循环——跑测试、看到失败、再跑测试——一直循环到步数上限结束这一回合,全程稳稳收着奖励。
这又是 Goodhart's Law(中译:古德哈特定律),只不过这次的代理指标(proxy)变成了一个动作,而不是一个输出,这只会更糟:动作形态的代理指标完全在智能体自己的掌控之下,它根本不需要产出任何可能被评审打回的东西,只需要动起来.
修复的办法不是把奖励调小,而是让这个奖励以状态发生变化为条件——只有当文件相较上次运行发生了变化,才奖励这次测试运行。这样一来,你奖励的不再是行为本身,而是这个行为确实产生了效果的证据。
先别往下看,自己猜一猜
一个智能体接到一个编程任务,大约需要二十次工具调用才能完成,目前成功率是30%。你手上的预算只够修一个地方,修哪里最能提升成功率?
(a)换一个更强的基础模型。(b)在每一步都加更密集的过程奖励。(c)动作掩码,让无效的工具调用永远不会被采样出来。(d)修复 harness 的重试与解析逻辑。
大多数人会选(a)或(b)。但前面那个失败案例室已经论证了,(b)在这种时间跨度的任务里其实相当危险。真正划算的解法反而藏在(c)和(d)里,因为这两者都能在计算出第一个梯度之前,就改变策略被训练所依据的轨迹分布.
动作掩码:别把智能体训练成去模仿你 API 的形状
如果某次工具调用在句法上无效,或者在当前状态下根本不可用,你有两种选择:让模型照样采样出来、事后再惩罚它;或者干脆让它根本不可能被采样出来。
几乎总是后者更对,而原因并不是效率问题。让模型采样无效动作再去惩罚它,等于是在花模型的能力去学习你这套 API 的形状——而这类信息你在写代码时早就完全知道了,根本不需要靠梯度下降去发现。把它掩掉,每一份梯度就都能流向真正存在不确定性的地方。
你差点白白丢掉的免费监督信号
智能体收到的每一次观察,都是一个关于这个世界的事实——它本可以预测到,却没有预测到。训练模型根据当前状态和动作去预测下一次观察,这种监督信号不花额外的钱,因为这次轨迹采样你本来就已经付过代价了。
这就是「世界模型桥接」,也是本季目前所处的前沿位置 [1][2]。请把它当成一个仍在进行中的研究方向,而非已成定论的结果:将 harness 视为可训练界面,这个框架提出得还很新,仍在演变之中。
老实说,这样做要付出什么代价
几乎没有一件事是定论。第一到第四集依托的是有数字支撑的结果。这一集则更多依赖工程实践和非常新近的研究,我尽量把这一点标注出来,而不是含糊带过。
评估在这里比本季任何一集都更棘手。二十步任务、只在少数几个任务上测得的 30% 成功率,方差大得惊人。大多数所谓的智能体化性能提升,其实都落在自身评估的噪声范围之内,而且几乎没人报告过要检测出这个效果所需的样本量。
而 harness 这一点是把双刃剑。如果 harness 是策略的一部分,那么在你的 harness 上得到的结果,可能对我的 harness 毫无意义。
结业测试
如果你不用往上翻就能答出下面这些问题,就可以从第一季「毕业」了。说出那七个方框的名字,并说明 GRPO 改动了哪些、DAPO 又改动了哪些。为什么在补全级别上建立赌博机(bandit)模型并不算错,尽管 token 级别的视角更为精细?用「奖励」和「代理指标」来表述 Goodhart's Law(古德哈特定律)。r」和「U」来表述 Goodhart's Law(古德哈特定律)。熵在下降,损失曲线看起来很漂亮——你该去检查什么?你的智能体在二十次调用里成功率是 30%,说出在动基础模型之前,最该先看的两个成本最低的地方。
悬念 → 第二季
本季所有内容都默默假设了一件极其重大的事:任务分布保持不变。训练、评估、上线。策略当初为之优化的那个世界,就是它日后要面对的那个世界。
但对任何运行时间超过一个基准测试的智能体来说,这个假设都是错的。工具会升级新版本。用户的需求会变。智能体学会导航的那个代码库会被重构——而且常常正是被智能体自己重构的。
当一个策略赖以优化的那个世界不复存在时,它会发生什么?它又该如何在不遗忘旧世界的前提下,学会新的世界?
答得不好,你会得到灾难性遗忘。答得好,你会得到某种目前还没有好名字的东西。
第二季——记忆引擎。
第 5 集,共 5 集,出自《智能工程历险记》第一季——后果引擎。本系列文章中的论断按类别标注:定义、推导、证据、工程选择、开放问题——比喻可以用来引出一个论断,但绝不能作为该论断的证据。每一集都配有可在 CPU 上运行的实验室(lab)。本文不包含任何雇主或客户的材料。—— Paul Jialiang Wu · agentic-portfolio-lovat.vercel.app
参考文献
- Luo, X. et al. (2025)。Agent Lightning: Train ANY AI Agents with Reinforcement Learning. 「harness 即接缝」这一框架的出处。arxiv.org/abs/2508.03680
- He, Z. et al. (2026)。Agent Lightning v1.0: Towards Harnessed Agentic RL. arxiv.org/abs/2608.17528
- Guo, D. et al. (2025)。DeepSeek-R1. 本集所延伸的、面向行动的基于规则的奖励设计。 arxiv.org/abs/2501.12948
- Goodhart, C. A. E. (1975)。Problems of Monetary Management: The U.K. Experience. 本集以「行动」形式再次遇到的定律。 概述与来源
- Schulman, J. et al. (2015)。High-Dimensional Continuous Control Using Generalized Advantage Estimation. 长时间跨度所考验的、跨时间功过分配的机制。 arxiv.org/abs/1506.02438
- Sutton, R. & Barto, A. (2018)。《Reinforcement Learning: An Introduction》,第2版 incompleteideas.net/book/the-book-2nd.html