AI 玩《宝可梦 金》:Bobcat 从新游戏一路拿到 16 枚徽章
Bobcat 从不写字:它读取一个状态,为每个选项返回一个概率。我们把韩文版《宝可梦 金》放在一个只陈述事实、并列出游戏所允许操作的框架后面,给了 Bobcat 一份攻略,让它从新游戏开始做出每一个选择。在同一个 commit 上开了二十局新游戏,运行期间什么都没改:17 局拿齐了全部 16 枚徽章,每局游戏时间的中位数为 19.3 小时。在另一个 commit 上的第二批结果相同,20 局中 17 局。同一个框架随机作答,一枚徽章都没拿到。另有一局完整录制;卡住的六局都列出了原因。
本页内容
更新(2026-10-14):我们最新的模型 Bobcat 1.3 在 Jev Decision Index 上以 62.8 分并列第三,Jev 为 60.1 分(见下文)。本文中的游戏由更早的版本 Bobcat 1.1 完成,战斗则由 Bobcat Flash 1.1 负责。
Bobcat 是一个从不写字的模型。给它一个状态和一组选项,它会为每个选项返回一个概率,它能做的也仅此而已。我们把韩文版《宝可梦 金》放在一个框架(harness)后面,这个框架只陈述事实,并列出游戏在那一刻允许的操作;我们还给了 Bobcat 一份攻略,然后从新游戏开始,把每一个选择都交给它:去哪里、到了那里做什么、每场战斗的每一招、买什么、抓谁,以及攻略中的某一步什么时候算完成。
接着,我们在同一个 commit 上一次性开了 20 局新游戏,运行期间什么都没改。20 局中有 17 局拿齐了全部 16 枚徽章,城都 8 枚、关都 8 枚,途中还击败了四天王和冠军。通关的游戏按游戏内的时钟计算,用时中位数为 19.3 小时,大约做了 5,100 次决策。我们在相隔几小时的两个 commit 上各做了一次,两批的结果都是 20 局中 17 局通关。同一个框架如果随机作答,则一枚徽章都没拿到。
我们给自己定的标准是十局九胜,目前还没达到:下面列出了卡住的六局,以及每一局的原因。在这两批之后,我们又在第二批的 commit 上开了三局游戏,并逐帧录了下来;三局全都拿齐了十六枚徽章,在白银山击败了赤红,还收服了凤王。这里的视频是最先通关的那一局:4,887 次决策,游戏时间 19.9 小时。

