LLM 做智能体时最尴尬的失败模式不是策略差,而是连规则都遵守不了。在 Kaggle GameArena 国际象棋比赛中,Gemini 2.5 Flash 78% 的败局不是因为战术失误,而是因为走了违规棋步。模型「理解」国际象棋,但就是无法可靠地输出合法走法。Google DeepMind 团队在 ICLR 2026 Recursive Self-Improvement Workshop 上发表的 AutoHarness 论文,提出了一个优雅的解法:让 LLM 自己写代码来约束自己。 一、问题:LLM 智能体的「违规行为」
传统解决方案是人工编写 harness(护栏代码),在 LLM 和环境之间充当验证层——拦截模型输出、检查合法性、拒绝无效动作。这在单一任务上有效,但不具备可扩展性:每换一个新游戏或新环境,就要重写一套 harness。
1.1 AutoHarness 的核心思路:code as harness
AutoHarness 的核心思路是 code as harness——让 LLM 自己生成约束自己的代码。模型被要求实现两个函数:propose_action()(提议动作)和 is_legal_action()(验证动作合法性)。通过环境反馈驱动的迭代代码优化,模型自己学会了什么是「可接受的输出」。本质上,这是一个条件由任务本身学到的 LLM 拒绝采样器。
二、方法:基于 Thompson 采样的程序空间搜索
与简单的迭代提示不同,AutoHarness 将 harness 生成建模为程序空间上的搜索问题。系统维护一个树结构,包含多个代码假设(候选 harness 版本),用 Thompson 采样决定下一步优化哪个节点。LLM 充当变异算子,根据环境执行反馈提出代码改进。搜索算法在探索(尝试不同的逻辑结构)和利用(优化已部分有效的 harness)之间保持平衡。
2.1 训练设置与反馈闭环
训练设置包含 10 个并行环境,每次迭代最多运行 1000 步。当代码触发违规动作或执行失败时终止 rollout,最多采样 5 个失败步骤反馈给 Critic(错误整合模块),再由 Refiner 生成改进后的代码。整个过程使用 Gemini 2.5 Flash 完成。
2.2 三种 harness 变体
- harness-as-action-filter:代码生成合法动作集,再由 LLM 排序选择。
- harness-as-action-verifier:先让 LLM 提议动作,再由代码验证合法性,不合法则带警告重来。
- harness-as-policy:整个决策策略编译为纯 Python 代码,推理时完全不需要调用 LLM。
三、实验结果:145 个游戏,100% 合法动作率
研究团队在 TextArena 的 145 个文本游戏(含 1 人和 2 人游戏,包括国际象棋、跳棋、黑杰克、数独等经典游戏及其变体)上进行了测试。为增加难度,他们还手动移除了观察文本中的「可用走法」提示,迫使 harness 从环境反馈中自主推断合法动作。
训练平均仅需 14.5 次树搜索迭代即可完成(19/32 个游戏在 10 次迭代内收敛),在所有 145 个游戏上实现了 100% 的合法动作成功率。
3.1 2 人对战与对照
在 2 人对战游戏中,配备 AutoHarness 的 Gemini 2.5 Flash 在 16 个游戏中赢下 9 个(总胜率 56.3%),击败了体量大得多的 Gemini 2.5 Pro(总胜率 38.2%)。对阵无 harness 的原版 Gemini 2.5 Flash 时,胜率升至 64.8%。
3.2 1 人游戏表现
在 1 人游戏中,AutoHarness 版在 16 个游戏中有 8 个超过 Gemini 2.5 Pro,5 个持平,平均奖励 0.745,对比 Gemini 2.5 Pro 的 0.707。
四、Harness-as-Policy:推理成本接近零
最极端的实验是让 Gemini 2.5 Flash 将整个游戏策略编译为纯 Python 代码——推理时不再需要调用任何 LLM。经过平均 89.4 次迭代训练后,生成的代码策略在 16 个 1 人游戏上取得了最高平均奖励 0.870,超过 Gemini 2.5 Pro(0.707)、GPT-5.2(0.635)和 GPT-5.2-High(0.844)。
由于策略是纯 Python 代码,推理成本接近于零。作为对比,GPT-5.2 和 GPT-5.2-High 的实验花费约 640 美元。
论文附录中展示了生成的扫雷(Minesweeper)和国际象棋(Chess)harness 代码——扫雷策略包含完整的逻辑推演(首步选择、规则 A/B 安全推断、子集规则高级推理、概率风险评估),国际象棋则包含 UCI 坐标转换、棋子定位和攻击检测。这些不是简单的模式匹配,而是结构化的领域特定推理程序。
五、为什么这项研究值得关注
AutoHarness 的核心洞察可以用一句话概括:提示词是概率性的,代码是确定性的。「请不要走违规棋步」是提示词层面的约束,if not is_legal(action): reject() 是代码层面的硬边界。一旦 harness 被合成并验证,它就构成了模型无法突破的确定性约束,无论模型内部如何推理。
这个模式的适用范围远超游戏。任何需要智能体产出合法输出的领域都具有相同的结构:API 调用必须符合 schema 和参数范围,数据库变更必须满足完整性约束,基础设施操作必须通过策略检查。在每种场景中,你都可以选择手工编写验证层,或者让模型从环境反馈中自动合成验证层。后者才具备可扩展性。
更深层的含义在于:元层面的投资回报率碾压对象层面。手工给一个游戏写 harness 是对象级工作;构建一个能自动为 145 个游戏合成 harness 的系统是元级工作。AutoHarness 证明了 LLM 不仅能执行任务,还能自举(bootstrap)自己的运行约束——这可能是通向递归自我改进的一条务实路径。
六、结语
论文已发布于 arXiv(2603.03329 (https://arxiv.org/abs/2603.03329)),研究团队计划后续探索将领域特定专家智能体蒸馏回基座模型,以及构建可复用的 harness 库。