过去两年,Agent 领域的大部分创新都发生在模型这一侧:给模型套上工具调用、记忆模块、技能库,一个静态的 LLM 就变成了能自主干活的 agent。但训练环境的另一侧,几乎没人动过——基准环境是一次性手工搭好的,任务固定、反馈固定,对所有 agent 一视同仁,agent 变强之后环境就再也教不了它什么。Google Cloud AI Research 8 月 20 日发布的 EnvHarness(arXiv:2608.19880),把 agent harness 的思路镜像到了环境侧:在冻结的环境外面套一层可编程插件,不改底层逻辑就能重塑环境行为。论文提交当天即登上 Hugging Face Daily Papers 榜首,目前 214 个 upvote,代码已开源(github.com/google-research/envharness)。
核心思路:包装,而不是重造
EnvHarness 的关键设计是「wrapping, not authoring」。它通过标准的 reset() / step() 接口操作环境,提供三类可自由组合的插件组件:Stage 定制回合的起始状态,Contract 改写状态转移规则(比如强制「提交前先跑测试」),Chain 修改观测链路。组件之间满足组合律,E″ = w₂(w₁(E)),叠多少层都不破坏接口。最重要的一条约束:每个被重塑的环境都保留原基准的人工验证器——这直接回应了「环境生成需要昂贵或不可靠的验证器」的行业痛点。改造后的环境可信度继承自原基准,不需要为生成环境重新造一套判分系统。
自动化设计器:EnvRigger 把策略当黑盒
手动写插件仍然昂贵,论文的 EnvRigger 把这步也自动化了。它把目标策略当黑盒,观察其执行轨迹,诊断出系统性缺陷(例如「agent 提交补丁前从不先跑失败测试,成功靠的是运气而不是验证」),然后针对缺陷合成 EnvHarness 组件,再通过全新 rollout 验证组件是否真的有效。一个完整的设计循环:观察 → 诊断 → 写组件 → 验证 → 保留或修订。验证器自始至终未被触碰。
数字账本
在 4 个领域 5 个基准上,EnvHarness 全面超过原始环境和领域专用环境生成管线:held-out 实例最高提升 9.0 分,同时执行步数减少 9.8%。项目页给出了更细的拆解:WebArena 上 38.7 → 41.6,SWE-bench Verified 上 47.7 → 52.6,ALFWorld 上 61.7 → 68.3(均为 base agent → EnvHarness 环境学习)。在 SWE-bench Verified 的环境规模实验里,同样约 50 个环境的规模下 EnvHarness 达到 54.79,超过 SWE-smith 的 50.37 和真实环境的 52.09。跨模型实验覆盖 Gemini 3.1 Flash-Lite、Qwen3.6 27B、Gemini 3.5 Flash、Claude Sonnet 4.6 四个策略模型,增益稳定在 +2.9 到 +3.7 之间,base 跨度 30.7 到 67.2。RL 场景下,在 EnvHarness 环境上做强化学习也优于在原始环境上做,ALFWorld 上 88.3% vs 85.4%;三轮共进化把 SWE-bench Verified 从 47.7 推到 54.8。还有一项很实用的能力:按需控制难度,把基准成功率调进指定区间 [0.4, 0.6],论文报告 6% → 80% 的可控率。
我的看法
这篇论文最大的价值不是某个具体数字,而是把「环境侧的可编程性」变成一个正经的研究对象。自进化 agent 方向的工作大多在改提示词、改技能库、改脚手架,而 agent 所处的世界保持冻结——一个不断变强的 agent 对着冻结的基准,迟早学到无物可学。EnvRigger 的黑盒诊断 + 合成插件流程,等价于给训练环境装上了「自动出题人」,并且每道新题都自带人工验证器背书。对做 agent RL 的团队来说,这条路线比从零生成环境便宜得多,也更容易通过合规审查。局限也很明显:数字全部来自论文自报,第三方复现尚未出现;组件类型只发布了三种,接口还能容纳更多;而「按需调难度」如果被滥用到 eval 上,也可能变成新的刷榜工具——环境可控与 eval 可信之间的张力,值得整个社区盯紧。