{/* 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
通过无头模拟器 + 读取内存来玩宝可梦。
Skill 元数据
| 来源 | 可选——使用 hermes skills install official/gaming/pokemon-player 安装 |
| 路径 | optional-skills/gaming/pokemon-player |
| 版本 | 1.0.0 |
| 作者 | Teknium (teknium1), Hermes Agent |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
参考:完整 SKILL.md
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
Pokemon Player
通过 pokemon-agent 包进行无头模拟来玩宝可梦游戏。
使用时机
- 用户说 "play pokemon"、"start pokemon"、"pokemon game"
- 用户询问 Pokemon 红、蓝、黄、火红等
- 用户想看 AI 玩宝可梦
- 用户提到一个 ROM 文件(.gb、.gbc、.gba)
启动流程
1. 首次配置(clone、venv、安装)
仓库是 GitHub 上的 NousResearch/pokemon-agent。克隆它,然后 搭建一个 Python 3.10+ 虚拟环境。用 uv(速度优先) 创建 venv 并以 editable 模式安装该包,附带 pyboy extra。 若 uv 不可用,回退到 python -m venv + pip。
如果已存在 checkout(例如 ~/pokemon-agent 且 venv 已就绪), 直接 cd 进去并 source .venv/bin/activate,不要重新克隆。
你还需要一个 ROM 文件。向用户索要(之前的配置可能已在 checkout 内的 roms/pokemon_red.gb 放好了一个)。 切勿下载或提供 ROM 文件——务必向用户索要。
2. 启动游戏服务器
在 pokemon-agent 目录内、venv 已激活的状态下,运行
pokemon-agent serve,用 --rom 指向 ROM,--port 9876。
用 & 放到后台运行。
要从存档继续,加上 --load-state 并指定存档名。
等待 4 秒启动,然后用 GET /health 验证。
3. 搭建实时 dashboard 供用户观看
通过 localhost.run 建一个 SSH 反向隧道,让用户能在 浏览器里查看 dashboard。用 ssh 连接,把本地 9876 端口转发到无密钥的 localhost.run 端点的远程 80 端口 (ssh -R 80:localhost:9876 ssh://nokey@localhost.run)。把输出 重定向到日志文件,等待 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 保存到 ~/.hermes/cache/scratch/pokemon.png,然后用 vision_analyze。 两者都要做——内存状态给数字,视觉给空间感知。
第 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 步截一次图
- 内存状态告诉你位置和 HP,但不告诉你周围有什么
- ledge、栅栏、告示牌、建筑门、NPC——只有截图能看到
- 向视觉模型提具体问题:"我北边一格是什么?"
- 卡住时,在乱试方向之前先截图
传送切换需要额外等待时间
走过门或楼梯时,地图切换过程中屏幕会 渐黑。你必须等它完成。在任何门/楼梯传送后加 2-3 个 wait_60 动作。不等待的话,位置读取会是陈旧的,你会以为 自己还在旧地图。
走出建筑的陷阱
走出建筑时,你会直接出现在门正前方。 如果你往北走,会立刻又进去。务必先横向挪位 ——往左或往右走 2 格,然后再朝目标方向走。
对话处理
第一世代文本逐字母缓慢滚动。要快速跳过对话, 按住 B 120 帧再按 A。按需重复。按住 B 让 文本以最快速度显示。然后按 A 推进到下一行。 a_until_dialog_end 动作会检查内存对话标志,但这个标志 不能捕获所有文本状态。如果对话似乎卡住,改用手动的 hold_b + press_a 模式,并通过截图验证。
台阶是单向的
台阶(小悬崖边)只能往下(南)跳,永远不能往上(北)爬。 如果往北被台阶挡住,你必须往左或往右 找绕过去的缺口。用视觉判断缺口在哪个方向。 明确地问视觉模型。
导航策略
- 每次走 2-4 步,然后截图检查位置
- 进入新区域时立即截图定向
- 问视觉模型"去[目的地]该往哪走?"
- 连续 3 次以上卡住时,截图并彻底重新评估
- 不要一口气发 10-15 个移动——你会走过头或卡死
从野生战斗逃跑
战斗菜单里,RUN 在右下角。从默认光标位置 (FIGHT,左上角)到那里:按下再按右,把光标 移到 RUN,然后按 A。用 hold_b 包起来以快速跳过文本/动画。
战斗(FIGHT)
战斗菜单里 FIGHT 在左上角(默认光标位置)。 按 A 进入招式选择,再按 A 使用第一个招式。 然后按住 B 快速跳过攻击动画和文本。
战斗策略
决策树
- 想抓?→ 削弱后扔精灵球
- 不需要的野生怪?→ RUN
- 属性克制?→ 用效果绝佳的招式
- 无克制?→ 用最强的 STAB 招式
- HP 低?→ 换人或喝药
第一世代属性表(关键对位)
- 水克火、地面、岩石
- 火克草、虫、冰
- 草克水、地面、岩石
- 电克水、飞行
- 地面克火、电、岩石、毒
- 超能力克格斗、毒(第一世代里超强!)
第一世代怪癖
- 特殊攻防同用一个特攻数值(特殊招式的攻击和防御都看它)
- 超能力系过强(幽灵招式有 bug)
- 暴击率基于速度值
- 缠绕/束缚阻止对手行动
- 集中能量 bug:反而降低暴击率而非提高
记忆约定
| 前缀 | 用途 | 例子 |
|---|---|---|
| PKM:OBJECTIVE | 当前目标 | 从常青市商店送包裹 |
| PKM:MAP | 导航知识 | 常青市:商店在东北 |
| PKM:STRATEGY | 战斗/队伍计划 | 打小霞前需要草系 |
| PKM:PROGRESS | 里程碑追踪 | 击败劲敌,前往常青市 |
| PKM:STUCK | 卡住的情形 | y=28 的台阶往右绕 |
| PKM:TEAM | 队伍备注 | 车厘龟 Lv6,撞击 + 摇尾巴 |
进度里程碑
- 选初始宝可梦
- 从常青市商店送包裹,获得图鉴
- 岩石徽章——小刚(岩石)→ 用水/草
- 瀑布徽章——小霞(水)→ 用草/电
- 雷电徽章——马志士(电)→ 用地面
- 彩虹徽章——莉佳(草)→ 用火/冰/飞行
- 灵魂徽章——阿桔(毒)→ 用地面/超能力
- 沼泽徽章——娜姿(超能力)→ 最难的道馆
- 火山徽章——夏伯(火)→ 用水/地面
- 大地徽章——坂木(地面)→ 用水/草/冰
- 四天王 → 冠军!
停止游玩
- 通过 POST /save 用描述性名字存档
- 用 PKM:PROGRESS 更新记忆
- 告诉用户:"Game saved as [name]! Say 'play pokemon' to resume."
- 杀掉服务器和隧道后台进程
常见陷阱
- 切勿下载或提供 ROM 文件
- 不要在不看视觉的情况下连发超过 4-5 个动作
- 走出建筑后、往北走之前,务必先横向挪位
- 门/楼梯传送后务必加 wait_60 x2-3
- 通过 RAM 判断对话不可靠——用截图验证
- 高风险遭遇之前先存档
- 隧道 URL 每次重启都会变