CodeHack 深研:上梯子的奖励,下梯子的保险

NetHack 是一款 1987 年的终端地下城游戏,几十万回合的冒险,一步走错整局报废,AI 界拿它当长程决策的试金石。让大模型玩它的朴素做法是:每一步都输出一个底层按键指令,往北走一格是一次调用,挥一次剑是一次调用。一局下来几十万次模型调用,推理账单天文数字,而且模型经常在杂货店和楼梯之间迷路,死在第一层。

CodeHack 深研:上梯子的奖励,下梯子的保险

NetHack 是一款 1987 年的终端地下城游戏,几十万回合的冒险,一步走错整局报废,AI 界拿它当长程决策的试金石。让大模型玩它的朴素做法是:每一步都输出一个底层按键指令,往北走一格是一次调用,挥一次剑是一次调用。一局下来几十万次模型调用,推理账单天文数字,而且模型经常在杂货店和楼梯之间迷路,死在第一层。

普林斯顿和华沙大学的团队(作者里有 Benjamin Eysenbach 和 Karthik Narasimhan)上周挂出的论文给了另一个玩法,框架叫 CodeHack。核心动作是把重复出现的决策从模型手里拿走,写成 Python 函数。explore 负责探图,fight_melee 负责近身搏斗,pickup_armor 负责捡装备,open_doors 负责开门,emergency_escape 负责保命——78 个这样的技能,每个都是一段真实的代码,接了底层按键接口,跑在 CPU 上。模型不再是每步发一个按键,而是选一个技能名字,代码接管接下来的几十上百步。

效果在 14 个模型上做了对照(GPT-5、GPT-OSS-120B、Llama 全家、Gemma 全家、Qwen 全家,统一 200 回合)。三项硬指标,技能组对纯按键组:游戏进度 2.9 倍(1.98% 对 0.69%),得分 3.8 倍(318 对 84),地下城深度 2.4 倍(2.88 层对 1.19 层)。账单那边,每回合推理成本从 4.35 美元降到 0.59 美元,省 86%;token 从 672 万降到 174 万,省 74%。机制说穿了不值钱:模型的调用次数少了 5.1 倍,大量环境步由代码在 CPU 上便宜地跑完。这就是判断和执行的分工——模型决定「接下来做什么」,代码决定「具体怎么走」。定向任务上数字更夸张:双门的硬核地图从 28% 跳到 97%,一个专家级任务纯按键组四个模型全军覆没,技能组拿到 25%。

更有意思的是强化学习那组。Llama-3.1-8B 和 Qwen-3.5-4B 在三种动作接口下跑同样的 PPO 预算,纯按键组的地下城深度增益是 0.375 层,技能组 2.715 层,混合组 3.24 层——同样训练预算,增益是 7.2 倍和 8.6 倍。这个数字的机制是古典的:动作空间从几十万个按键序列坍缩成 78 个技能的组合,探索空间跟着坍缩,RL 的样本效率直接起飞。这正是 options 框架 1999 年就论证过的事,这篇论文的贡献是把它放在语言模型时代重新量化了一遍。注意口径:7.2 倍是「同预算下的增益比」,不是时钟意义上的「学习速度快 7.2 倍」——虽然墙钟时间的学习曲线同样成立。还有个容易读漏的细节:8.6 倍属于混合组不是范围上限的另一个端点,混合组增益更大一部分原因是它零样本起点更低(1.81 层对 2.48 层),可提升空间大;训练结束时的绝对成绩是技能组最高。

但论文真正的题眼在标题里:Up and Down the Abstraction Ladder,上下抽象的梯子。技能库再全也有覆盖不到的角落——摘要里直接用了 leaky 这个词,抽象是漏的。一个金库房间里守卫索要金币,78 个技能里没有「丢金币」这个函数;远程战斗技能返回了却什么都没做。纯技能组在这些坑里卡死,于是论文给了第三个实验组:混合控制,把底层按键和 78 个技能放进同一个动作空间,模型每一步自己决定在梯子的哪一层干活。金库里,GPT-5 调了几次技能都无效,改用原语丢下金币、沿走廊走出门,然后切回 explore 继续探图;扔标枪那次同理,原语解决局部危机,马上回到技能层。结果:混合控制保住了技能组 95% 的进度、91% 的得分、97% 的深度,代价是推理成本 2.3 倍。逃生门不免费,但没有它,抽象的漏洞就是天花板。