录制的那一局:精彩片段
下面是录制对局中的 8 个时刻,每一段都是 Bobcat 当时看到的仪表板,经过加速(录制的一帧相当于游戏中的一秒):左边是游戏,旁边是发给 Bobcat 的状态,然后是它评分最高的选项及其按键和概率,以及它的选择记录。先用四分钟看完全部 25 个时刻,包括每一位道馆馆主;然后逐个看其中的 8 个。
通关率有多高?
一批是二十局游戏,在同一个 commit 的框架和攻略下,从同一个新游戏一起开始,起点是开场之后的卧室。运行期间不做任何修改,也不会从存档继续任何一局:卡住的游戏,就是没有通关的游戏。每局在拿到第十六枚徽章时停止。如果一局在攻略的某一步上停留了数千次决策都没有进展,就会被停止并计为卡住。
| 批次 | Commit | 拿齐 16 枚徽章 | 通关所用游戏时间(最快、中位数、最慢) |
|---|---|---|---|
| A | 13803fe | 20 局中 17 局 | 17.1、20.3、26.0 |
| B | 6c233f1 | 20 局中 17 局 | 17.0、19.3、24.2 |
合计是 40 局中 34 局,即 85%。四十局并不足以把通关率确定得很精确:95% 区间从 71% 到 93%。没有通关的几局:
- A 批,第 7 局,停在 15 枚徽章:一再输给最后一位道馆馆主青绿,而且在两次挑战之间四处闲逛,没有去练级。在那一步上做了 4,977 次决策后被停止,此时游戏时间为 56.6 小时。
- A 批,第 11 局,停在 7 枚徽章:只靠一只强力宝可梦、其余队员远远落后,一直输给小椿,还离开她的道馆四处游荡。在那一步上做了 3,514 次决策后被停止,此时游戏时间为 22.1 小时。
- A 批,第 15 局,停在 7 枚徽章:把冰之洞的巨石当成已经读过的告示牌搁在一边,可每次进入都必须重新使用怪力(已在 B 批之前修复)。在那一步上做了 3,215 次决策后被停止,此时游戏时间为 19.9 小时。
- B 批,第 2 局,停在 8 枚徽章:没能让已经会四个招式的暴鲤龙学会攀瀑:游戏问的两个问题没有被读取,教学也就没有发生。在那一步上做了 5,677 次决策后被停止,此时游戏时间为 27.6 小时。
- B 批,第 14 局,停在 7 枚徽章:和 A 批中的一局一样输给了小椿,队伍里的其他成员远远落后于初始宝可梦。在那一步上做了 6,450 次决策后被停止,此时游戏时间为 25.6 小时。
- B 批,第 20 局,停在 11 枚徽章:没有自行车就想走自行车道去浅红市,每次都被关口的守卫挡了回来。在那一步上做了 4,681 次决策后被停止,此时游戏时间为 24.6 小时。
六局中有三局输掉了 Bobcat 必须赢下的战斗:强大的道馆馆主,对上一支只围绕一只宝可梦组建的队伍。另外三局是框架的漏洞:被它搁置的巨石(已在两批之间修复)、它没有读取的问题、一条它不知道已经封闭的路。后两个是接下来要修的;战斗则要靠 Bobcat 自己去赢。
框架做什么,不做什么?
速通玩家会把这个框架叫作状态检查器。它读取游戏,说出哪些是事实:屏幕上的对话(对照卡带自带的字体从像素中读出);菜单和光标所在的位置;所在地点和图块、金钱和徽章;队伍,包括每只宝可梦的等级、HP 以及各个招式和剩余 PP;背包和宝可梦装置里的卡;战斗中双方的宝可梦和我方的属性;以及尝试过但没有成功的事(没有效果的招式、走不通的出口、输掉的战斗及当时队伍的等级)。它列出游戏此刻允许的操作:玩家能走到的出口、够得着的人和物体、告示牌、可以用队伍会的场地招式通过的水面和树木、草丛、沉睡的卡比兽挡路时可用的宝可梦装置收音机,以及战斗中还有 PP 的招式、换人、回复道具、精灵球和逃跑。每个选项都会显示执行它的按键(“→5 ↑3 A”),就像玩家会按的那样。
它不做选择,也不提供游戏没有显示的信息。对手的属性从不告知,招式是否有效也不告知;Bobcat 必须自己知道,或者从出招后游戏显示的文字中读出来。当 Bobcat 选定一个操作后,框架会机械地执行它:“去广播塔 2F”就是一条通往楼梯的最短路径,加上爬楼梯所需的按键。
Bobcat 决定什么?
在录制的那一局中:
- 去哪里、做什么:每当情况变化,就在一次请求中用两个 Choice 来决定(2,245 次大地图决策)。它选定的地点会在接下来的几次决策中保留,每个出口都会标明是否通往那里。
- 每一个战斗回合:用哪一招,是否换人、回复、扔球或逃跑(2,234 次决策)。
- 每一个提示和菜单:是或否、买什么、忘掉哪一招、谁来学秘传招式(323 次决策)。
- 是否捕捉:攻略说要抓一只时,是否捕捉野生宝可梦,以及用哪种球(13 次决策)。
- 谁打头阵:当某个队员远远领先或落后于其他成员时,在宝可梦中心询问(30 次)。
- 攻略的某一步是否完成:用于游戏记录的任何事实都无法判定的地方(查看了 41 次)。
为什么要用攻略,里面写了什么?
一个人第一次玩一款长篇游戏时会看攻略,所以 Bobcat 也拿到了一份:一份韩文文本,每个徽章数对应一章,按游戏使用时的原样公开。它给出剧情顺序、地名、要抓的队伍(32号道路的咩利羊、一只能学会冲浪的水属性宝可梦、红色暴鲤龙)、哪些属性对付各位馆主有优势,以及游戏中少数几个只有唯一解的谜题(冰之洞的巨石、地下通道的开关、金黄市的传送板)的答案,每个答案都对照游戏的反汇编逐格核对过。怎么用这份攻略,由 Bobcat 决定。框架只根据事实翻页:这一步提到的道具已经在背包里,它结束的地点已经进入,它提到的训练家已被击败,游戏记录的某个事件(归还发电厂的零件、与卡比兽交战、在红莲岛和青绿交谈)已经触发。
哪些选择不是 Bobcat 做的?
框架有一些固定规则,每条都连同阈值写在公开的代码里,每次触发也都记录在该局的日志中。在大地图上,当 Bobcat 的首选操作在重复自己时,这些规则会把它搁置:在一张地图上 50 次中选了 4 次的操作、失败过两次的出口、已经把同样的话说了三遍的人;这时执行的就是 Bobcat 剩下的选项中概率最高的那个,如果全都被搁置,则执行最近最少做过的那个。在录制的那一局中,2,245 次大地图操作里有 79% 是 Bobcat 自己的首选。战斗、提示和捕捉都是 Bobcat 的回答。有几件事是不经询问直接完成的:开场、拒绝起昵称、确认 Bobcat 选定的购买或教学,以及退出框架无法理解的菜单循环。

