---
title: "AI 玩《宝可梦 金》：Bobcat 从新游戏一路拿到 16 枚徽章"
description: "一个只会从列表中做选择的 AI 模型，从新游戏开始玩《宝可梦 金》，每批二十局、中途不做任何修改：两批都是 20 局中 17 局拿齐 16 枚徽章。"
author: "Foxl AI"
date_published: "2026-10-06"
date_modified: "2026-10-14"
canonical_url: "https://foxl.ai/zh/blog/bobcat-plays-pokemon-gold"
markdown_url: "https://foxl.ai/zh/blog/bobcat-plays-pokemon-gold/index.md"
image: "https://foxl.ai/blog/bobcat-plays-pokemon-gold-cover.png"
social_image: "https://foxl.ai/blog/social/bobcat-plays-pokemon-gold.png"
content_type: "Deep dive"
topics: ["Typed decisions","Game playing","Agents","Measurement"]
products: ["Bobcat"]
---

<!-- Generated by scripts/blog-publishing.mjs; do not edit. -->

# AI 玩《宝可梦 金》：Bobcat 从新游戏一路拿到 16 枚徽章

> Bobcat 从不写字：它读取一个状态，为每个选项返回一个概率。我们把韩文版《宝可梦 金》放在一个只陈述事实、并列出游戏所允许操作的框架后面，给了 Bobcat 一份攻略，让它从新游戏开始做出每一个选择。在同一个 commit 上开了二十局新游戏，运行期间什么都没改：17 局拿齐了全部 16 枚徽章，每局游戏时间的中位数为 19.3 小时。在另一个 commit 上的第二批结果相同，20 局中 17 局。同一个框架随机作答，一枚徽章都没拿到。另有一局完整录制；卡住的六局都列出了原因。

