使用 PyBoy 模拟器自动玩《宝可梦 红》。OpenClaw 代理充当玩家——启动模拟器服务器、获取截图、读取内存中的游戏状态,并通过 HTTP API 做出决策。适用于想要在《宝可梦 红》中进行战斗、探索、练级或与其他代理竞争的代理。依赖 Python 3.10+、pyboy 以及合法获取的《宝可梦 红》ROM。
Pokemon Red – You Are the Trainer.是一项面向实际任务的技能,主要用于You play Pokemon Red 直接播放 Pokemon Red. 不播放中间人脚本. 您启动模拟服务器,点击它的 HTTP API 进行截图和状态, 查看屏幕, 确定什么。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
你直接游玩《Pokemon Red》,不经过任何中间脚本。你启动模拟器服务端,通过其 HTTP API 获取游戏画面截图与状态,观察屏幕,决定操作,再将指令发回。
克隆仓库并安装依赖:
git clone https://github.com/drbarq/Pokemon-OpenClaw.git cd Pokemon-OpenClaw pip install pyboy pillow numpy fastapi uvicorn requests # 将你合法获取的 ROM 文件置于 ./PokemonRed.gb
将环境变量 POKEMON_DIR 设置为你克隆该仓库的路径(默认值:~/Code/pokemon-openclaw)。
# 启动模拟器服务端(后台进程) cd $POKEMON_DIR && python scripts/emulator_server.py --save ready --port 3456
每回合请按顺序执行以下步骤:
curl -s http://localhost:3456/api/state curl -s http://localhost:3456/api/screenshot -o /tmp/pokemon_current.png
然后使用 image 工具查看截图。务必先看再操作。
旅行时请优先使用 navigate —— 它会阻塞,直到抵达目的地、遭遇野生宝可梦战斗或卡住为止:
curl -s -X POST http://localhost:3456/api/navigate
-H 'Content-Type: application/json'
-d '{"destination": "Viridian City"}'
navigate 返回以下状态之一:
"status": "arrived" —— 已抵达!继续推进任务。"status": "battle" —— 途中遭遇野生宝可梦战斗中断。完成战斗后,再次调用 navigate。"status": "stuck" —— 无法到达目标地点。尝试手动按键操作,或更换路线。"status": "error" —— 目标名称无效或无可用路径。请检查支持的目的地列表。响应中始终包含完整的游戏状态,因此你能精确了解当前所处位置。
重要提示:navigate 是阻塞式调用,请为 curl 设置较长超时(60–120 秒)。
首次使用前,请先查询可用目的地:
curl -s http://localhost:3456/api/destinations
查询哪些地图已配置路径规划数据:
curl -s http://localhost:3456/api/maps
仅在以下情况才回退至手动按键控制:
"stuck" 或 "error"# 移动 / 交互
curl -s -X POST http://localhost:3456/api/press
-H 'Content-Type: application/json'
-d '{"buttons": ["up","up","a"], "reasoning": "Walking to door"}'
有效按键包括:up、down、left、right、a、b、start、select。每次最多发送 1–5 个按键指令。
in_battle 为 true 时)a 打开战斗菜单,再按 a 选择 FIGHT,方向键选择招式,a 确认,之后持续按 a 跳过动画a,再按 down、right、a 选择 RUN,之后持续按 a 跳过文本in_battle,则重复上述流程curl -s http://localhost:3456/api/quest # 当前任务目标
curl -s -X POST http://localhost:3456/api/quest/complete
-H 'Content-Type: application/json'
-d '{"lesson": "Door is at x=12"}' # 推进任务步骤 + 保存经验
curl -s -X POST http://localhost:3456/api/command
-H 'Content-Type: application/json'
-d '{"command": "save", "name": "checkpoint_viridian"}'
| 端点 | 方法 | 用途 |
|---|---|---|
/api/state |
GET | 从 RAM 读取游戏状态(位置、队伍、徽章、战斗状态等) |
/api/screenshot |
GET | 获取游戏画面的 PNG 截图 |
/api/navigate |
POST | 向指定名称的目的地执行路径规划 |
/api/destinations |
GET | 列出所有支持导航的目的地 |
/api/maps |
GET | 列出已配置路径规划数据的地图 |
/api/press |
POST | 发送按键指令 |
/api/quest |
GET | 获取当前任务及当前步骤 |
/api/quest/complete |
POST | 标记当前步骤已完成,可选保存一条经验(lesson) |
/api/knowledge |
GET | 获取全部已习得的经验(lessons) |
/api/knowledge/lesson |
POST | 添加一条新经验(lesson) |
/api/command |
POST | 执行保存、加载、加速等命令 |
/api/navigate。它会阻塞直至抵达或触发战斗,无需轮询。"status": "battle",请立即战斗(狂按 A),结束后再次对同一目的地调用 navigate。一个子代理(sub-agent)会话应包含以下环节:
可在 /tmp/pokemon_notepad.txt 中记录笔记,以保障单次会话内的上下文连续性。
详见 references/game_instructions.md,其中涵盖《Pokemon Red》基础内容:移动机制、建筑交互、门的开启、战斗流程、属性相克、治疗方式以及任务系统说明。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134万人学习
共49课时 | 82.5万人学习
最新文章