怎么知道不是框架在玩?
在同一个框架、同一个 commit、同一个新游戏上,把每个 Choice 都随机抽取,结果在 9,517 次决策中一枚徽章都没拿到。框架并不中立:它会走到被选中的地方,并标出通往攻略中地点的出口,这正是随机回答也能走出一段路的原因。从那样到十六枚徽章之间的差距,来自 Bobcat。框架还会为每一次决策记录发给 Bobcat 的状态、每个选项及其概率,以及有没有规则搁置了它的选择、是哪一条,所以这个结论可以逐行核查。
它是怎么走到这一步的?
框架是在 Bobcat 参与其中的情况下,针对这款游戏编写的,大部分工作都是找出它在游戏深处读错了什么:没关上的电脑菜单、宝可梦倒下后的队伍画面、只画了一半就被读取的背包口袋、被误当成精灵球口袋的空道具口袋、会忽略短按的商店列表、攻略还在说去找船长时就已经到港的船。每一个问题都要在数百甚至数千次决策之后才出现。当一局卡在这样的问题上时,我们修好框架,再从这一局最后的存档继续,最早的几局就是这样拿到十六枚徽章、击败赤红并收服凤王的。然后是分批测试,每次二十局新游戏:每一批卡住的地方,就是下一个 commit 要修的地方;对攻略提示的修改,会先从同样的存档开着和关着各试一遍,才决定是否保留。上面的两批就是最后两批。在两批之间,我们修了 A 批暴露出的一个问题,也就是冰之洞的巨石,还给满金市与其地下通道之间的楼梯改了名,因为有几局把它当成了开关房间。
Bobcat 的弱点在哪里?
- 像上面那样,用一支失衡的队伍对战强大的馆主。在录制的那一局中,它输了 30 场战斗,对训练家赢了 229 场。
- 它过于依赖初始宝可梦(录制的那一局结束时,队伍是 93 级的火暴兽、30 级的波克基古、8 级的咩利羊、10 级的呆呆兽、34 级的暴鲤龙和40 级的凤王);被问到谁打头阵时,它大多数时候都保持原来的顺序。
- 循环规则是必需的:录制那一局的大地图操作中,有 21.0% 是由某条规则决定的。
花了多少钱?
录制的那一局在 4,887 次决策中用了 9,015,052 个输入 token。它在一块租用的 RTX PRO 6000(96 GB)上运行了 0.9 小时,这块 GPU 与其他录制的对局共用;按每小时 $2.76 计算,这段时间的成本是 $2.37。分批测试中通关的一局,输入 token 的中位数是 9.4 百万;二十局共用一块 GPU。两批测试背后的全部工作,包括之前的各批以及每次修复的测试,共用了一块 GPU 39.8 小时,按每小时 $4.12 计算为 $164.13。作为参照,录制那一局的 token 如果按 Jev 公布的每百万输入 token $0.042 的标价计算,约为 $0.38;这只是一个参照点,并不是对这两种服务在这一工作负载上的测量。
这些游戏之后的 Bobcat
上面的游戏是 Bobcat 1.1 玩的,战斗由 Bobcat Flash 1.1 负责。我们最新的版本 Bobcat 1.3(2026-10-11)没有玩过这些游戏。它改为在 Jev Decision Index 上接受测量:这是一个面向决策模型的公开排行榜,其 Full 分数中有 80% 来自维护者的私有测试,而这些测试由维护者亲自运行。Bobcat 1.3 得了 62.8 分,与 Perplexity Decider v1.1(62.8)和 Darwin-27B-ZTC(62.5)并列第三:在 166 个参赛条目中按分数排第五,并且在相同用例上高于 Jev 的 60.1。它是怎么做到的,请看Bobcat 的故事。

局限
- 40 局新游戏中有 85% 通关,低于我们自己十局九胜的标准,而且四十局是一个很小的样本。
- 同一批的二十局都从同一个新游戏开始,彼此之间的差异只来自繁忙的模型服务器带来的微小数值差异。它们并不是二十个独立的玩家:这些游戏的前几章往往玩得差不多,卡住的情况也是成类出现,而不是一局一个样。
- 两个 commit 都是针对这款游戏调出来的:每一处修复和提示都来自这款游戏之前的对局。没有留作检验的游戏,换一款游戏也需要它自己的框架。
- 攻略是我们写的,里面包含游戏中固定谜题的答案和要抓的队伍。
- 录制的对局是在分批测试之后、用 B 批的 commit 玩的,因为分批测试本身没有录制;视频展示的是其中最先通关的那一局。
代码、攻略和决策日志都在 github.com/foxl-ai/bobcat 的 demos/pokemon 下。你需要自己的卡带转储;我们不公开任何 ROM 或游戏素材。Pokémon(宝可梦)是 Nintendo、Creatures 和 GAME FREAK 的商标。这是一个独立的研究演示,与它们以及 TypeSafe AI 均无关联,也未获其认可。模型的介绍见 Bobcat: Typed Decisions from One Forward Pass(英文)。
本文也有韩文版。