---
title: "Pokemon Player — 通过无头模拟器 + RAM 读取来玩宝可梦"
sidebar_label: "Pokemon Player"
description: "通过无头模拟器 + RAM 读取来玩宝可梦"
---

{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}

# Pokemon Player

通过无头模拟器 + RAM 读取来玩宝可梦。

## Skill 元数据

| | |
|---|---|
| 来源 | 内置（默认安装） |
| 路径 | `skills/gaming/pokemon-player` |
| 平台 | linux, macos, windows |

## 参考：完整 SKILL.md

:::info
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时看到的指令内容。
:::

# Pokemon Player

通过使用 `pokemon-agent` 包进行无头模拟来玩宝可梦游戏。

## 使用时机
- 用户说"play pokemon"、"start pokemon"、"pokemon game"
- 用户询问 Pokemon Red、Blue、Yellow、FireRed 等
- 用户想观看 AI 玩宝可梦
- 用户提到 ROM 文件（.gb、.gbc、.gba）

## 启动流程

### 1. 首次设置（克隆、venv、安装）
仓库为 GitHub 上的 NousResearch/pokemon-agent。克隆后，
设置 Python 3.10+ 虚拟环境。使用 uv（速度更快，优先推荐）
创建 venv 并以可编辑模式安装带有 pyboy extra 的包。
若 uv 不可用，则回退到 python3 -m venv + pip。

本机已在 /home/teknium/pokemon-agent 完成设置，
venv 已就绪 —— 只需 cd 进入该目录并执行 source .venv/bin/activate。

还需要一个 ROM 文件。请向用户索取。本机在该目录的
roms/pokemon_red.gb 处已有一个。
**绝不**下载或提供 ROM 文件 —— 始终向用户索取。

### 2. 启动游戏服务器
在已激活 venv 的 pokemon-agent 目录内，运行
pokemon-agent serve，通过 --rom 指定 ROM 路径，--port 9876。
使用 & 在后台运行。
如需从存档恢复，添加 --load-state 并指定存档名称。
等待 4 秒启动完成，然后通过 GET /health 验证。

### 3. 为用户设置实时看板（dashboard）
通过 localhost.run 使用 SSH 反向隧道，让用户可在浏览器中查看
看板。使用 ssh 连接，将本地端口 9876 转发到 nokey@localhost.run
的远程端口 80。将输出重定向到日志文件，等待 10 秒，
然后在日志中 grep .lhr.life URL。将附加了 /dashboard/ 的 URL 提供给用户。
隧道 URL 每次都会变化 —— 重启后请给用户新的 URL。

## 存档与读档

### 何时存档
- 每 15-20 回合游戏操作后
- 在道馆战、对手遭遇或高风险战斗**前**务必存档
- 进入新城镇或地下城前
- 在任何不确定的操作前

### 如何存档
使用描述性名称 POST /save。示例：
before_brock、route1_start、mt_moon_entrance、got_cut

### 如何读档
使用存档名称 POST /load。

### 列出可用存档
GET /saves 返回所有已保存状态。

### 服务器启动时读档
启动服务器时使用 --load-state 标志可自动加载存档。
这比启动后通过 API 加载更快。

## 游戏循环

### 第 1 步：观察（OBSERVE）—— 检查状态并截图
GET /state 获取位置、HP、战斗、对话信息。
GET /screenshot 并保存到 /tmp/pokemon.png，然后使用 vision_analyze。
两者都要做 —— RAM 状态提供数值，视觉提供空间感知。

### 第 2 步：判断（ORIENT）
- 屏幕上有对话/文字 → 推进对话
- 在战斗中 → 战斗或逃跑
- 队伍受伤 → 前往宝可梦中心
- 接近目标 → 谨慎导航

### 第 3 步：决策（DECIDE）
优先级：对话 > 战斗 > 治疗 > 剧情目标 > 练级 > 探索

### 第 4 步：行动（ACT）—— 最多移动 2-4 步，然后重新检查
POST /action，使用**简短**的动作列表（2-4 个动作，而非 10-15 个）。

### 第 5 步：验证（VERIFY）—— 每次移动序列后截图
截图并使用 vision_analyze 确认移动到了预期位置。
这是**最重要**的步骤。没有视觉你**一定会**迷路。

### 第 6 步：用 PKM: 前缀将进度记录到记忆中

### 第 7 步：定期存档

## 动作参考
- press_a —— 确认、对话、选择
- press_b —— 取消、关闭菜单
- press_start —— 打开游戏菜单
- walk_up/down/left/right —— 移动一格
- hold_b_N —— 按住 B 键 N 帧（用于加速文字显示）
- wait_60 —— 等待约 1 秒（60 帧）
- a_until_dialog_end —— 反复按 A 直到对话结束

## 经验总结的关键提示

### 持续使用视觉
- 每移动 2-4 步截一次图
- RAM 状态告诉你位置和 HP，但**不告诉你周围有什么**
- 悬崖、栅栏、标牌、建筑门口、NPC —— 只能通过截图看到
- 向视觉模型提出具体问题："我北边一格是什么？"
- 卡住时，在尝试随机方向前务必先截图

