dsh-sts2:用 DSH 接管《杀戮尖塔 2》整局流程

前言

在 DSH 里做游戏向智能体时,常见做法是手写脚本或零散 API,只能读到部分界面信息,出牌、选路、商店和事件还要人工补步。下面介绍的 dsh-sts2 是独立 npm 插件,通过游戏内 AiTeammate Mod 的本地 TCP 桥接,把完整局面和操作面暴露给 agent,并支持自动循环玩到本局结束。

这是什么

dsh-sts2(仓库 YuWan886/dsh-sts2)由维护者 YuWan886 发布,许可证 MIT,当前 npm 版本 0.7.2。它不负责改游戏逻辑,只作为 DSH 与 Mod 之间的客户端:经 127.0.0.1 上的行 JSON TCP 协议通信,不经过公网。Mod 侧见 YuWan886/STS2-AiTeammate 及 dsh-agent-bridge 文档。

核心功能

插件向 DSH 注册一组 sts2_* 工具,覆盖读局、等待输入、操作 UI、决策与社交等场景。

连接与状态

  • sts2_status:连接自检(CONNECTED / NOT CONNECTED、端点、是否允许操作、当前局进度)。
  • sts2_state:阶段、角色、血量、金币、遗物、药水、手牌、敌人意图、可选项等;detail=delta 仅返回相对上次快照的变化。
  • sts2_wait:阻塞到游戏需要输入或状态变化,是自动对局主循环;同样支持 detail=delta。
  • sts2_read:深读牌堆、遗物、地图、单卡等。

对局与菜单

  • sts2_start_run / sts2_continue_run:从主菜单开新局或读档继续;支持 standard、custom、daily 等模式(每日挑战的种子与 modifier 规则以 README 为准)。
  • sts2_host:开多人大厅;daily / custom 大厅会自动加入 AI 队友并置为准备。
  • sts2_choose、sts2_proceed、sts2_select_cards:地图、奖励、商店、事件、主菜单与大堂按钮等 UI 选择。
  • sts2_play_card、sts2_use_potion、sts2_end_turn 等:在 controlled.kind=local 时直接代打 UI。

AI 决策与自动接管

  • sts2_decide:回答 phase=ai_decision 或本地 hand_select 类决策(JSON 由快照中的 decision 字段说明)。
  • sts2_autoplay:开启/关闭自动接管;游戏等待输入时插件经 ctx.agents 唤醒 agent,无需每回合手动说「继续」。
  • sts2_handoff:把当前局交给新对话继续。

其它

  • sts2_note:本局长期笔记,Mod 会注入后续决策提示词。
  • sts2_chat_send:游戏内聊天回复;reply_to 需使用快照或 <sts2_chat> 中的 seq。
  • sts2_set_nickname、sts2_screenshot(需游戏内开启截图与视觉模型)、存档/暂停/放弃等控制工具见 README 工具表。

快照里 controlled.kind 区分两种玩法:local 用 UI 动作工具;ai(「AI 独自爬塔」或带 AI 队友的多人局)用 sts2_decide 替内置 AI 做决策,Mod 负责执行。

安装与启用

前置条件

  1. dsh ≥ 0.2.1-rc.5(插件 engines.dsh 限定 0.2.x)。
  2. Slay the Spire 2 并已启用 AiTeammate 的外部 Agent 桥接。
  3. Node.js ≥ 22(dsh 自带环境即可)。

安装插件

桌面端在应用 设置 → 插件 中从 npm 安装包名 dsh-sts2,或从本地仓库目录安装,然后重启应用。

命令行 profile(web / headless):

# 安装到 web profile
# dsh profile 的 pnpm-workspace 把 profile 自己作为 workspace 根,所以需要 -w
dsh plugin --profile web add -w dsh-sts2

# 如果使用别的 profile 名,替换 web
dsh plugin --profile <name> add -w dsh-sts2

重启 dsh 后,在启动日志或 dsh --profile web --dump-config 中应能看到 dsh-sts2。升级与卸载:

dsh plugin --profile web add -w dsh-sts2@latest
dsh plugin --profile web remove dsh-sts2

插件配置

在 侧边栏「插件」→ 已安装 dsh-sts2 → sts2 行 → 配置 中可改 host / port / token(默认可与游戏内桥接端口 26333 对齐);host、port、token 改完立即生效。首次装上带浏览器半区的版本或升级后需 重启 dsh 才能看到配置卡片。

游戏内 Mod 设置

路径:设置 → 模组设置 → AI 队友 → 外部 Agent(dsh)。

  1. 打开 启用外部 Agent 桥接。
  2. 确认 桥接端口 与插件一致(默认 26333)。
  3. 可选:游戏与插件填写相同 访问 token。
  4. 需要 agent 操作时打开 允许外部 Agent 操作游戏(只读状态可关闭)。

连接为懒连接:插件加载约 1.5 秒后会探测一次;游戏未开时游戏侧显示「尚无 dsh 连接」属正常,开游戏并启用桥接后重启 dsh 或调用任意 sts2_* 工具即可。也可在对话中询问是否连上,agent 会调用 sts2_status;游戏设置页会显示 运行中:127.0.0.1:26333 — 已连接 N 个 dsh 客户端。

典型用法

在 dsh 对话中可以这样说(README 示例):

你来玩这局《杀戮尖塔 2》。先调用 sts2_autoplay 打开自动接管,然后一直玩到本局结束。

之后 agent 会循环:sts2_wait → 读状态 → 出牌/选择/回答决策 → 再等待;战斗、地图、奖励、商店、篝火、事件等由工具链处理。多人局出现 AI 队友且开启自动接管时,插件还可通过轮询认领 Mod 发出的接管邀请并新建对话开局。

适用场景与注意

适合希望在 DSH 里做 STS2 全自动或半自动 agent、需要完整局面 JSON 与统一工具面的开发者或玩家。插件以 当前 dsh 进程的权限 运行,安装前建议阅读 GitHub 源码 与 MIT 许可证;社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,仅为社区索引。

只读监控时可关闭游戏内「允许外部 Agent 操作游戏」。聊天回复必须调用 sts2_chat_send,仅在对话里打字玩家看不到;插件未轮询或 dsh 断开时,Mod 会回退自带聊天后端。

结尾

dsh-sts2 把《杀戮尖塔 2》的读局与整局操作收敛到 DSH 工具集,配合 AiTeammate 本地桥接与 sts2_autoplay,可实现从主菜单到本局结束的连续 agent 驱动。详情以仓库 README 为准:GitHub — YuWan886/dsh-sts2,目录页:skillhub.cn/plugins/YuWan886/dsh-sts2。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