欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

Pokémon 自动游玩

Pokémon 自动游玩

使用 pokemon-agent 包通过无头模拟器自动游玩 Pokémon 游戏。

使用场景

  • 用户说"play pokemon"、"start pokemon"、"pokemon game"
  • 用户询问 Pokémon Red、Blue、Yellow、FireRed 等
  • 用户想看 AI 玩 Pokémon
  • 用户提到 ROM 文件(.gb、.gbc、.gba)

启动流程

1. 首次设置(克隆、venv、安装)

仓库是 GitHub 上的 NousResearch/pokemon-agent。克隆后设置 Python 3.10+ 虚拟环境。使用 uv(速度优先)创建 venv 并以可编辑模式安装包及 pyboy 额外依赖。如没有 uv,回退到 python3 -m venv + pip。

本机已设置好在 /home/teknium/pokemon-agent,venv 已就绪——只需 cd 到那里并 source .venv/bin/activate。

你还需要 ROM 文件。向用户询问他们的 ROM。本机已有 roms/pokemon_red.gb 在该目录中。

绝不要下载或提供 ROM 文件——始终询问用户。

2. 启动游戏服务器

在 pokemon-agent 目录中激活 venv 后,运行 pokemon-agent serve,用 --rom 指向 ROM,--port 9876。在后台运行(&)。

要从存档恢复游戏,添加 --load-state 加上存档名称。

等待 4 秒启动,然后用 GET /health 验证。

3. 设置实时仪表盘供用户观看

通过 localhost.run 的 SSH 反向隧道让用户在浏览器中查看仪表盘。用 ssh 连接,将本地端口 9876 转发到 nokey@localhost.run 的远程端口 80。输出重定向到日志文件,等待 10 秒,然后 grep 日志找 .lhr.life URL。给用户该 URL 并加上 /dashboard/。

隧道 URL 每次都会变——如重启需给用户新 URL。

保存和加载

何时保存

  • 每 15-20 回合游戏
  • 道馆战、宿敌对战或有风险的战斗前始终保存
  • 进入新城镇或地下城前
  • 任何不确定的操作前

如何保存

POST /save 加描述性名称。好的例子:

before_brock、route1_start、mt_moon_entrance、got_cut

如何加载

POST /load 加存档名称。

列出可用存档

GET /saves 返回所有保存的状态。

启动服务器时加载

启动服务器时用 --load-state 标志自动加载存档。

这比启动后通过 API 加载更快。

游戏循环

步骤 1:观察——检查状态并截图

GET /state 获取位置、HP、战斗、对话。

GET /screenshot 并保存到 /tmp/pokemon.png,然后用 vision_analyze。

始终两者都做——RAM 状态给出数值,视觉给出空间感知。

步骤 2:定位

  • 屏幕上有对话/文字 → 推进它
  • 在战斗中 → 战斗或逃跑
  • 队伍受伤 → 去 Pokémon Center
  • 靠近目标 → 小心导航

步骤 3:决策

优先级:对话 > 战斗 > 治疗 > 剧情目标 > 训练 > 探索

步骤 4:行动——最多移动 2-4 步,然后重新检查

POST /action 加简短动作列表(2-4 个动作,不是 10-15 个)。

步骤 5:验证——每个移动序列后截图

截图并用 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,然后按 A。用 hold_b 包裹以快速跳过文字/动画。

战斗(FIGHT)

战斗菜单上 FIGHT 在左上(默认光标位置)。

按 A 进入招式选择,再按 A 使用第一个招式。

然后按住 B 快速跳过攻击动画和文字。

战斗策略

决策树

  • 想捕捉?→ 削弱后扔 Poké Ball
  • 不需要的野生?→ 逃跑
  • 属性克制?→ 使用效果拔群的招式
  • 无克制?→ 使用最强的本系招式
  • HP 低?→ 切换或使用 Potion

第一代属性表(关键对位)

  • 水克火、地面、岩石
  • 火克草、虫、冰
  • 草克水、地面、岩石
  • 电克水、飞行
  • 地面克火、电、岩石、毒
  • 超能克格斗、毒(第一代最强!)

第一代特性

  • 特攻 = 特殊招式的攻防双属性
  • 超能系过强(幽灵系招式有 bug)
  • 暴击率基于速度值
  • 绑住/缠绕阻止对手行动
  • 聚气 bug:降低暴击率而非提高

记忆约定

前缀用途示例
PKM:OBJECTIVE当前目标从 Viridian Mart 取 Parcel
PKM:MAP导航知识Viridian:商店在东北
PKM:STRATEGY战斗/队伍计划Misty 前需要草系
PKM:PROGRESS里程碑追踪击败宿敌,前往 Viridian
PKM:STUCK卡住的情况y=28 的悬崖向右绕过
PKM:TEAM队伍笔记Squirtle Lv6,Tackle + Tail Whip

进度里程碑

  • 选择御三家
  • 从 Viridian Mart 送 Parcel,获得 Pokédex
  • 灰色徽章——Brock(岩石)→ 用水/草
  • 蓝色徽章——Misty(水)→ 用草/电
  • 橙色徽章——Lt. Surge(电)→ 用地面
  • 彩虹徽章——Erika(草)→ 用火/冰/飞行
  • 粉色徽章——Koga(毒)→ 用地面/超能
  • 金色徽章——Sabrina(超能)→ 最难道馆
  • 红色徽章——Blaine(火)→ 用水/地面
  • 绿色徽章——Giovanni(地面)→ 用水/草/冰
  • 四天王 → 冠军!

停止游玩

  • 通过 POST /save 用描述性名称保存游戏
  • 用 PKM:PROGRESS 更新记忆
  • 告诉用户:"游戏已保存为 [名称]!说'play pokemon'继续。"
  • 杀掉服务器和隧道后台进程

注意事项

  • 绝不要下载或提供 ROM 文件
  • 不要在未检查视觉的情况下发送超过 4-5 个动作
  • 走出建筑后向北走之前始终侧移
  • 门/楼梯传送后始终添加 wait_60 x2-3
  • 通过 RAM 检测对话不可靠——用截图验证
  • 有风险的对战前保存
  • 隧道 URL 每次重启都会变

安装指南

复制下方命令,在终端运行即可安装:

# 安装到当前项目
npx skills add pokemon-player
# 全局安装 — 所有项目可用
npx skills add pokemon-player -g

使用指南

安装完成后,在对话框中直接使用此技能。

基本信息
作者 Community 分类 efficiency 难度 Intermediate 时长 1 hour
🛠️ 安装命令
# 安装到当前项目
npx skills add pokemon-player
# 全局安装
npx skills add pokemon-player -g

发表评论