- Author: Foxl AI
- Published: 2026-10-06
- Last reviewed: 2026-10-14
- Reading time: 10 minutes
- Canonical HTML: [https://foxl.ai/zh/blog/bobcat-plays-pokemon-gold](<https://foxl.ai/zh/blog/bobcat-plays-pokemon-gold>)

![一幅扁平的陶土色插画：一台手绘的掌机，屏幕上有三个选项，中间那个被选中。](<https://foxl.ai/blog/bobcat-plays-pokemon-gold-cover.png>)

更新（2026-10-14）：我们最新的模型 Bobcat 1.3 在 Jev Decision Index 上以 62.8 分并列第三，Jev 为 60.1 分（[见下文](<#bobcat-since>)）。本文中的游戏由更早的版本 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 小时。

![两个面板，每个对应一批共二十局新游戏，每局是一条徽章数随游戏时间变化的阶梯线。每个面板中大多数线都到达了十六枚徽章；卡住的游戏停得更早，各用一个叉号标出。之后在第二批 commit 上录制的几局用陶土色画在第二个面板上，视频里的那一局用粗线表示。](<https://foxl.ai/blog/bobcat-pokemon-batches.png>)

_60 秒看完录制的这一局，从卧室一直到最后一枚徽章（[在 YouTube 上观看](<https://youtu.be/qdCfw5FBuaA>)）。每一帧的左边是游戏画面；旁边的面板是这次决策发给 Bobcat 的内容，右边是它评分最高的几个选项，附有执行每个选项的按键和概率，下面是它的选择记录。如果想以文件形式分享：[视频](<https://foxl.ai/blog/bobcat-pokemon-run-60s-en.mp4>)和[封面图](<https://foxl.ai/blog/bobcat-pokemon-run-60s-en-poster.webp>)。_

## 录制的那一局：精彩片段

下面是录制对局中的 8 个时刻，每一段都是 Bobcat 当时看到的仪表板，经过加速（录制的一帧相当于游戏中的一秒）：左边是游戏，旁边是发给 Bobcat 的状态，然后是它评分最高的选项及其按键和概率，以及它的选择记录。先用四分钟看完全部 25 个时刻，包括每一位道馆馆主；然后逐个看其中的 8 个。

_精彩片段：每一位道馆馆主、四天王、唤醒卡比兽、赤红和凤王（[在 YouTube 上观看](<https://youtu.be/loSNPx0WEzU>)）。_

[第 1 枚徽章：第一座道馆的阿速](<https://foxl.ai/blog/bobcat-pokemon-hl-en-falkner.mp4>)

_第 1 枚徽章：第一座道馆的阿速。发生在游戏时间 37 分钟，以 19 倍游戏速度播放。_

[第 3 枚徽章：小茜和她的大奶罐](<https://foxl.ai/blog/bobcat-pokemon-hl-en-whitney.mp4>)

_第 3 枚徽章：小茜和她的大奶罐。发生在游戏时间 2 小时 7 分，以 120 倍游戏速度播放。_

[第 8 枚徽章：城都的最后一位馆主小椿](<https://foxl.ai/blog/bobcat-pokemon-hl-en-clair.mp4>)

_第 8 枚徽章：城都的最后一位馆主小椿。发生在游戏时间 8 小时 36 分，以 60 倍游戏速度播放。_

[冠军阿渡](<https://foxl.ai/blog/bobcat-pokemon-hl-en-lance.mp4>)

_冠军阿渡。发生在游戏时间 13 小时 7 分，以 22 倍游戏速度播放。_

[用宝可梦装置的收音机唤醒卡比兽](<https://foxl.ai/blog/bobcat-pokemon-hl-en-snorlax.mp4>)

_用宝可梦装置的收音机唤醒卡比兽。发生在游戏时间 15 小时 16 分，以 8 倍游戏速度播放。_

[第 16 枚徽章：常青市的青绿](<https://foxl.ai/blog/bobcat-pokemon-hl-en-blue.mp4>)

_第 16 枚徽章：常青市的青绿。发生在游戏时间 16 小时 2 分，以 30 倍游戏速度播放。_

[白银山上的赤红](<https://foxl.ai/blog/bobcat-pokemon-hl-en-red.mp4>)

_白银山上的赤红。发生在游戏时间 17 小时 39 分，以 30 倍游戏速度播放。_

[凤王与大师球](<https://foxl.ai/blog/bobcat-pokemon-hl-en-ho-oh.mp4>)

_凤王与大师球。发生在游戏时间 19 小时 55 分，以 6 倍游戏速度播放。_

_完整的一局，录下的每一帧都在，每枚徽章一个章节（[在 YouTube 上观看](<https://youtu.be/afIqtf_zU0k>)）。_

## 通关率有多高？

一批是二十局游戏，在同一个 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 选定的购买或教学，以及退出框架无法理解的菜单循环。

![录制对局中每个大地图操作由谁选择：一部分是 Bobcat 自己的首选，其余由公开的某条循环规则决定。](<https://foxl.ai/blog/bobcat-pokemon-tally.png>)

## 怎么知道不是框架在玩？

在同一个框架、同一个 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](<https://huggingface.co/sanghwa-na/bobcat-1.3>)（2026-10-11）没有玩过这些游戏。它改为在 [Jev Decision Index](<https://huggingface.co/spaces/multimodalart/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 的故事](<https://foxl.ai/zh/blog/bobcat-learned-to-choose>)。

![Jev Decision Index 0.3.2 排行榜的 Full 分数，筛选为 Jev 及以上的模型。十二根柱子从 66.3 一路降到 Jev 的 60.1，按名次分组：\#1 并列，vLLM-SR d3 (27B) 66.3 和 linne-oak 1.0 (31B) 65.6；\#2 并列，Decider 31B (NVFP4) 64.6 和 Sieve 31B 63.8；\#3 并列，Bobcat 1.3 (31B) 62.8、Perplexity Decider v1.1 (27B) 62.8 和 Darwin-27B-ZTC 62.5；\#4 并列，MORJ 1.0.1 61.0、AnyJev L0 60.2、Fastino GLiDE no-thinking 60.2、Sieve 27B 60.2 和 Jev 60.1。](<https://foxl.ai/blog/bobcat-1.3-decision-index.webp>)

_2026-10-14 的 Decision Index 排行榜，Full 分数，打开了它自带的“Jev and above”筛选。Bobcat 1.3 是第五根柱子，位于 \#3 组；Jev 是右侧的黑色柱子。所有基准测试的结果都在[它的 Bobcat 1.3 页面](<https://huggingface.co/spaces/multimodalart/jev-decision-index?model=bobcat-1.3>)上。_

## 局限

- 40 局新游戏中有 85% 通关，低于我们自己十局九胜的标准，而且四十局是一个很小的样本。
- 同一批的二十局都从同一个新游戏开始，彼此之间的差异只来自繁忙的模型服务器带来的微小数值差异。它们并不是二十个独立的玩家：这些游戏的前几章往往玩得差不多，卡住的情况也是成类出现，而不是一局一个样。
- 两个 commit 都是针对这款游戏调出来的：每一处修复和提示都来自这款游戏之前的对局。没有留作检验的游戏，换一款游戏也需要它自己的框架。
- 攻略是我们写的，里面包含游戏中固定谜题的答案和要抓的队伍。
- 录制的对局是在分批测试之后、用 B 批的 commit 玩的，因为分批测试本身没有录制；视频展示的是其中最先通关的那一局。

代码、攻略和决策日志都在 [github.com/foxl-ai/bobcat](<https://github.com/foxl-ai/bobcat>) 的 `demos/pokemon` 下。你需要自己的卡带转储；我们不公开任何 ROM 或游戏素材。Pokémon（宝可梦）是 Nintendo、Creatures 和 GAME FREAK 的商标。这是一个独立的研究演示，与它们以及 TypeSafe AI 均无关联，也未获其认可。模型的介绍见 [Bobcat: Typed Decisions from One Forward Pass](<https://foxl.ai/blog/bobcat-typed-decisions>)（英文）。

本文也有[韩文版](<https://foxl.ai/ko/blog/bobcat-plays-pokemon-gold>)。

## 参考资料与延伸阅读

1. [代码、攻略和决策日志（GitHub）](<https://github.com/foxl-ai/bobcat/tree/main/demos/pokemon>) - Reference
2. [Bobcat 1.1 权重，玩这些游戏的模型](<https://huggingface.co/sanghwa-na/bobcat-1.1>) - Reference
3. [Bobcat Flash 1.1 权重，负责大部分战斗招式](<https://huggingface.co/sanghwa-na/bobcat-flash-1.1>) - Reference
4. [Bobcat 1.3 权重，最新版本](<https://huggingface.co/sanghwa-na/bobcat-1.3>) - Reference
5. [Jev Decision Index 排行榜](<https://huggingface.co/spaces/multimodalart/jev-decision-index>) - Reference
6. [Continual Harness（arXiv）](<https://arxiv.org/abs/2605.09998>) - Reference
7. [PyBoy 模拟器](<https://github.com/Baekalfen/PyBoy>) - Reference
8. [pret/pokegold 反汇编](<https://github.com/pret/pokegold>) - Reference