- Vuoi monitorare l’utilizzo della finestra di contesto mentre lavori
- Hai bisogno di tracciare i costi della sessione
- Lavori su più sessioni e hai bisogno di distinguerle
- Vuoi che il ramo git e lo stato siano sempre visibili

Configura una barra di stato
Usa il comando/statusline per far generare uno script a Claude Code, oppure crea manualmente uno script e aggiungilo alle tue impostazioni.
Usa il comando /statusline
Il comando/statusline accetta istruzioni in linguaggio naturale che descrivono cosa vuoi visualizzare. Claude Code genera un file di script in ~/.claude/ e aggiorna automaticamente le tue impostazioni:
Configura manualmente una barra di stato
Aggiungi un campostatusLine alle tue impostazioni utente (~/.claude/settings.json, dove ~ è la tua directory home) o alle impostazioni del progetto. Imposta type su "command" e punta command a un percorso di script o a un comando di shell inline. Per una procedura dettagliata sulla creazione di uno script, vedi Costruisci una barra di stato passo dopo passo.
command viene eseguito in una shell, quindi puoi anche usare comandi inline invece di un file di script. Questo esempio usa jq per analizzare l’input JSON e visualizzare il nome del modello e la percentuale di contesto:
padding aggiunge spazi orizzontali extra (in caratteri) al contenuto della barra di stato. Il valore predefinito è 0. Questo padding è in aggiunta alla spaziatura integrata dell’interfaccia, quindi controlla l’indentazione relativa piuttosto che la distanza assoluta dal bordo del terminale.
Disabilita la barra di stato
Esegui/statusline e chiedigli di rimuovere o cancellare la tua barra di stato (ad esempio, /statusline delete, /statusline clear, /statusline remove it). Puoi anche eliminare manualmente il campo statusLine dal tuo settings.json.
Costruisci una barra di stato passo dopo passo
Questa procedura mostra cosa sta accadendo dietro le quinte creando manualmente una barra di stato che visualizza il modello corrente, la directory di lavoro e la percentuale di utilizzo della finestra di contesto.Eseguire
/statusline con una descrizione di quello che vuoi configura tutto questo automaticamente per te.
Crea uno script che legge JSON e stampa l'output
Claude Code invia dati JSON al tuo script tramite stdin. Questo script usa
jq, un parser JSON da riga di comando che potrebbe essere necessario installare, per estrarre il nome del modello, la directory e la percentuale di contesto, quindi stampa una riga formattata.Salva questo in ~/.claude/statusline.sh (dove ~ è la tua directory home, come /Users/username su macOS o /home/username su Linux):Aggiungi alle impostazioni
Dì a Claude Code di eseguire il tuo script come barra di stato. Aggiungi questa configurazione a La tua barra di stato appare nella parte inferiore dell’interfaccia. Le impostazioni si ricaricano automaticamente, ma le modifiche non appariranno fino alla tua prossima interazione con Claude Code.
~/.claude/settings.json, che imposta type su "command" (che significa “esegui questo comando di shell”) e punta command al tuo script:Come funzionano le barre di stato
Claude Code esegue il tuo script e invia i dati di sessione JSON ad esso tramite stdin. Il tuo script legge il JSON, estrae quello di cui ha bisogno e stampa il testo su stdout. Claude Code visualizza tutto ciò che il tuo script stampa. Quando si aggiorna Il tuo script viene eseguito dopo ogni nuovo messaggio dell’assistente, quando cambia la modalità di autorizzazione o quando la modalità vim si attiva/disattiva. Gli aggiornamenti vengono debounced a 300ms, il che significa che i cambiamenti rapidi si raggruppano insieme e il tuo script viene eseguito una volta che le cose si stabilizzano. Se un nuovo aggiornamento si attiva mentre il tuo script è ancora in esecuzione, l’esecuzione in corso viene annullata. Se modifichi il tuo script, le modifiche non appariranno fino al prossimo aggiornamento di Claude Code. Cosa può produrre il tuo script- Più righe: ogni istruzione
echooprintviene visualizzata come una riga separata. Vedi l’esempio multi-riga. - Colori: usa codici di escape ANSI come
\033[32mper il verde (il terminale deve supportarli). Vedi l’esempio di stato git. - Link: usa sequenze di escape OSC 8 per rendere il testo cliccabile (Cmd+clic su macOS, Ctrl+clic su Windows/Linux). Richiede un terminale che supporti i hyperlink come iTerm2, Kitty o WezTerm. Vedi l’esempio di link cliccabili.
La barra di stato viene eseguita localmente e non consuma token API. Si nasconde temporaneamente durante determinate interazioni dell’interfaccia utente, inclusi i suggerimenti di completamento automatico, il menu della guida e i prompt di autorizzazione.
Dati disponibili
Claude Code invia i seguenti campi JSON al tuo script tramite stdin:| Campo | Descrizione |
|---|---|
model.id, model.display_name | Identificatore del modello corrente e nome visualizzato |
cwd, workspace.current_dir | Directory di lavoro corrente. Entrambi i campi contengono lo stesso valore; workspace.current_dir è preferito per coerenza con workspace.project_dir. |
workspace.project_dir | Directory in cui Claude Code è stato avviato, che potrebbe differire da cwd se la directory di lavoro cambia durante una sessione |
cost.total_cost_usd | Costo totale della sessione in USD |
cost.total_duration_ms | Tempo totale trascorso dal momento dell’avvio della sessione, in millisecondi |
cost.total_api_duration_ms | Tempo totale trascorso in attesa delle risposte API in millisecondi |
cost.total_lines_added, cost.total_lines_removed | Righe di codice modificate |
context_window.total_input_tokens, context_window.total_output_tokens | Conteggi cumulativi dei token nella sessione |
context_window.context_window_size | Dimensione massima della finestra di contesto in token. 200000 per impostazione predefinita, o 1000000 per i modelli con contesto esteso. |
context_window.used_percentage | Percentuale pre-calcolata della finestra di contesto utilizzata |
context_window.remaining_percentage | Percentuale pre-calcolata della finestra di contesto rimanente |
context_window.current_usage | Conteggi dei token dall’ultima chiamata API, descritti in campi della finestra di contesto |
exceeds_200k_tokens | Se il conteggio totale dei token (token di input, cache e output combinati) dalla risposta API più recente supera 200k. Questo è un limite fisso indipendentemente dalla dimensione effettiva della finestra di contesto. |
session_id | Identificatore univoco della sessione |
transcript_path | Percorso del file di trascrizione della conversazione |
version | Versione di Claude Code |
output_style.name | Nome dello stile di output corrente |
vim.mode | Modalità vim corrente (NORMAL o INSERT) quando la modalità vim è abilitata |
agent.name | Nome dell’agente quando si esegue con il flag --agent o le impostazioni dell’agente configurate |
worktree.name | Nome del worktree attivo. Presente solo durante le sessioni --worktree |
worktree.path | Percorso assoluto della directory del worktree |
worktree.branch | Nome del ramo git per il worktree (ad esempio, "worktree-my-feature"). Assente per i worktree basati su hook |
worktree.original_cwd | La directory in cui Claude si trovava prima di entrare nel worktree |
worktree.original_branch | Ramo git estratto prima di entrare nel worktree. Assente per i worktree basati su hook |
Schema JSON completo
Schema JSON completo
Il tuo comando della barra di stato riceve questa struttura JSON tramite stdin:Campi che potrebbero essere assenti (non presenti in JSON):
vim: appare solo quando la modalità vim è abilitataagent: appare solo quando si esegue con il flag--agento le impostazioni dell’agente configurateworktree: appare solo durante le sessioni--worktree. Quando presente,brancheoriginal_branchpotrebbero anche essere assenti per i worktree basati su hook
null:context_window.current_usage:nullprima della prima chiamata API in una sessionecontext_window.used_percentage,context_window.remaining_percentage: potrebbero esserenullall’inizio della sessione
Campi della finestra di contesto
L’oggettocontext_window fornisce due modi per tracciare l’utilizzo del contesto:
- Totali cumulativi (
total_input_tokens,total_output_tokens): somma di tutti i token nell’intera sessione, utile per tracciare il consumo totale - Utilizzo corrente (
current_usage): conteggi dei token dall’ultima chiamata API, usa questo per una percentuale di contesto accurata poiché riflette lo stato effettivo del contesto
current_usage contiene:
input_tokens: token di input nel contesto correnteoutput_tokens: token di output generaticache_creation_input_tokens: token scritti nella cachecache_read_input_tokens: token letti dalla cache
used_percentage viene calcolato solo dai token di input: input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Non include output_tokens.
Se calcoli manualmente la percentuale di contesto da current_usage, usa la stessa formula solo per l’input per corrispondere a used_percentage.
L’oggetto current_usage è null prima della prima chiamata API in una sessione.
Esempi
Questi esempi mostrano modelli comuni della barra di stato. Per usare qualsiasi esempio:- Salva lo script in un file come
~/.claude/statusline.sh(o.py/.js) - Rendilo eseguibile:
chmod +x ~/.claude/statusline.sh - Aggiungi il percorso alle tue impostazioni
jq per analizzare JSON. Python e Node.js hanno l’analisi JSON integrata.
Utilizzo della finestra di contesto
Visualizza il modello corrente e l’utilizzo della finestra di contesto con una barra di progresso visiva. Ogni script legge JSON da stdin, estrae il campoused_percentage e costruisce una barra di 10 caratteri dove i blocchi pieni (▓) rappresentano l’utilizzo:

Stato git con colori
Mostra il ramo git con indicatori codificati a colori per i file in staging e modificati. Questo script usa codici di escape ANSI per i colori del terminale:\033[32m è verde, \033[33m è giallo e \033[0m ripristina il valore predefinito.

Tracciamento di costi e durata
Traccia i costi API della tua sessione e il tempo trascorso. Il campocost.total_cost_usd accumula il costo di tutte le chiamate API nella sessione corrente. Il campo cost.total_duration_ms misura il tempo totale trascorso dall’inizio della sessione, mentre cost.total_api_duration_ms traccia solo il tempo trascorso in attesa delle risposte API.
Ogni script formatta il costo come valuta e converte i millisecondi in minuti e secondi:

Visualizza più righe
Il tuo script può produrre più righe per creare una visualizzazione più ricca. Ogni istruzioneecho produce una riga separata nell’area di stato.

print o echo crea una riga separata:
Link cliccabili
Questo esempio crea un link cliccabile al tuo repository GitHub. Legge l’URL del remote git, converte il formato SSH in HTTPS consed e avvolge il nome del repository nei codici di escape OSC 8. Tieni premuto Cmd (macOS) o Ctrl (Windows/Linux) e fai clic per aprire il link nel tuo browser.

printf '%b' che interpreta gli escape di backslash in modo più affidabile rispetto a echo -e su diverse shell:
Memorizza nella cache le operazioni costose
Il tuo script della barra di stato viene eseguito frequentemente durante le sessioni attive. Comandi comegit status o git diff possono essere lenti, specialmente in repository di grandi dimensioni. Questo esempio memorizza nella cache le informazioni git in un file temporaneo e le aggiorna solo ogni 5 secondi.
Usa un nome di file stabile e fisso per il file di cache come /tmp/statusline-git-cache. Ogni invocazione della barra di stato viene eseguita come un nuovo processo, quindi gli identificatori basati su processi come $$, os.getpid() o process.pid producono un valore diverso ogni volta e la cache non viene mai riutilizzata.
Ogni script verifica se il file di cache è mancante o più vecchio di 5 secondi prima di eseguire i comandi git:
Configurazione Windows
Su Windows, Claude Code esegue i comandi della barra di stato tramite Git Bash. Puoi invocare PowerShell da quella shell:Suggerimenti
- Testa con input simulato:
echo '{"model":{"display_name":"Opus"},"context_window":{"used_percentage":25}}' | ./statusline.sh - Mantieni l’output breve: la barra di stato ha una larghezza limitata, quindi l’output lungo potrebbe essere troncato o andare a capo in modo sgradevole
- Memorizza nella cache le operazioni lente: il tuo script viene eseguito frequentemente durante le sessioni attive, quindi comandi come
git statuspossono causare lag. Vedi l’esempio di caching per come gestire questo.
Risoluzione dei problemi
La barra di stato non appare- Verifica che il tuo script sia eseguibile:
chmod +x ~/.claude/statusline.sh - Controlla che il tuo script stampi su stdout, non su stderr
- Esegui il tuo script manualmente per verificare che produca output
- Se
disableAllHooksè impostato sutruenelle tue impostazioni, anche la barra di stato è disabilitata. Rimuovi questa impostazione o impostala sufalseper riabilitarla. - Esegui
claude --debugper registrare il codice di uscita e stderr dalla prima invocazione della barra di stato in una sessione - Chiedi a Claude di leggere il tuo file di impostazioni ed eseguire il comando
statusLinedirettamente per far emergere gli errori
-- o valori vuoti
- I campi potrebbero essere
nullprima che la prima risposta API si completi - Gestisci i valori null nel tuo script con fallback come
// 0in jq - Riavvia Claude Code se i valori rimangono vuoti dopo più messaggi
- Usa
used_percentageper uno stato di contesto accurato piuttosto che i totali cumulativi total_input_tokensetotal_output_tokenssono cumulativi nella sessione e potrebbero superare la dimensione della finestra di contesto- La percentuale di contesto potrebbe differire dall’output
/contexta causa di quando ciascuno viene calcolato
- Verifica che il tuo terminale supporti i hyperlink OSC 8 (iTerm2, Kitty, WezTerm)
- Terminal.app non supporta i link cliccabili
- Le sessioni SSH e tmux potrebbero eliminare le sequenze OSC a seconda della configurazione
- Se le sequenze di escape appaiono come testo letterale come
\e]8;;, usaprintf '%b'invece diecho -eper una gestione più affidabile degli escape
- Le sequenze di escape complesse (colori ANSI, link OSC 8) possono occasionalmente causare output corrotto se si sovrappongono ad altri aggiornamenti dell’interfaccia utente
- Se vedi testo corrotto, prova a semplificare il tuo script in output di testo semplice
- Le barre di stato multi-riga con codici di escape sono più soggette a problemi di rendering rispetto al testo semplice su una sola riga
- Gli script che escono con codici diversi da zero o non producono output causano il vuoto della barra di stato
- Gli script lenti bloccano l’aggiornamento della barra di stato fino al completamento. Mantieni gli script veloci per evitare output obsoleto.
- Se un nuovo aggiornamento si attiva mentre uno script lento è in esecuzione, lo script in corso viene annullato
- Testa il tuo script indipendentemente con input simulato prima di configurarlo
- Le notifiche di sistema come errori del server MCP, aggiornamenti automatici e avvisi di token vengono visualizzate sul lato destro della stessa riga della tua barra di stato
- L’abilitazione della modalità verbose aggiunge un contatore di token a questa area
- Su terminali stretti, queste notifiche potrebbero troncare l’output della tua barra di stato