Verboo Code: como configurar a status line com /statusline (modelo, pasta, branch e contexto)
Voltar para o Blog
Artigoverboo codetutorialagente de programaçãodev toolsprodutividade

Verboo Code: como configurar a status line com /statusline (modelo, pasta, branch e contexto)

Mafra28 de outubro de 20267 min de leitura

Você troca de modelo com /model, muda de branch, abre outra pasta, e depois de meia hora não lembra mais em que modelo está nem quanto do contexto já foi usado. A status line resolve isso: uma linha fixa embaixo do prompt da Verboo Code que mostra o que você quiser, atualizada a cada resposta do agente. O comando /statusline monta essa linha por você.

O que é a status line da Verboo Code?

É uma linha de texto embaixo da caixa de prompt, gerada por um comando de shell seu. A Verboo Code roda esse comando, manda para ele um JSON com o estado da sessão pela entrada padrão e mostra o que o comando imprimir.

No código-fonte, ela só aparece quando existe a chave statusLine no settings. Sem essa chave, não tem linha nenhuma. O texto é exibido com cor atenuada e aceita códigos de cor ANSI, então dá para colorir com printf.

Fluxograma da status line na Verboo Code: /statusline gera o comando, a chave statusLine é gravada em ~/.verboo/settings.json com type command, e o script recebe JSON no stdin e imprime a linha, atualizada a cada resposta. Se a linha não aparece, conferir se o script sai com exit 0, se a pasta está marcada como confiável e se disableAllHooks está desligado
Do /statusline até a linha na tela, e as 3 checagens quando ela não aparece. Verificado no código-fonte da v0.15.38 em 28/10/2026.

Como configurar a status line com /statusline?

Digite /statusline na sessão. Sem argumento, ele tenta copiar o prompt do seu terminal. Com argumento, ele faz o que você pedir.

/statusline

Sem argumento, o pedido padrão é Configure my statusLine from my shell PS1 configuration. Um subagente chamado statusline-setup, que só tem as ferramentas Read e Edit, procura a variável PS1 nesta ordem: ~/.zshrc, ~/.bashrc, ~/.bash_profile e ~/.profile. Ele converte os códigos do PS1 em comandos (\u vira $(whoami), \w vira $(pwd), \W vira $(basename "$(pwd)")) e tira o $ ou > do final.

Se você não tem PS1 customizado, ou quer outra coisa, descreva:

/statusline mostre o modelo, o nome da pasta, a branch do git e a porcentagem de contexto usada

O subagente grava o resultado no seu settings.json, preservando o resto do arquivo. Se o comando ficar longo, ele salva um script separado e aponta o settings para ele. Se a CLI pedir permissão para editar o arquivo, aprove. Para ajustes depois, é só rodar /statusline de novo com o novo pedido.

Armadilha: o /statusline é desativado em modo não interativo. Em script ou CI, configure na mão, como na seção abaixo.

Como configurar a status line na mão?

Crie um script, torne executável e aponte a chave statusLine para ele. São três passos.

1. O script. Salve em ~/.verboo/statusline.sh. Ele usa jq para ler o JSON:

#!/usr/bin/env bash
input=$(cat)
model=$(echo "$input" | jq -r '.model.display_name')
dir=$(echo "$input" | jq -r '.workspace.current_dir')
used=$(echo "$input" | jq -r '.context_window.used_percentage // empty')
branch=$(git -C "$dir" --no-optional-locks branch --show-current 2>/dev/null)

out="$model · $(basename "$dir")"
[ -n "$branch" ] && out="$out · $branch"
[ -n "$used" ] && out="$out · ctx $(printf '%.0f' "$used")%"
printf '%s\n' "$out"

O --no-optional-locks no git é recomendação do próprio código: a linha roda a cada resposta, e sem essa flag o git pode disputar o lock do repositório com o agente.

2. Permissão de execução:

chmod +x ~/.verboo/statusline.sh

3. O settings. Em ~/.verboo/settings.json (ou na pasta definida em VERBOO_CONFIG_DIR, se você usa essa variável):

{
  "statusLine": {
    "type": "command",
    "command": "~/.verboo/statusline.sh",
    "padding": 0
  }
}

