{/* 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

INFO

以下是 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 快速跳过攻击动画和文本。

战斗策略

决策树

  1. 想抓?→ 削弱后扔精灵球
  2. 不需要的野生怪?→ RUN
  3. 属性克制?→ 用效果绝佳的招式
  4. 无克制?→ 用最强的 STAB 招式
  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. 告诉用户:"Game saved as [name]! Say 'play pokemon' to resume."
  4. 杀掉服务器和隧道后台进程

常见陷阱

  • 切勿下载或提供 ROM 文件
  • 不要在不看视觉的情况下连发超过 4-5 个动作
  • 走出建筑后、往北走之前,务必先横向挪位
  • 门/楼梯传送后务必加 wait_60 x2-3
  • 通过 RAM 判断对话不可靠——用截图验证
  • 高风险遭遇之前先存档
  • 隧道 URL 每次重启都会变