📘 Khy-OS 文档站 🧭 新手先读:核心概念

cli-anything-slay-the-spire-ii


name: "cli-anything-slay-the-spire-ii"
description: >-
Command-line interface for Slay the Spire 2 - Control the real game through a local bridge mod HTTP API. Reads normalized game state and sends action commands for combat, navigation, rewards, and menu management.


cli-anything-slay-the-spire-ii#

A stateful command-line interface for controlling the real Slay the Spire 2
game through the local STS2_Bridge mod. The CLI reads normalized game state
and sends action commands via a local HTTP API at localhost:15526.

Installation#

This CLI requires a bridge mod that runs inside the game process. Both the CLI
and the bridge are distributed from the same repository:

https://github.com/HKUDS/CLI-Anything

1. Install the CLI#

git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything/slay_the_spire_ii/agent-harness
pip install -e .

2. Build and install the bridge mod#

The bridge mod is a .NET 9 plugin that must be compiled and installed into
the game directory. Full instructions are in the repository README, but the
short version is:

cd CLI-Anything/slay_the_spire_ii/agent-harness/bridge/plugin
./build.sh
cd ../install
./install_bridge.sh

If the build script cannot auto-detect the game data directory, set
STS2_GAME_DATA_DIR explicitly:

STS2_GAME_DATA_DIR="/path/to/data_sts2" ./build.sh

3. Enable the mod and verify#

Launch Slay the Spire 2 via Steam, enable the STS2_Bridge mod in the mod
manager, then verify the connection:

cli-anything-sts2 state

If this returns JSON, the CLI and bridge are connected.

Prerequisites:

  • Python 3.10+
  • Slay the Spire 2 (Steam) with STS2_Bridge mod enabled
  • .NET 9 SDK (only needed to build the bridge mod)

Usage#

Basic Commands#

# Read normalized game state (always start here)
cli-anything-sts2 state

# Start interactive REPL mode (default)
cli-anything-sts2

# Show all available commands
cli-anything-sts2 --help

Command Groups#

State Inspection#

CommandDescription
stateNormalized state with decision field
raw-stateRaw bridge JSON
CommandDescription
continue-gameContinue a saved run
start-game --character IRONCLAD --ascension 0Start a new run
abandon-gameAbandon the current save
return-to-main-menuReturn to menu from any screen

Characters: IRONCLAD, SILENT, DEFECT, NECROBINDER, REGENT

Combat#

CommandDescription
play-card <index> [--target <enemy_id>]Play a card from hand
use-potion <slot> [--target <enemy_id>]Use a potion
end-turnEnd the current turn

Map & Room Flow#

CommandDescription
choose-map <index>Select a map node
proceedLeave the current room

Rewards#

CommandDescription
claim-reward <index>Claim a combat reward
pick-card-reward <index>Pick a card reward
skip-card-rewardSkip the card reward
claim-treasure-relic <index>Claim a treasure relic
select-relic <index>Select a relic
skip-relic-selectionSkip relic selection

Events & Rest Sites#

CommandDescription
event <index>Choose an event option
advance-dialogueAdvance dialogue-only events
rest <index>Choose a campfire action

Shop#

CommandDescription
shop-buy <index>Buy from the shop

Card/Relic Selection Overlays#

CommandDescription
select-card <index>Select a card in overlay
confirm-selectionConfirm the current selection
cancel-selectionCancel the current selection
combat-select-card <index>Select a card during combat overlay
combat-confirm-selectionConfirm combat card selection

Raw Action#

CommandDescription
action <name> --kv key=valueSend a raw bridge action

Decision States#

The state command returns JSON with a decision field indicating the current
game screen. Route your next command based on this value:

DecisionMeaningTypical Next Commands
menuMain menucontinue-game, start-game
combat_playIn combat, your turnplay-card, use-potion, end-turn
hand_selectCard selection overlaycombat-select-card, combat-confirm-selection
map_selectMap node selectionchoose-map
game_overRun endedreturn-to-main-menu
combat_rewardsPost-combat rewardsclaim-reward, proceed
card_rewardCard reward pickpick-card-reward, skip-card-reward
event_choiceEvent screenevent, advance-dialogue
rest_siteCampfirerest
shopShop screenshop-buy, proceed
card_selectCard selection screenselect-card, confirm-selection
relic_selectRelic selectionselect-relic, skip-relic-selection
treasureTreasure roomclaim-treasure-relic, proceed

Configuration#

OptionDefaultDescription
--base-urlhttp://localhost:15526Bridge API URL
--timeout10.0HTTP timeout in seconds

For AI Agents#

  1. Always read state first to get the decision field
  2. Re-read state after each action - indices and energy change during combat
  3. Check return codes - 0 for success, non-zero for errors
  4. Parse stdout for JSON output