### 传送过渡需要额外等待时间
走过门或楼梯时，地图切换期间屏幕会淡入黑色。
**必须**等待切换完成。在任何门/楼梯传送后添加 2-3 个 wait_60 动作。
不等待的话，位置读取会是旧数据，你会以为自己还在旧地图。

### 建筑出口陷阱
离开建筑时，你会出现在门**正前方**。
如果向北走，你会直接回到建筑内。**务必**先向左或向右侧移 2 格，
再朝目标方向前进。

### 对话处理
第一代文字逐字母缓慢滚动。要加速对话，
按住 B 键 120 帧，然后按 A。根据需要重复。按住 B 使文字以最快速度显示。
然后按 A 推进到下一行。
a_until_dialog_end 动作会检查 RAM 对话标志，但该标志
**不能捕获所有文字状态**。如果对话似乎卡住，
改用手动 hold_b + press_a 模式，并通过截图验证。

### 悬崖是单向的
悬崖（小型断崖边缘）只能向下跳（向南），不能向上攀爬（向北）。
如果向北被悬崖阻挡，必须向左或向右找到绕行缺口。
使用视觉识别缺口在哪个方向。明确询问视觉模型。

### 导航策略
- 每次移动 2-4 步，然后截图检查位置
- 进入新区域时，立即截图定向
- 询问视觉模型"去[目的地]往哪个方向？"
- 若尝试 3 次以上仍卡住，截图并完全重新评估
- 不要连发 10-15 个移动动作 —— 你会走过头或卡住

### 从野生战斗逃跑
在战斗菜单中，RUN 在右下角。从默认光标位置（FIGHT，左上角）到达 RUN：
按下再按右将光标移到 RUN，然后按 A。用 hold_b 加速文字/动画。

### 战斗（FIGHT）
战斗菜单中 FIGHT 在左上角（默认光标位置）。
按 A 进入招式选择，再按 A 使用第一个招式。
然后按住 B 加速攻击动画和文字。

## 战斗策略

### 决策树
1. 想要捕捉？→ 削弱后投掷精灵球
2. 不需要的野生宝可梦？→ 逃跑
3. 有属性克制？→ 使用效果拔群的招式
4. 无克制优势？→ 使用最强的本系招式
5. HP 低？→ 换人或使用药水

### 第一代属性克制表（关键对应）
- 水克火、地面、岩石
- 火克草、虫、冰
- 草克水、地面、岩石
- 电克水、飞行
- 地面克火、电、岩石、毒
- 超能力克格斗、毒（第一代中极为强势！）

### 第一代特性
- 特殊能力 = 特殊招式的攻击**和**防御
- 超能力属性过于强大（幽灵系招式存在 bug）
- 要害一击基于速度能力值
- 缠绕/束缚使对手无法行动
- 专注能量 bug：**降低**要害率而非提升

## 记忆约定
| 前缀 | 用途 | 示例 |
|--------|---------|---------|
| PKM:OBJECTIVE | 当前目标 | 从青莲市商店取包裹 |
| PKM:MAP | 导航知识 | 青莲：商店在东北方 |
| PKM:STRATEGY | 战斗/队伍计划 | 对战小霞前需要草系 |
| PKM:PROGRESS | 里程碑追踪 | 击败对手，前往青莲市 |
| PKM:STUCK | 卡住情况 | y=28 处悬崖向右绕行 |
| PKM:TEAM | 队伍备注 | 杰尼龟 Lv6，撞击 + 尾巴摇摆 |

## 进度里程碑
- 选择初始宝可梦
- 从青莲市商店取回包裹，获得图鉴
- 岩石徽章 —— 小刚（岩石）→ 使用水/草
- 瀑布徽章 —— 小霞（水）→ 使用草/电
- 雷电徽章 —— 马修（电）→ 使用地面
- 彩虹徽章 —— 莉卡（草）→ 使用火/冰/飞行
- 灵魂徽章 —— 阿桂（毒）→ 使用地面/超能力
- 沼泽徽章 —— 娜姿（超能力）→ 最难道馆
- 火山徽章 —— 夏伯（火）→ 使用水/地面
- 大地徽章 —— 坂木（地面）→ 使用水/草/冰
- 四天王 → 冠军！

## 停止游戏
1. 通过 POST /save 以描述性名称存档
2. 用 PKM:PROGRESS 更新记忆
3. 告知用户："游戏已存为 [名称]！说 'play pokemon' 可继续。"
4. 终止服务器和隧道后台进程

## 注意事项
- **绝不**下载或提供 ROM 文件
- 不要在未检查视觉的情况下发送超过 4-5 个动作
- 离开建筑后向北走前务必先侧移
- 门/楼梯传送后务必添加 wait_60 x2-3
- 通过 RAM 检测对话不可靠 —— 用截图验证
- 在高风险遭遇**前**存档
- 每次重启隧道 URL 都会变化