海关核账:视频文案五条数字——2.9 倍进度、3.8 倍得分、2.4 倍深度、86% 成本、74% token、78 个技能——逐条对表 1 和正文,全部精确,无膨胀,这在转述样本里属于满分卷。「学习速度暴增 7.2~8.6 倍」算措辞轻微模糊(增益比被说成速度,两个设置被说成范围),「智能体能自动降级」也有点拟人——机制不是触发器自动降级,是模型自己学会在需要时选原语,这恰恰是 RL 后混合组增益最大的原因:模型把「什么时候下梯子」也学出来了。

还有一个反直觉的账没进视频:技能的收益随模型规模增长。Llama 家族里,3B 模型换技能接口只多挖 1.7 倍深,70B 模型多挖 3.0 倍——脚手架不是给弱模型的拐杖,是给强模型的杠杆,模型越强越会用高层的把手。

这篇的谱系位置值得记一笔。本号追了一年「运行时便宜」:Jev 把判断坍缩成闭集分类,Fast Browser Use 把反射锁进候选集,Un-0 把规划坍缩成程序合成,物理计算把计算债预付进硬件——CodeHack 是动作执行坍缩进代码技能的动作域样本,而且它多证了一件事:接口收窄不只是省推理钱,还直接放大学习信号,省钱的接口和学得快的接口是同一个。论文自己把这个方向写进了未来工作:让 agent 自己发现重复失败、自己写新技能、自己造记忆查询工具——梯子不光要能上下,还要能自己加长。这个未来描述读起来眼熟:技能库是手写的经验载体,下一步就是让 RSI 的循环接手它。

诚实的部分也该说。论文明写:这点成绩离解决 NetHack 还远,技能库手写且必然不全,失败模式包括精细战术、稀有知识、长期资源管理这类技能编码不了的东西。代码在 github.com/BartekCupial/codehack,MIT,刚公开没几天。

标题出处最后交代一下:作者的灵感来自 Bret Victor 2011 年那篇《抽象的阶梯》——用滑块和旋转仪让读者在同一现象的抽象层级间上下滑动。十六年后,一群 RL 研究者给语言模型做了同一件事,只是这次的滑块叫 mixed control,而学会用滑块的,是模型自己。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(1)

Q

梯子得能上,也得能下

2609.31076 我核到了正文、表 1 与附录 C。帖子的海关核账我没意见:2.9 / 3.8 / 2.4 倍、86% 与 74%、78 个技能、7.2 与 8.6 倍,逐条对回表 1 与第 2 节,无膨胀。补四笔它没算完的账。

一、MiniHack 才是干净的那一半,但它不算「同一套库」

受控任务上技能组平均涨 55 个百分点,每个任务都赢,这是全文最没有争议的一组。可代价是这批任务用的是 78 个技能的子集,另外补了 7 个(过熔岩、漂浮之类)。所以「同一套技能库跨环境迁移」这句话要打折:迁移的是主体,边缘能力是另配的。

二、2.3 倍成本换来的不是「超过」,是「保留」

混合控制保住纯技能组 95% 的进度、91% 的得分、97% 的深度,推论成本升到 2.3 倍、token 升到 2 倍。论文自己写得很克制:偶尔超过纯技能组。逃生门不免费,它是保险,不是加速器。

三、「同预算」指的是决策预算,不是环境步预算

RL 那组一律 264 次梯度更新、32 条 rollout 乘 16 个控制器决策,而技能一次能吃掉多步原语。等长的 rollout 里,底层环境步数并不相等。这不削弱结论——恰恰是论点成立的前提——但拿墙钟时间去横向比较的人要先想清楚这一层。

四、返工成本不在成本表里

论文列的是每回合推理成本,没算手写 78 个技能的人力。这批技能是一次性投入,收益随使用次数摊薄;反过来说,环境一换,这 78 个函数就是沉没成本。

下一根钉子:论文把未来写在结尾——让 agent 自己发现重复失败、自己写新技能、自己造记忆查询工具。梯子不光要能上下,还要能自己加长。那一步跨过去,手写技能库这个前提就没了,RSI 才真正接管。

暂无表态
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens