ICLR 2026 | AutoHarness:使用高代码为 LLM Agent 增加强反馈
在人工智能快速发展的今天,大语言模型作为智能体时经常面临一个尴尬问题:它们会做出不符合环境规则的“非法操作”。在最近的Kaggle GameArena国际象棋比赛中,Gemini-2.5-Flash模型78%的败局竟然是因为走出了不合规则的棋步,而非战略失误。
https://arxiv.org/pdf/2603.03329 ICLR 2026 AutoHarness: improving LLM agents by automatically synthesizing a code harness
针对这一困境,Google DeepMind的研究团队提出了一个巧妙的解决方案AutoHarness,让AI模型自己为行为生成“代码安全带”。
AI 并不是万能的
AI下棋明明知道“马走日”,却偏要走“田”?这不是段子,而是真实发生在顶级AI模型身上的尴尬。
如果你关注过最近的AI新闻,可能听说过这样一件事:在Kaggle GameArena国际象棋比赛中,Google的Gemini-2.5-Flash模型表现不佳——但问题不是它“想不出好棋”,而是它频繁走出根本不合规则的棋步。
数据显示,78%的败局不是因为战略失误,而是因为“违规操作”。
这不是个例。无论是下棋、玩数字游戏还是操作界面,大语言模型当“智能体”时,经常做出环境不允许的动作。明明规则就在那里,模型也“知道”,但执行起来就是会犯错。
传统的解决办法无非两种:要么微调模型(成本高、耗时长,还可能影响其他能力),要么人工写代码校验(每个新游戏都要重新开发,费力不讨好)。
AutoHarness核心思路
理解了问题所在,我们来看看Google DeepMind团队是如何设计解决方案的。他们的核心思路可以用一句话概括:
不让AI“凭感觉”行动,而是让AI先写出一套校验代码,每次行动前先“自查”一遍。
这就像给AI戴上一个“智能手环”——动作不合规?手环会震动提醒,直到AI做出合法选择为止。
通常情况下,大语言模型在游戏中是这样工作的:
看到棋盘 → 内部“思考” → 直接输出一个动作(例如“移动a1到a3”)
问题在于,模型的“思考”过程我们看不到,也不可控。它可能知道规则,但在生成的瞬间“手滑”了,或者被复杂的局势带偏了方向。
AutoHarness的思路是:把这个“思考→动作”的流程拆开,插入一道代码校验关卡。
具体来说,他们让模型生成一个类似这样的代码框架:
def propose_action(observation):
# 模型根据当前局面,提议一个动作
return action
def is_legal_action(observation, action):
# 代码校验:这个动作符合规则吗?
return True or False
每次行动时,系统先调用propose_action让模型提议一个动作,然后立刻用is_legal_action进行校验。如果校验不通过,就拒绝这个动作,让模型重新提议——直到得到一个合法动作为止。
你可能会问:那is_legal_action这个校验函数谁来写?如果让人工来写,那又回到了老路上。
AutoHarness的真正突破在于:让AI自己通过“试错进化”写出这段校验代码。
研究团队设计了一套基于树搜索的代码进化算法,大致流程如下:
1. 初始:AI随便写一个简单的校验函数(可能很粗糙)
2. 试玩:用这个函数在游戏环境中跑若干步
3. 收集错误:记录下所有“误判”的情况
- 函数说“合法”但实际非法 → 漏报了
- 函数说“非法”但实际合法 → 错报了
4. 反馈改进:把错误信息和当前代码一起喂给AI,让它“反思”并写出改进版
5. 重复2-4,直到校验函数100%准确
为了提高效率,他们同时维护多个不同的代码候选方案,形成一个“代码树”。每次选择哪个方案继续优化,由汤普森采样算法决定——既会优先改进当前表现好的方案,也会偶尔尝试那些被冷落的方案,避免陷入局部最优。
训练过程的参数设计得非常务实:
- 同时启动10个游戏环境并行运行
- 每个环境最多执行1000步后自动重置
- 遇到非法动作或代码执行错误时立即停止本轮
- 每次最多采集5个失败案例反馈给AI进行改进
实验结果显示,这个训练过程非常高效:
- 平均14.5次迭代就能完成一个游戏的校验代码
- 19/32个游戏在10次迭代内就搞定了
- 最终所有145个游戏的校验代码都达到了100%的合法动作拦截率
AutoHarness并不止步于“校验动作”。研究团队还探索了两种更高级的形态:
形态一:动作验证器(本文主力方案)
先让AI生成动作,再用校验代码把关。不合规就重试。这是最平衡的方案——既保留了AI的策略智慧,又用代码保证了合规性。
形态二:纯代码策略(终极方案)
干脆连“AI提议动作”这一步都省了。让AI直接把整个游戏策略写成纯Python代码,运行时完全不调用大模型。
这种方案的优点惊人:决策速度极快,运行成本几乎为零。在16个单人游戏的测试中,纯代码策略的平均得分(0.870)甚至超过了GPT-5.2-High(0.844)。
当然,纯代码策略也有局限——对于需要深度推理对手策略的双人游戏,目前还难以实现,因为这需要模型同时生成“世界模型”和“搜索算法”,复杂度大幅提升。
AutoHarness效果对比
研究团队在TextArena平台的145个游戏上进行了全面测试,涵盖国际象棋、黑白棋、21点、数独、推箱子等经典游戏。为了增加难度,他们还刻意移除了游戏提示中的“可用动作列表”——这意味着AI不能偷懒复制粘贴,必须真正理解规则。
参赛选手:
- Gemini-2.5-Pro:Google的更大、更强的旗舰模型(成本更高、速度更慢)
- Gemini-2.5-Flash + AutoHarness:较小的轻量级模型,但装上了自动生成的“安全带”
- Gemini-2.5-Flash(原始):作为基线对比
在16个单人游戏中,比较的是平均奖励得分(0到1之间,越高越好):
| 模型 | 平均得分 |
|---|---|
| Gemini-2.5-Flash(原始) | 0.673 |
| Gemini-2.5-Pro | 0.707 |
| Gemini-2.5-Flash + AutoHarness | 0.745 |
AutoHarness的终极形态是“纯代码策略”——训练完成后,连LLM都不需要调用了,直接用生成的Python代码做决策。
在16个单人游戏上,纯代码策略的表现:
| 模型 | 平均得分 | 推理成本 |
|---|---|---|
| GPT-5.2(基础版) | 0.635 | 较高 |
| Gemini-2.5-Pro | 0.707 | 较高 |
| GPT-5.2-High(高思考模式) | 0.844 | 很高(约$640总成本) |
| Harness-as-Policy(纯代码策略) | 0.870 | 几乎为零 |
纯代码策略不仅平均得分最高,而且在8个游戏中与GPT-5.2-High持平或获胜。
想象一下:训练一次(约90次迭代)后,你得到一个几KB的Python函数,运行时不需要调用任何大模型API,零延迟、零成本,但游戏表现却能超过当前最先进的商用大模型。
重要的洞察
AutoHarness的成功揭示了一个反直觉的结论:
在特定任务上,一个“懂规则的小模型 + 代码安全带”可以战胜一个“懂很多但经常犯规的大模型”。
原因很简单:大模型的“聪明”会被低级规则错误所抵消——一步臭棋可能毁掉整盘好局。而小模型虽然“想得浅”,但每一步都走得规范,稳扎稳打,反而能赢得最终胜利。
这或许预示着AI Agent设计的一个新方向:与其追求模型参数的无限膨胀,不如思考如何用代码约束来放大现有模型的能力。