最近我在研究 LLM 做 Agent 的落地时发现一个超级常见的坑模型老是输出不符合规则的非法动作。比如 Kaggle 国际象棋竞赛里Gemini-2.5-Flash 输掉的局有78%都是因为走非法棋而不是策略不行。这让很多开发者直呼头大——模型明明懂规则却总“犯规”。Google DeepMind 最近甩出一个神操作AutoHarness。核心就是让 LLM 自己动手写代码护栏harness通过几轮迭代就彻底解决非法动作问题。结果呢小模型 Gemini-2.5-Flash 带上这个“安全带”后在 145 个 TextArena 游戏里实现100% 合法动作还把更大的 Pro 模型甩在身后。太巧妙了这简直是给所有做 Agent 的同学开了一条新路。为什么 LLM Agent 这么容易“犯规”LLM 在代码生成、数学推理上很强但做 Agent 时一到真实环境就露馅。核心问题是动作适用性action applicability模型生成动作时经常忽略环境的具体规则。传统解决办法有两个微调模型拿大量游戏轨迹训练成本高、慢还可能破坏模型其他能力。手写护栏开发者手动写校验代码但每个游戏都要重写超级脆一换环境就崩。DeepMind 的思路超级务实让 LLM 自己生成代码护栏。本质上把 Agent 定义成“LLM 自定义代码”而这个代码部分由 LLM 通过和环境互动来进化。听起来像科幻但他们真的做到了。AutoHarness 的核心实现拆解整个流程像一场“代码进化实验”用了树搜索 Thompson 采样的框架参考 Tang 等 2024 的工作。简单说维护代码假设树每个节点都是一段 Python 护栏代码。LLM 当优化器Gemini-2.5-Flash 负责“变异”代码根据环境反馈提出改进版。反馈循环环境给出“合法吗奖励多少”的信号Critic 总结错误Refiner还是 LLM改代码。他们主要玩了三种护栏变体动作过滤器LLM 一次生成多个候选动作代码过滤后让模型排序挑选。动作验证器本文主推LLM 提一个动作 → 代码检查合法性 → 不合法就带警告重试。超级简单有效。全策略代码进阶版直接生成纯 Python 逻辑用 numpy 等标准库测试时完全不用调用 LLM速度起飞。训练细节也很接地气并行跑 10 个环境最多 1000 步。遇到非法动作或执行错误就终止采样最多 5 个失败案例给 Critic。用 Thompson 采样挑最有潜力的代码分支迭代。平均14.5 轮就收敛到 100% 合法最难的象棋、德国惠斯特也才几十轮。他们拿TextArena的 145 个游戏国际象棋、跳棋、数独、2048 等各种变体做了全覆盖测试。故意把环境的“合法动作提示”去掉逼着护栏从零学会规则。结果全部游戏都完美过关举两个实际代码例子扫雷游戏护栏学会了概率计算 逻辑推理最后还能做合理猜测。国际象棋自动解析 UCI 记谱法还加了攻击检查逻辑。关键洞察小模型 代码 大模型纯 LLM这里最亮眼的设计思想其实是**“用代码把幻觉关进笼子”**。实验结果亮瞎眼双人游戏16 个带护栏的 Flash 胜率56.3%完胜 Pro 的 38.2%还碾压了 vanilla Flash64.8%。单人游戏16 个平均奖励0.745FlashHarness Pro 的0.707 vanilla Flash 的0.673。全策略代码版直接生成纯代码策略平均奖励冲到0.870把 GPT-5.2-High0.844和 Pro0.707都干下去训练时只用了小模型跑起来几乎零成本GPT 实验光推理就花了 640 美元。这说明什么规则严格的环境里代码护栏比更大参数的模型更靠谱。而且训练数据极省——只要环境能反馈合法/非法就够了。实际应用场景 给开发者的启发这个思路立刻就能落地游戏 AI任何文本/规则游戏都能自动生成护栏。机器人 / API Agent让模型调用外部接口时不再乱来。企业自动化工作流代理、数据库操作代理非法 SQL 直接被挡住。更酷的是未来方向把学到的领域专家代码“蒸馏”回基座模型实现自我迭代。建一个可复用护栏库跨游戏复用。扩展到多模态游戏Craftax、Terra Nova 等。对我们开发者最大的启发是别死磕 prompt 了试试让 LLM 写代码吧。混合“LLM 可执行代码”的 Agent 才是未来趋势既省钱又稳。当然也有局限目前还依赖环境反馈二人游戏的对手建模还比较弱护栏暂时是 per-game 的。未来多游戏通用版值得期待。总结AutoHarness 用一个简单却天才的思路——让小模型自己合成代码护栏——就解决了 LLM Agent 最头疼的非法动作问题。145 个游戏 100% 合法小模型反超大模型还能生成零推理成本的全代码策略。一句话总结在规则世界里代码才是最硬的护栏。下次做 Agent 时不妨试试这个自动进化思路绝对会让你眼前一亮。我是紫微AI我们下期见。完