DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

WU079 /

WU079/dsh-sts2-agent

Verified

Let an AI play Slay the Spire 2 inside DSH: screenshot + mouse/keyboard tools, a local card database, and a readable play log. No mods, no memory reading.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@636a8dc6

dsh-sts2-agent

让 AI 轻轻松松玩《杀戮尖塔 2》(Slay the Spire 2)的 DSH 插件。

不碰游戏内存、不装 mod、不改存档。只做两件最小的事:

  1. 看一眼 —— 截一张游戏窗口的图,AI 直接看(read_image)。
  2. 点一下 —— 在屏幕坐标点鼠标、按键(Windows SendInput)。

外加一份游玩日志:每次截图、每次点击、每条决策都会记成一行 Markdown,玩完就是一篇能读的战报。

为什么不用 mod 接口

《杀戮尖塔 2》是 Godot 游戏,抢先体验阶段没有开放 mod 目录,.pck 里的脚本没有公开的挂载点。截图 + 鼠标键盘注入是最稳的路:不管游戏怎么更新,只要是窗口就行。

安装

dsh plugin --profile <你的 profile> add "link:<本插件目录>"

或者从 npm(如果已发布):

dsh plugin --profile <你的 profile> add dsh-sts2-agent

装完重启一次 DSH。要求:

  • Windows(用 ctypes 调 user32)
  • Python 3.10+,带 Pillow(pip install pillow)——截图用 ImageGrab
  • 游戏窗口标题默认 Slay the Spire 2,全屏或窗口化都行
  • 玩的时候别动鼠标:注入的点击抢的是真实光标

工具

工具 干什么
sts2_shot 截图,返回 PNG 路径 + 窗口原点;label 会写进日志
sts2_click 在屏幕绝对坐标点一下;note 会写进日志
sts2_drag 按住鼠标从 A 拖到 B —— 出牌、打敌人都靠它
sts2_key 按一个键(enter/space/escape/tab/方向键/数字/字母)
sts2_log 往游玩日志里加一行(决策理由、血量、战利品)
sts2_lookup 查本地牌表:卡牌/遗物/能力/药水的名字或效果关键词
sts2_status 窗口在不在、路径、python 通不通

AI 的循环大概长这样:

sts2_shot → 看图像 → sts2_lookup 查牌 → 打评分 → sts2_drag / sts2_click / sts2_key → sts2_shot → …

每次出牌前先打分

日志里有个约定:行动前先写下计划分(0–10),行动后再补一句兑现情况。比如:

🧠 回合 2:能量 3,对面 199/400。候选:
   ① 防御×2 + 打击(0 费吃 3 点攻击)→ 预计掉血 16,评分 6
   ② 群星之子 + 防御(先铺能力)→ 长期赚,评分 8
   选择 ②;出牌顺序:群星之子 → 防御 → 防御
✅ 兑现:本回合掉血 0,能力已铺,评分 8/10 成立

这样回看日志就知道「当时为什么这么打」,也方便把自己打烂的回合拎出来复盘。

本地牌表(sts2_lookup 的数据从哪来)

游戏自带的汉化 json 里就有全部牌/遗物/能力的名字和效果,从 SlayTheSpire2.pck 里只读提出来就行。tools/ 下三个脚本按顺序跑:

# 1. 看包里有什么(可选)
python tools/pck.py list "路径/SlayTheSpire2.pck" localization/zhs

# 2. 把汉化提出来(只读游戏文件,不写游戏目录)
python tools/pck.py extract "路径/SlayTheSpire2.pck" localization/zhs ./localization/zhs

# 3. 生成牌表
python tools/build-db.py --loc ./localization/zhs --out ./data
# -> data/cards.md / relics.md / powers.md / potions.md / index.tsv

index.tsv 每行 名称 \t 类型 \t 效果 \t ID,sts2_lookup 就在里面模糊搜;命令行下也可以用 python tools/lookup.py 群星之子。

效果里的 {伤害} 这类是占位符——具体数值随卡牌等级/力量变化,牌面上能看到。

提取出来的是你自己游戏里的文本,建议只在本机用,别把 data/ 提交进仓库(.gitignore 已经忽略了)。

操作要点(踩过的坑)

  • 出牌是拖不是点:单击只是把卡「拿起来」,要按住卡往上拖(拖到 y≈420 的空地)松手才算打出;打敌人的牌要拖到敌人身上。
  • escape 会打开暂停菜单(继续/设置/百科大全/放弃/保存并退出),再点「继续」回去。
  • 手牌位置会随出牌变化,每一步之后重新截图核对比记死坐标靠谱。
  • 鼠标是真被占用的:跑的时候别同时用鼠标,否则点击会落到别处。

配置

配置文件:$DSH_HOME/sts2/config.json(不写就用默认值)

键 默认 说明
enabled true 关掉就整条链路不跑
pythonPath 空 指定 python 解释器;空则用 python
windowTitle Slay the Spire 2 窗口标题关键字
shotsDir $DSH_HOME/sts2/shots 截图存放目录
logFile $DSH_HOME/sts2/run-log.md 游玩日志
cardsFile $DSH_HOME/sts2/data/index.tsv 本地牌表(sts2_lookup 用),可用绝对路径指到别处

日志长什么样

# 杀戮尖塔 2 · AI 游玩记录

- 2026-10-25 11:23:41 📷 截图:第 3 层 战斗开始 → F:\...\shot-1761.png
- 2026-10-25 11:23:52 🖱️ 点击 (612,1002):打出「打击」打左边那只
- 2026-10-25 11:23:58 ⌨️ 按键 e:结束回合
- 2026-10-25 11:24:05 🧠 血量 62/100,对面还剩 128,先防守

安全

  • 只截图、只发键鼠事件;不写游戏目录、不改存档、不联网。
  • 日志和截图都在 $DSH_HOME/sts2/ 下面,想清就整个删掉。
  • 前提是你自己开着游戏;插件不会去启动或关闭游戏进程。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 636a8dc6cb84

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout