Ir para o conteúdo

OpenCode

O Curupira executa o OpenCode no modo run com saída JSON. O diretório de trabalho do processo é a worktree da tarefa.

OpenCode 1.x:

opencode run --format json --dir <worktree> [options] -- <prompt>

Execuções headless do OpenCode 2.x usam um servidor privado (--standalone) para que a tarefa mantenha o diretório da worktree. Sessões interativas da 2.x não passam --standalone.

opencode run --standalone --format json [options] -- <prompt>

Instale e faça login

OpenCode 1.x (opencode-ai):

npm install -g opencode-ai
opencode auth login

OpenCode 2.x (@opencode/cli):

npm install -g @opencode/cli
opencode auth login

O OpenCode cuida da autenticação de cada provider de modelos. O Curupira nunca lê nem armazena credenciais.

Com api = "auto" (o padrão), o Curupira executa opencode --version uma vez por binário resolvido e escolhe o conjunto de flags a partir do primeiro x.y.z que encontrar (1.19.3 é 1.x, opencode v2.0.32 é 2.x). Defina api quando essa sondagem não conseguir ver uma versão.

Opções do perfil

Opção Argumento nativo Observações
api "v1", "v2" ou "auto" (padrão). Seleciona o conjunto de flags do OpenCode 1.x ou 2.x.
model --model <provider/model> Na 2.x, uma variante de raciocínio faz parte do modelo: provider/model#variant.
agent --agent <agent> Um agente personalizado do OpenCode.
effort --variant na 1.x; #variant na 2.x A 1.x headless passa --variant. A 2.x acrescenta #<effort> a --model. Ignorado quando model não está definido. Um modelo que já contém # não pode ser combinado com effort.
auto_approve = true --auto Aprova as permissões que não são negadas explicitamente. Use com cuidado.
Flag OpenCode 1.x headless OpenCode 2.x headless OpenCode 2.x interativo
--dir <worktree> passado omitido; o diretório de trabalho do processo é a worktree omitido
--variant effort omitido omitido
--model model model, ou model#effort quando effort está definido igual à 2.x headless
--standalone omitido sempre passado omitido
--session, --agent, --format json, --auto passados quando configurados passados quando configurados --agent e --auto quando configurados; sem --format

Na 1.x, cada execução define OPENCODE_DB como <worktree>.opencode.db, então tarefas paralelas não compartilham sessões nem entradas de projeto do OpenCode. Na 2.x, as execuções mantêm o seu banco do OpenCode: a 2.x guarda nele as credenciais dos provedores, e um banco novo informa todos os modelos como indisponíveis. O servidor privado --standalone já mantém cada tarefa na sua worktree. --server não é uma opção de perfil.

Exemplo

[agents.profiles.opencode]
provider = "opencode"
# api = "auto" # "v1", "v2" ou "auto" (padrão)
model = "anthropic/claude-sonnet-4"
agent = "build"
# effort = "high" # 1.x: --variant high; 2.x: --model anthropic/claude-sonnet-4#high

Sessões

O id de sessão é o sessionID no topo de um evento JSON (1.x e 2.x). Ele é salvo com a tarefa. Uma tarefa interrompida é retomada com --session <session_id>.