¿Qué hace cli-anything-slay-the-spire-ii?
Una interfaz de línea de comandos con estado para controlar el juego real Slay the Spire 2
a través del mod local STS2_Bridge. El CLI lee el estado normalizado del juego
y envía comandos de acción mediante una API HTTP local en localhost:15526.
Instalación
Este CLI requiere un mod puente que se ejecute dentro del proceso del juego. Tanto el CLI
como el puente se distribuyen desde el mismo repositorio:
https://github.com/HKUDS/CLI-Anything
1. Instalar el CLI
git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything/slay_the_spire_ii/agent-harness
pip install -e .
2. Construir e instalar el mod puente
El mod puente es un plugin de .NET 9 que debe compilarse e instalarse en
el directorio del juego. Las instrucciones completas están en el README del repositorio, pero la
versión resumida es:
cd CLI-Anything/slay_the_spire_ii/agent-harness/bridge/plugin
./build.sh
cd ../install
./install_bridge.sh
Si el script de construcción no puede detectar automáticamente el directorio de datos del juego, establece
STS2_GAME_DATA_DIR explícitamente:
STS2_GAME_DATA_DIR="/path/to/data_sts2" ./build.sh
3. Habilitar el mod y verificar
Inicia Slay the Spire 2 a través de Steam, habilita el mod STS2_Bridge en el administrador
de mods, luego verifica la conexión:
cli-anything-sts2 state
Si esto devuelve JSON, el CLI y el puente están conectados.
Requisitos previos:
- Python 3.10+
- Slay the Spire 2 (Steam) con el mod
STS2_Bridge habilitado
.NET 9 SDK (solo necesario para construir el mod puente)
Uso
Comandos básicos
cli-anything-sts2 state
cli-anything-sts2
cli-anything-sts2 --help
Grupos de comandos
Inspección del estado
| Comando | Descripción |
|---|
state | Estado normalizado con campo decision |
raw-state | JSON sin procesar del puente |
Menú principal
| Comando | Descripción |
|---|
continue-game | Continuar una partida guardada |
start-game --character IRONCLAD --ascension 0 | Iniciar una nueva partida |
abandon-game | Abandonar la partida actual |
return-to-main-menu | Volver al menú desde cualquier pantalla |
Personajes: IRONCLAD, SILENT, DEFECT, NECROBINDER, REGENT
Combate
| Comando | Descripción |
|---|
play-card <index> [--target <enemy_id>] | Jugar una carta de la mano |
use-potion <slot> [--target <enemy_id>] | Usar una poción |
end-turn | Terminar el turno actual |
Mapa y flujo de habitaciones
| Comando | Descripción |
|---|
choose-map <index> | Seleccionar un nodo del mapa |
proceed | Salir de la habitación actual |
Recompensas
| Comando | Descripción |
|---|
claim-reward <index> | Reclamar una recompensa de combate |
pick-card-reward <index> | Elegir una recompensa de carta |
skip-card-reward | Saltar la recompensa de carta |
claim-treasure-relic <index> | Reclamar una reliquia del tesoro |
select-relic <index> | Seleccionar una reliquia |
skip-relic-selection | Saltar la selección de reliquia |
Eventos y lugares de descanso
| Comando | Descripción |
|---|
event <index> | Elegir una opción de evento |
advance-dialogue | Avanzar eventos solo de diálogo |
rest <index> | Elegir una acción de fogata |
Tienda
| Comando | Descripción |
|---|
shop-buy <index> | Comprar en la tienda |
Superposiciones de selección de cartas/reliquias
| Comando | Descripción |
|---|
select-card <index> | Seleccionar una carta en superposición |
confirm-selection | Confirmar la selección actual |
cancel-selection | Cancelar la selección actual |
combat-select-card <index> | Seleccionar una carta durante superposición de combate |
combat-confirm-selection | Confirmar selección de carta de combate |
Acción sin procesar
| Comando | Descripción |
|---|
action <name> --kv key=value | Enviar una acción sin procesar al puente |
Estados de decisión
El comando state devuelve JSON con un campo decision que indica la pantalla
actual del juego. Enruta tu próximo comando según este valor:
| Decisión | Significado | Siguientes comandos típicos |
|---|
menu | Menú principal | continue-game, start-game |
combat_play | En combate, tu turno | play-card, use-potion, end-turn |
hand_select | Superposición de selección de cartas | combat-select-card, combat-confirm-selection |
map_select | Selección de nodo del mapa | choose-map |
game_over | Partida terminada | return-to-main-menu |
combat_rewards | Recompensas posteriores al combate | claim-reward, proceed |
card_reward | Elección de recompensa de carta | pick-card-reward, skip-card-reward |
event_choice | Pantalla de evento | event, advance-dialogue |
rest_site | Fogata | rest |
shop | Pantalla de tienda | shop-buy, proceed |
card_select | Pantalla de selección de cartas | select-card, confirm-selection |
relic_select | Selección de reliquia | select-relic, skip-relic-selection |
treasure | Habitación del tesoro | claim-treasure-relic, proceed |
Configuración
| Opción | Predeterminado | Descripción |
|---|
--base-url | http://localhost:15526 | URL de la API del puente |
--timeout | 10.0 | Tiempo de espera HTTP en segundos |
Para agentes de IA
- Lee siempre
state primero para obtener el campo decision
- Vuelve a leer el estado después de cada acción - los índices y la energía cambian durante el combate
- Verifica los códigos de retorno - 0 para éxito, distinto de cero para errores
- Analiza la salida estándar para obtener la salida JSON