O type só aceita "command". O padding é opcional e define o espaço lateral da linha. Para valer só num projeto, use .verboo/settings.json na raiz do repositório. Não precisa reiniciar: quando o comando muda no settings, a linha é recalculada na hora.

Como testar o script antes de usar?

Mande um JSON falso pela entrada padrão. Se imprimir a linha, está pronto.

echo '{"model":{"display_name":"deepseek-v4-pro"},"workspace":{"current_dir":"'"$PWD"'"},"context_window":{"used_percentage":42.7}}' | ~/.verboo/statusline.sh

Dentro de um repositório git na branch main, a saída fica assim:

deepseek-v4-pro · meu-projeto · main · ctx 43%

Antes da primeira resposta da sessão, used_percentage vem null. O // empty no jq e o teste [ -n "$used" ] fazem o trecho de contexto simplesmente sumir nesse caso, em vez de mostrar ctx null%.

Quais campos o JSON da status line traz?

Os principais, conforme o tipo montado em src/components/StatusLine.tsx:

CampoO que éQuando vem
model.display_name e model.idModelo que está respondendo agoraSempre. Muda quando você usa /model
workspace.current_dirPasta atualSempre
workspace.project_dirPasta onde a sessão começouSempre
workspace.added_dirsPastas liberadas com /add-dirSempre (lista, pode ser vazia)
context_window.used_percentagePorcentagem do contexto usada, de 0 a 100null antes da primeira resposta
context_window.remaining_percentagePorcentagem do contexto livrenull antes da primeira resposta
context_window.context_window_sizeTamanho da janela do modelo atual, em tokensSempre
session_nameNome dado à sessão com /renameSó se a sessão tiver nome
output_style.nameEstilo de saída ativoSempre (default se nenhum)
vim.modeINSERT ou NORMALSó com modo vim ligado
worktree.name e worktree.branchWorktree e branch da sessãoSó em sessão com --worktree
versionVersão da Verboo CodeSempre

Campo opcional que não vem é campo ausente no JSON, então use sempre // empty no jq para ele não virar o texto null na tela.

Quando a status line atualiza?

Quando chega resposta nova do agente, quando você troca o modo de permissão, o modo vim ou o modelo. Não é um relógio: se nada disso muda, o comando não roda de novo.

O código espera 300 ms depois da última mudança antes de rodar o comando, e cancela uma execução em andamento quando outra começa. Na prática: um script lento não trava a interface, mas uma linha com hora (date +%H:%M) só mostra a hora da última atualização, não a hora atual.

Por que a status line não aparece?

Quase sempre é uma destas seis causas. Erros do script são ignorados em silêncio, então a linha só some, sem mensagem.

SintomaCausa no códigoO que fazer
Aviso statusline skipped · restart to fixA pasta ainda não foi marcada como confiável. Nenhum comando de usuário roda antes dissoAceite o diálogo de confiança da pasta e reinicie a sessão
Linha vazia, script parece certoScript saiu com código diferente de 0. Só a saída com exit 0 é exibidaRode o teste com JSON falso e confira echo $?
Linha vazia, exit 0Nada foi impresso no stdout. Linhas em branco são descartadasImprima com printf ou echo, não em stderr
jq: command not found no testeSem jq instalado o script falhabrew install jq ou sudo apt install jq
Permission denied no testeScript sem permissão de execuçãochmod +x ~/.verboo/statusline.sh
Nada aparece em nenhuma pasta"disableAllHooks": true no settings desliga hooks e status line juntosRemova a chave ou mude para false

O comando roda em bash. No Windows, ele passa pelo Git Bash, então escreva o script em sintaxe bash mesmo lá.

Dá para colorir ou usar mais de uma linha?

Dá. Códigos ANSI passam, desde que você use printf:

printf '\033[35m%s\033[0m · %s\n' "$model" "$(basename "$dir")"

Para várias linhas, imprima mais de uma. A Verboo Code mantém todas e só descarta as vazias. Lembre que a linha aparece atenuada, então cores muito escuras ficam difíceis de ler.

Com a porcentagem de contexto na tela, você sabe a hora de rodar /compact antes de a sessão ficar lenta. Na Verboo Code o token é ilimitado, então esse é o único número que você precisa acompanhar: crie a conta em verboo.ai, abra a CLI e rode /statusline.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
// Leia também

Artigos relacionados