当 AI 学会“自己写外挂”:自动化玩游戏的三条路,和一条没人明说的捷径
当 AI 学会“自己写外挂”:自动化玩游戏的三条路,和一条没人明说的捷径
让 AI 玩游戏,听起来像是个纯粹的技术炫技。但真正做过这件事的人会告诉你:最难的部分从来不是让模型“变聪明”,而是让它够得着游戏。
2026 年出现了一批有意思的尝试,它们走的路子截然不同。有人让 AI 直接读网络协议包,有人让 AI 看屏幕截图然后点鼠标,还有人干脆让 AI 自己写一套控制器代码,写完就把模型扔了。三条路的工程量、适用场景和“作弊嫌疑”各不相同,而其中最值得玩味的一条,恰恰是最不像“AI 玩游戏”的那条。
第一条路:不看画面,直接读数据包。 这是目前工程上最“干净”的方案,前提是你得有个私服。
OpenAI 的 GPT-6 Astra 用 40 分钟零死亡通关了《魔兽世界》兽人新手村,全程没有渲染过一帧画面。它接入的是一个叫 agent-wow 的开源框架,底层跑 AzerothCore 私服。框架本身不提供任何游戏能力——不帮你打怪、不帮你寻路、不帮你接任务,只暴露一个模块系统。Astra 自己订阅了 28 种服务器消息类型,用 Python 脚本持续轮询,从原始数据包里拼出一张内存中的世界模型。你在屏幕上看到野猪跑过来,它在数据包里看到的是一条生物移动消息,附带坐标、朝向、速度和生命值。
任务情报更直接:从服务器的 SQL 数据库文件里挖。谁给任务、去哪交、怪刷在哪,数据库里全都有。开发者的评价是,这“大概类似人类花几小时在 Wowhead 上查任务”,区别是这些数据就是服务器自己跑的那份,比玩家查来的更准。
这条路的效果相当扎实。Astra 沿着前置任务链顺序推进,自己判断哪些掉落是垃圾、卖掉换钱,捡到更好的武器就换上。进最后那个洞穴之前,它做了一件老玩家才会做的事:先跑去训练师那里学了新技能,还把洞穴里两个任务一起接了,一趟进去两个都做。这些操作在提示词里完全没有体现,是它从任务数据和 NPC 位置自己推断出来的。
但这条路有一个无法回避的前提:你得有服务器的访问权。 私服可以这么玩,正式服不行。一旦接入线上游戏,直接读数据包就意味着能看到本不该看到的信息,性质就从“AI 研究”变成了“外挂开发”。
第二条路:看屏幕,点鼠标。 这是最接近人类玩家操作方式的路子,也是最容易翻车的。
PyPI 上有一个叫 ai_coc 的项目,专门驱动 MuMu 模拟器里的《部落冲突》。它的工作流很直白:用 ADB 截屏,把截图发给 Gemini 问“屏幕上是什么”,拿到结构化回复后用 ADB 执行点击、滑动或返回,再截下一张图验证结果。每一步都走这个循环。项目文档里写得很诚实:实时战斗战术被刻意排除在范围之外,战斗脚本只做军队需求校验,然后停在预留的交接边界。
为什么不做战斗?因为视觉方案的延迟和误差会吃掉所有策略优势。截一张图、传上云端、等模型推理、再传回来、执行操作——这个循环在回合制或经营类游戏里勉强够用,在实时战斗里就是送死。ClawGUI 团队在做 GUI 智能体时也面临同样的问题,他们的解法是用强化学习训练一个 2B 参数的小模型,在虚拟 Android 环境和真机上跑,用“二元结果奖励 + PRM 逐步奖励”来缓解长序列决策中的奖励稀疏问题。但这是专门为 GUI 操作训练专用模型的路子,和“拿现成多模态模型凑合用”是两码事。
第三条路最反直觉:让 AI 写代码,然后不要它了。 这篇论文的标题叫《Compiled Agency》,核心思路是:给通用编程 Agent 一个游戏描述、一套原始观测/动作接口、一个空白的策略文件,不给任何策略、算法或架构提示。Agent 在单次自主会话中自己实验、自己写代码,造出一个独立的控制器。然后研究者冻结这个控制器,在后续评估中零模型调用地跑它。
结果相当能说明问题。在《星际争霸 II》全游戏规模上,编译出的原始 API 控制器击败了所有公平的内置 AI 和两个作弊变体。在《文明》(Freeciv)上,单次会话写出的程序在留出种子上以完全征服的方式赢下了完整游戏。成功率不算高,对手也只是新手 AI,但这是第一次有语言 Agent 系统在不逐回合调用模型、没有手工战术层的情况下,独立赢下这类游戏。
这个思路的精妙之处在于,它把“模型能力”和“运行时开销”解耦了。模型只在开发阶段用一次,写出来的东西是可持续运行、可检查的代码。赢下的程序里有实时模拟、持久状态、校准过的策略和收尾逻辑,泛化靠的是观测而不是背种子。换句话说,AI 不是在“玩游戏”,它是在造一个能玩游戏的程序,然后功成身退。
那三条路之外,有没有捷径? 有,但大多数人不好意思明说。
Google DeepMind 的四个 Gemini Agent 打《我的世界》末影龙,靠的是 Mineflayer 库读取角色位置、血量、背包和周围环境,然后自己写 JavaScript 控制角色。这和魔兽那条路本质相同:绕过视觉,直接拿结构化状态。它们阵亡了 605 次,花了 27 小时,烧了 520 美元,中途还因为一个 Agent 带着全部 12 颗末影之眼溺水身亡而差点崩盘——好在另外两个 Agent 迅速报出死亡坐标和物品消失时间,第四个在只剩两分半的时候赶到把东西捞了回来。
这条路之所以“不好意思明说”,是因为它暴露了一个尴尬的事实:当前 LLM Agent 玩复杂游戏,严重依赖游戏本身是否提供了一个“给机器读”的接口。 一旦接口存在,剩下的就是工程问题;一旦接口不存在,视觉方案就变得笨重而脆弱。TaskFrame 那类分层规划器-控制器的工作,在《我的世界》里做到了比通用视觉语言模型更高的战斗成功率,但它依然是在一个相对可控的观测空间里做文章。
真正在开放环境里靠“看”来玩的成功案例,目前还停留在比较简单的品类上。而一旦涉及需要精确计算资源、时机和隐藏信息的游戏,视觉路线就会撞上延迟墙,结构化数据路线则会撞上公平性墙。
一个几乎没人写在论文摘要里的事实是:读数据包和读 SQL 数据库的 AI,和人类玩家玩的不是同一个游戏。 Astra 能从数据库里直接挖出任务链和 NPC 坐标,人类玩家得自己跑图或者上网查。Astra 能订阅服务器消息看到生物移动的精确坐标,人类玩家只能靠肉眼判断距离。这中间的信息差,比任何算法优势都大。agent-wow 的开发者自己也承认,Astra 发现地图上有碰撞检测缺失的区域后直接穿墙过去了,“它既不知道这是 bug 也不在乎,路线可行它就走”。
所以,当我们在说“AI 会玩游戏了”的时候,最好先问一句:它玩的是哪个版本的游戏? 是那个人类玩家看到的、有光影有特效有延迟的游戏,还是那个数据包裸露、坐标精确、任务数据库敞开供查询的游戏?
前者是真本事,但进展缓慢。后者是工程胜利,但胜之不武。
最务实的中间地带,可能是“编译代理”那条路:让 AI 在开发阶段尽情利用一切可用的结构化信息,写出一套人类可审查的策略代码,然后把它扔进和人类相同的运行环境里跑。代码里可以包含从数据里学到的东西,但运行时它只能用人类能看到的信息做决策。这样既发挥了 AI 的信息处理优势,又没有让它带着“上帝视角”上牌桌。
至于那些直接读包、直接查库的方案,拿来研究可以,拿来比赛,得先问问对面的人类玩家同不同意。
- 点赞
- 收藏
- 关注作者
评论(0)