如何用 cli-anything-sts2 完成一局 Slay the Spire 2:读取 state、出牌、结束回合与领取奖励
发布时间:2026/9/10 7:07:13 锦皓数字建站

如何用 cli-anything-sts2 完成一局 Slay the Spire 2读取 state、出牌、结束回合与领取奖励【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything本文解决一个具体任务用 CLI-Anything 仓库中的cli-anything-sts2命令行工具操控真实运行的 Steam 版Slay the Spire 2走通一局游戏的核心循环——读取状态state、出牌play-card、结束回合end-turn、领取战后奖励claim-reward。它不是模拟器也不使用屏幕自动化游戏内跑一个名为STS2_Bridge的桥接 mod在本地http://localhost:15526暴露 HTTP APICLI 通过该 API 读取 JSON 状态并回传动作。前提是你有一台可运行的 Steam 版Slay the Spire 2、Python 3.10以及构建桥接 mod 所需的.NET 9 SDK。准备构建并安装桥接 modcli-anything-sts2依赖STS2_Bridgemod 在游戏进程内运行没有这个 mod 的 CLI 无法工作。构建和安装脚本目前自动检测默认的 macOS Steam 安装路径如果你的游戏装在别处用STS2_GAME_DATA_DIR环境变量或参数显式指定。1. 安装 CLI。在仓库根目录执行cd slay_the_spire_ii/agent-harness pip install -e .这会安装cli-anything-sts2命令。2. 构建桥接 mod。构建脚本会尝试自动检测游戏数据目录并把构建产物刷新到项目内的安装包目录slay_the_spire_ii/agent-harness/bridge/install/bridge_plugin/cd slay_the_spire_ii/agent-harness/bridge/plugin ./build.sh自动检测失败时用环境变量指定游戏数据目录该目录内至少要包含sts2.dll、GodotSharp.dll、0Harmony.dllSTS2_GAME_DATA_DIR/path/to/data_sts2_macos_arm64 ./build.sh其中/path/to/data_sts2_macos_arm64需替换为你自己机器上的游戏数据目录例如bridge/plugin文档给出的 macOS 默认形态./build.sh /Users/your_name/Library/Application Support/Steam/steamapps/common/Slay the Spire 2/SlayTheSpire2.app/Contents/Resources/data_sts2_macos_arm643. 把 mod 安装进游戏。该脚本会把STS2_Bridge.dll和STS2_Bridge.json复制到游戏目录的mods/STS2_Bridge/下会写入游戏安装目录不影响其他文件cd slay_the_spire_ii/agent-harness/bridge/install ./install_bridge.sh默认目标是~/Library/Application Support/Steam/steamapps/common/Slay the Spire 2/SlayTheSpire2.app/Contents/MacOS/mods/STS2_Bridge/。游戏不在默认位置时把游戏根目录作为参数传入./install_bridge.sh /path/to/Slay the Spire 24. 在游戏中启用 mod 并验证。启动游戏确认STS2_Bridge已加载并启用。启用后 mod 会监听http://localhost:15526/。然后执行cli-anything-sts2 --help cli-anything-sts2 statecli-anything-sts2 state能返回 JSON就说明 CLI 与桥接 mod 连通了——这是后续所有操作的基础验证。从主菜单开始一局先读一次状态确认当前画面。state命令输出的是规范化后的 JSON其中的decision字段标识当前游戏画面是选择下一步命令的依据cli-anything-sts2 state主菜单对应的decision是menu此时可用的菜单动作有cli-anything-sts2 continue-game # 继续已存档的 run cli-anything-sts2 start-game --character IRONCLAD --ascension 0 # 开新局 cli-anything-sts2 abandon-game # 放弃当前存档 cli-anything-sts2 return-to-main-menu # 回到主菜单--character目前识别的值IRONCLAD、SILENT、DEFECT、NECROBINDER、REGENT默认IRONCLAD。开完新局后再次cli-anything-sts2 statedecision应变成map_select地图选路画面用choose-map index选一个节点进入战斗。读取 state用 decision 决定下一步state把桥接 mod 的原始 JSON 规范化成带decision字段的结构。完成一局的关键就是循环地执行state按decision值路由命令。文档给出的decision与下一步命令的对应关系如下完整列表见 SKILL.mddecision画面含义典型下一步命令menu主菜单continue-game、start-gamecombat_play战斗中、我方回合play-card、use-potion、end-turnhand_select战斗中选牌浮层combat-select-card、combat-confirm-selectionmap_select地图选路choose-mapcombat_rewards战后奖励claim-reward、proceedcard_reward卡牌奖励选择pick-card-reward、skip-card-rewardrest_site篝火restevent_choice事件event、advance-dialogueshop商店shop-buy、proceedtreasure宝箱房claim-treasure-relic、proceedgame_overrun 结束return-to-main-menu进入战斗后decision为combat_playstate输出里还包含出牌所需的全部信息energy当前能量、hand手牌按 0 起始索引排列、enemies敌人列表含entity_id、HP、intent等字段。如果需要看未经规范化的原始数据用cli-anything-sts2 raw-state。出牌与结束回合主路径是读状态 → 出牌 → 再读状态 → 重复 → 结束回合。cli-anything-sts2 state # 查看手牌、能量和敌人 cli-anything-sts2 play-card 0 --target jaw_worm_0 # 打出手牌第 0 张目标 jaw_worm_0 cli-anything-sts2 state # 出牌后必须重新读取 cli-anything-sts2 end-turn # 结束回合几个必须注意的点play-card index的index是 0 起始的手牌下标取自上一次state的hand数组--target填敌人的entity_id。AnyEnemy指定敌方目标的卡牌必须带--target自指或全体攻击的卡牌省略该参数。文档示例中的jaw_worm_0就是敌人entity_id的格式。每次动作后重新读state手牌索引和能量在战斗中会变化用上一次的索引出下一张牌会打错。CLI 包文档在给 AI Agent 的建议里明确列出了这一点。判定命令是否成功退出码 0 表示成功非 0 表示错误错误信息会打印到终端。若某次动作实际失败例如能量不够用state看画面和能量是否变化来确认。战斗中若卡牌效果触发选牌浮层decision变为hand_select用combat-select-card card_index选中、combat-confirm-selection确认然后再回到play-card/end-turn流程。end-turn提交后回合交接给敌人我方回合开始时state的round/turn会更新、手牌重新抽取。反复循环直到战斗结束——decision从combat_play变成combat_rewards即进入奖励画面。领取奖励战后奖励画面decision为combat_rewards的state输出包含items奖励列表0 起始索引类型为gold、potion、relic、card、special_card、card_removal等和can_proceed字段。按顺序领取cli-anything-sts2 state # 确认 decision 为 combat_rewards查看 items cli-anything-sts2 claim-reward 0 # 领取第 0 个奖励领取行为有区别见 raw_api.md金币、药水、遗物奖励立即到账卡牌类奖励不会直接进卡组而是把画面切到卡牌选择decision变为card_reward这时二选一cli-anything-sts2 pick-card-reward 0 # 加入第 0 张候选牌 cli-anything-sts2 skip-card-reward # 跳过不拿牌奖励领完后离开房间回到地图cli-anything-sts2 proceedproceed适用于奖励画面、篝火、商店会自动收起商店库存、宝箱房这几个画面事件画面不适用proceed事件要用event index选择带Proceed语义的选项。之后state的decision回到map_select一局循环选路 → 战斗 → 出牌 → 结束回合 → 领奖 → 前进继续。可选交互式 REPL 与全局参数如果不想每个动作都敲cli-anything-sts2不带子命令直接运行会进入交互式 REPL命令与前面完全一致cli-anything-sts2 # slay_the_spire_ii [http://localhost:15526] ❯ state # slay_the_spire_ii [http://localhost:15526] ❯ play-card 0 --target jaw_worm_0 # slay_the_spire_ii [http://localhost:15526] ❯ end-turnREPL 里help列出可用命令quit/exit退出。全局参数可放在任意子命令前cli-anything-sts2 --base-url http://127.0.0.1:15526 --timeout 20 state--base-url默认http://localhost:15526--timeout默认10.0秒。连接失败与已知限制cli-anything-sts2 state连不上时仓库文档给出的原因是这三类之一游戏没在运行、STS2_Bridge没安装或没启用、本地localhost:15526的 API 还没起来。后端在连不通时会直接报 Cannot connect to the game bridge API. Is the game running with the bridge mod enabled?按上面三项逐一核对即可。build.sh找不到游戏目录时确认游戏已安装并显式传STS2_GAME_DATA_DIR。还有几个边界需要知道桥接 API 提供/api/v1/singleplayer单人和/api/v1/multiplayer合作两个端点二者互斥在对局模式不匹配时调用会返回 HTTP 409。本文主路径只用单人端点CLI 默认也走单人端点。动作失败时桥接 API 返回{status: error, error: 描述}这样的 JSONCLI 会把它作为错误信息抛出。桥接 API 仅设计给本机使用没有鉴权不要把 15526 端口暴露到公网。start-game --character只识别上述五个角色名构建/安装脚本目前默认面向 macOS Steam 路径其他平台需要显式指定路径。一局完整走下来的最短操作链是装好并启用STS2_Bridge→state验证连通 →start-game --character IRONCLAD --ascension 0开新局 →choose-map进战斗 → 循环state/play-card/end-turn打完战斗 →claim-rewardpick-card-reward/skip-card-reward→proceed回到地图重复直到 run 结束decision为game_over后可return-to-main-menu。更多命令细节见 顶层 README、CLI 包文档 和 桥接 API 参考。【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。