LLM 首次通关 NetHack:Astra 自主搭建工具链登顶
LLM 智能体 GPT-6-Astra 自主构建交互框架,在 NetHack 中完成首次通关。
据作者在 Hacker News 发文,一个被称为 GPT-6-Astra 的 LLM 智能体于 9 月 21 日在 Hardfought 服务器上完成了 NetHack 3.6.7 的首次 ascension(通关升天),耗时 37,140 个回合,角色为矮人女武神 CodexDelver。作者表示,据其所知,这是有记录以来首个由 LLM 智能体达成的 NetHack 通关。整个过程完全由 Astra 自主构建交互工具链完成,作者本人没有编写任何代码,也没有阅读 Astra 的代码。
为什么 NetHack 成为试金石
NetHack 因其极深的策略深度以及「知道该做什么」与「真正能执行」之间的鸿沟而著称。模型可以完美解释抗性、物品管理或特定怪物交互规则,但在菜单打开、地图信息已过期的瞬间,往往无法把这些知识落到操作上。
作者在 1 月份的实验中反复遇到这类问题:导航失误、目标遗忘、智能体对已经不在屏幕上的事物做出反应。他当时最好的成绩是到达地下第 10 层。BALROG(一个面向 LLM/VLM 智能体的六款游戏基准)从更系统化的角度区分了「拥有游戏知识」与「能在长序列决策中运用知识」,并发现给模型喂图像有时反而会让表现更差——视觉上更「丰富」的界面,并不自动等于更「易用」的界面。
Astra 自主搭建工具链
今年 1 月时,作者花了大量时间围绕 NetHack Learning Environment 构建自定义 Python 接口——上下文管理、观察屏蔽、动作 API、寻路等,调参工作量极大。
而本次尝试从一个简单得多的请求开始:玩 NetHack,通过终端进行,并串流到 Twitch。作者建议使用 Hardfought 以保留外部录像,告知可以查看攻略、建议批量发送指令,把持久化记忆的设计留给 Astra 自行决定。
之后 Astra 自己构建了它所需要的一切。最终的 harness(工具链)相当完整,核心区别在于:作者没有设计任务专属系统,而是让智能体把这部分工程工作纳入了任务本身。Astra 也不是一次性构建后按部就班执行——它发现薄弱环节、打补丁、加检查、持续推进;部分修改源于失误,部分源于死亡。它的普通软件编写与维护能力,本身就是游戏能力的一部分。
Harness 架构要点
游戏在远程运行,本地进程无法访问引擎内部的地图、随机数状态或未鉴定物品信息,只能拿到终端显示的内容。会话包装层以文本形式捕获 tmux 窗格,curses 显示配置为 144 列 × 36 行,并启用了颜色与持久物品栏。一个紧凑的观察模式额外加入了行号、光标坐标和可见地图要素的坐标,避免智能体反复在大块文本中数字符位置。
需要明确的是:这既不是纯粹基于截图的「电脑使用」,也不是未处理的 ASCII 流。中间存在任务专属的解析与标注,但这些标注全部来自终端,并未借由任何暴露隐藏游戏状态的「上帝接口」。浏览器/OBS 侧是同一屏幕的独立消费者,渲染终端颜色并显示公开解说与近期指令;观众看不到模型的私有推理,智能体也不需要「看自己的 Twitch 直播」来知道发生了什么。
动作层面,作者尝试了一种「校验式批处理」折中方案:单步移动调用成本高且繁琐,而一长串无观察的移动则是稳妥的死亡方式。具体做法是:对于请求的移动序列,工具链会解析显示的位置、HP、回合数、地下层数等状态(原文此处截断,细节未完整披露)。
与 BALROG 基准的关系
截至 9 月 21 日,BALROG 排行榜上 GPT-6-Astra-Max 的 NetHack 进度为 13.2 ± 2.7%(条目日期 9 月 18 日)。该指标是平均进度而非胜率,无法据此判断每一次单独运行的结局,但它为一次真正的 ascension 提供了参照。
需要注意的是,这次运行并非 BALROG 提交。BALROG 支持多种智能体策略,单纯让裸模型按键选择并不足以衡量。要做公平比较,需要在同一评估协议、资源核算与重复试验设置下运行该系统。作者更感兴趣的是一个更开放的问题:如果一个能干的编程智能体可以自主改进工具,会发生什么?答案显然是一次通关升天。
