O que cli-anything-slay-the-spire-ii faz?
Uma interface de linha de comando com estado para controlar o jogo real Slay the Spire 2 através do mod local STS2_Bridge. A CLI lê o estado normalizado do jogo e envia comandos de ação via uma API HTTP local em localhost:15526.
Instalação
Este CLI requer um mod bridge que é executado dentro do processo do jogo. Tanto o CLI quanto o bridge são distribuídos a partir do mesmo repositório:
https://github.com/HKUDS/CLI-Anything
1. Instalar o 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 o mod bridge
O mod bridge é um plugin .NET 9 que deve ser compilado e instalado no diretório do jogo. Instruções completas estão no README do repositório, mas a versão resumida é:
cd CLI-Anything/slay_the_spire_ii/agent-harness/bridge/plugin
./build.sh
cd ../install
./install_bridge.sh
Se o script de build não conseguir detectar automaticamente o diretório de dados do jogo, defina STS2_GAME_DATA_DIR explicitamente:
STS2_GAME_DATA_DIR="/path/to/data_sts2" ./build.sh
3. Ativar o mod e verificar
Inicie Slay the Spire 2 via Steam, ative o mod STS2_Bridge no gerenciador de mods e verifique a conexão:
cli-anything-sts2 state
Se retornar JSON, o CLI e o bridge estão conectados.
Pré-requisitos:
- Python 3.10+
- Slay the Spire 2 (Steam) com o mod
STS2_Bridge ativado
.NET 9 SDK (apenas necessário para construir o mod bridge)
Uso
Comandos Básicos
cli-anything-sts2 state
cli-anything-sts2
cli-anything-sts2 --help
Grupos de Comandos
Inspeção de Estado
| Comando | Descrição |
|---|
state | Estado normalizado com campo decision |
raw-state | JSON bruto do bridge |
Menu Principal
| Comando | Descrição |
|---|
continue-game | Continuar uma partida salva |
start-game --character IRONCLAD --ascension 0 | Iniciar uma nova partida |
abandon-game | Abandonar o save atual |
return-to-main-menu | Retornar ao menu de qualquer tela |
Personagens: IRONCLAD, SILENT, DEFECT, NECROBINDER, REGENT
Combate
| Comando | Descrição |
|---|
play-card <índice> [--target <id_inimigo>] | Jogar uma carta da mão |
use-potion <slot> [--target <id_inimigo>] | Usar uma poção |
end-turn | Encerrar o turno atual |
Mapa e Fluxo de Salas
| Comando | Descrição |
|---|
choose-map <índice> | Selecionar um nó do mapa |
proceed | Sair da sala atual |
Recompensas
| Comando | Descrição |
|---|
claim-reward <índice> | Reivindicar uma recompensa de combate |
pick-card-reward <índice> | Pegar uma carta de recompensa |
skip-card-reward | Pular a recompensa de carta |
claim-treasure-relic <índice> | Reivindicar uma relíquia de tesouro |
select-relic <índice> | Selecionar uma relíquia |
skip-relic-selection | Pular a seleção de relíquia |
Eventos e Locais de Descanso
| Comando | Descrição |
|---|
event <índice> | Escolher uma opção de evento |
advance-dialogue | Avançar em eventos apenas de diálogo |
rest <índice> | Escolher uma ação na fogueira |
Loja
| Comando | Descrição |
|---|
shop-buy <índice> | Comprar na loja |
Sobreposições de Seleção de Cartas/Relíquias
| Comando | Descrição |
|---|
select-card <índice> | Selecionar uma carta em sobreposição |
confirm-selection | Confirmar a seleção atual |
cancel-selection | Cancelar a seleção atual |
combat-select-card <índice> | Selecionar uma carta durante sobreposição de combate |
combat-confirm-selection | Confirmar seleção de carta em combate |
Ação Bruta
| Comando | Descrição |
|---|
action <nome> --kv chave=valor | Enviar uma ação bruta do bridge |
Estados de Decisão
O comando state retorna JSON com um campo decision indicando a tela atual do jogo. Direcione seu próximo comando com base neste valor:
| Decisão | Significado | Próximos Comandos Típicos |
|---|
menu | Menu principal | continue-game, start-game |
combat_play | Em combate, seu turno | play-card, use-potion, end-turn |
hand_select | Sobreposição de seleção de cartas | combat-select-card, combat-confirm-selection |
map_select | Seleção de nó do mapa | choose-map |
game_over | Partida encerrada | return-to-main-menu |
combat_rewards | Recompensas pós-combate | claim-reward, proceed |
card_reward | Escolha de carta de recompensa | pick-card-reward, skip-card-reward |
event_choice | Tela de evento | event, advance-dialogue |
rest_site | Fogueira | rest |
shop | Tela da loja | shop-buy, proceed |
card_select | Tela de seleção de cartas | select-card, confirm-selection |
relic_select | Seleção de relíquia | select-relic, skip-relic-selection |
treasure | Sala do tesouro | claim-treasure-relic, proceed |
Configuração
| Opção | Padrão | Descrição |
|---|
--base-url | http://localhost:15526 | URL da API do bridge |
--timeout | 10.0 | Tempo limite HTTP em segundos |
Para Agentes de IA
- Sempre leia
state primeiro para obter o campo decision
- Releia o state após cada ação - índices e energia mudam durante o combate
- Verifique os códigos de retorno - 0 para sucesso, diferente de zero para erros
- Analise o stdout para saída JSON