- Die Kontextfensternutzung während der Arbeit überwachen möchten
- Sitzungskosten verfolgen müssen
- Über mehrere Sitzungen hinweg arbeiten und diese unterscheiden müssen
- Git-Branch und Status immer sichtbar haben möchten

Richten Sie eine Statuszeile ein
Verwenden Sie den/statusline Befehl, um Claude Code ein Skript für Sie generieren zu lassen, oder erstellen Sie manuell ein Skript und fügen Sie es zu Ihren Einstellungen hinzu.
Verwenden Sie den /statusline Befehl
Der/statusline Befehl akzeptiert Anweisungen in natürlicher Sprache, die beschreiben, was Sie angezeigt haben möchten. Claude Code generiert eine Skriptdatei in ~/.claude/ und aktualisiert Ihre Einstellungen automatisch:
Statuszeile manuell konfigurieren
Fügen Sie einstatusLine Feld zu Ihren Benutzereinstellungen (~/.claude/settings.json, wobei ~ Ihr Heimatverzeichnis ist) oder Projekteinstellungen hinzu. Setzen Sie type auf "command" und verweisen Sie command auf einen Skriptpfad oder einen Inline-Shell-Befehl. Eine vollständige Anleitung zum Erstellen eines Skripts finden Sie unter Erstellen Sie eine Statuszeile Schritt für Schritt.
command Feld wird in einer Shell ausgeführt, sodass Sie auch Inline-Befehle anstelle einer Skriptdatei verwenden können. Dieses Beispiel verwendet jq, um die JSON-Eingabe zu analysieren und den Modellnamen und den Kontextprozentsatz anzuzeigen:
padding Feld fügt zusätzlichen horizontalen Abstand (in Zeichen) zum Inhalt der Statuszeile hinzu. Standardmäßig 0. Dieser Abstand wird zusätzlich zum integrierten Abstand der Benutzeroberfläche hinzugefügt, sodass er die relative Einrückung steuert, anstatt den absoluten Abstand vom Terminalrand.
Deaktivieren Sie die Statuszeile
Führen Sie/statusline aus und bitten Sie es, Ihre Statuszeile zu entfernen oder zu löschen (z. B. /statusline delete, /statusline clear, /statusline remove it). Sie können auch das statusLine Feld manuell aus Ihrer settings.json löschen.
Erstellen Sie eine Statuszeile Schritt für Schritt
Diese Anleitung zeigt, was unter der Haube passiert, indem Sie manuell eine Statuszeile erstellen, die das aktuelle Modell, das Arbeitsverzeichnis und den Prozentsatz der Kontextfensternutzung anzeigt.Das Ausführen von
/statusline mit einer Beschreibung dessen, was Sie möchten, konfiguriert all dies automatisch für Sie.
Erstellen Sie ein Skript, das JSON liest und Ausgabe druckt
Claude Code sendet JSON-Daten über stdin an Ihr Skript. Dieses Skript verwendet
jq, einen Befehlszeilen-JSON-Parser, den Sie möglicherweise installieren müssen, um den Modellnamen, das Verzeichnis und den Kontextprozentsatz zu extrahieren, und druckt dann eine formatierte Zeile.Speichern Sie dies unter ~/.claude/statusline.sh (wobei ~ Ihr Heimatverzeichnis ist, z. B. /Users/username auf macOS oder /home/username auf Linux):Machen Sie es ausführbar
Markieren Sie das Skript als ausführbar, damit Ihre Shell es ausführen kann:
Zu Einstellungen hinzufügen
Teilen Sie Claude Code mit, dass es Ihr Skript als Statuszeile ausführen soll. Fügen Sie diese Konfiguration zu Ihre Statuszeile wird am unteren Rand der Benutzeroberfläche angezeigt. Einstellungen werden automatisch neu geladen, aber Änderungen werden erst bei Ihrer nächsten Interaktion mit Claude Code angezeigt.
~/.claude/settings.json hinzu, die type auf "command" setzt (was bedeutet „diesen Shell-Befehl ausführen”) und command auf Ihr Skript verweist:Wie Statuszeilen funktionieren
Claude Code führt Ihr Skript aus und leitet JSON-Sitzungsdaten über stdin an es weiter. Ihr Skript liest die JSON, extrahiert das, was es benötigt, und druckt Text auf stdout. Claude Code zeigt alles an, was Ihr Skript druckt. Wann es aktualisiert wird Ihr Skript wird nach jeder neuen Assistentnachricht ausgeführt, wenn sich der Berechtigungsmodus ändert oder wenn der Vim-Modus umgeschaltet wird. Aktualisierungen werden mit 300 ms entprellt, was bedeutet, dass schnelle Änderungen zusammengefasst werden und Ihr Skript einmal ausgeführt wird, wenn sich die Dinge beruhigen. Wenn eine neue Aktualisierung ausgelöst wird, während Ihr Skript noch läuft, wird die laufende Ausführung abgebrochen. Wenn Sie Ihr Skript bearbeiten, werden die Änderungen erst bei Ihrer nächsten Interaktion mit Claude Code angezeigt, die eine Aktualisierung auslöst. Was Ihr Skript ausgeben kann- Mehrere Zeilen: Jede
echooderprintAnweisung wird als separate Zeile angezeigt. Siehe das mehrzeilige Beispiel. - Farben: Verwenden Sie ANSI-Escape-Codes wie
\033[32mfür Grün (Terminal muss diese unterstützen). Siehe das Git-Status-Beispiel. - Links: Verwenden Sie OSC 8 Escape-Sequenzen, um Text anklickbar zu machen (Cmd+Klick auf macOS, Strg+Klick auf Windows/Linux). Erfordert ein Terminal, das Hyperlinks wie iTerm2, Kitty oder WezTerm unterstützt. Siehe das anklickbare Links-Beispiel.
Die Statuszeile wird lokal ausgeführt und verbraucht keine API-Token. Sie wird vorübergehend während bestimmter UI-Interaktionen ausgeblendet, einschließlich Autovervollständigungsvorschlägen, dem Hilfemenü und Berechtigungsaufforderungen.
Verfügbare Daten
Claude Code sendet die folgenden JSON-Felder über stdin an Ihr Skript:| Feld | Beschreibung |
|---|---|
model.id, model.display_name | Aktuelle Modellkennung und Anzeigename |
cwd, workspace.current_dir | Aktuelles Arbeitsverzeichnis. Beide Felder enthalten denselben Wert; workspace.current_dir wird für Konsistenz mit workspace.project_dir bevorzugt. |
workspace.project_dir | Verzeichnis, in dem Claude Code gestartet wurde, das sich von cwd unterscheiden kann, wenn sich das Arbeitsverzeichnis während einer Sitzung ändert |
cost.total_cost_usd | Gesamtsitzungskosten in USD |
cost.total_duration_ms | Gesamtverstrichene Zeit seit Sitzungsbeginn in Millisekunden |
cost.total_api_duration_ms | Gesamtzeit, die auf API-Antworten wartet, in Millisekunden |
cost.total_lines_added, cost.total_lines_removed | Geänderte Codezeilen |
context_window.total_input_tokens, context_window.total_output_tokens | Kumulative Token-Zählungen über die Sitzung |
context_window.context_window_size | Maximale Kontextfenstergröße in Token. Standardmäßig 200.000 oder 1.000.000 für Modelle mit erweitertem Kontext. |
context_window.used_percentage | Vorberechneter Prozentsatz der Kontextfensternutzung |
context_window.remaining_percentage | Vorberechneter Prozentsatz des verbleibenden Kontextfensters |
context_window.current_usage | Token-Zählungen aus dem letzten API-Aufruf, beschrieben in Kontextfenster-Felder |
exceeds_200k_tokens | Ob die Gesamttoken-Zählung (Eingabe-, Cache- und Ausgabe-Token kombiniert) aus der letzten API-Antwort 200k überschreitet. Dies ist ein fester Schwellenwert unabhängig von der tatsächlichen Kontextfenstergröße. |
session_id | Eindeutige Sitzungskennung |
transcript_path | Pfad zur Gesprächstranskriptdatei |
version | Claude Code-Version |
output_style.name | Name des aktuellen Ausgabestils |
vim.mode | Aktueller Vim-Modus (NORMAL oder INSERT), wenn Vim-Modus aktiviert ist |
agent.name | Agent-Name bei Ausführung mit dem --agent Flag oder konfigurierter Agent-Einstellung |
worktree.name | Name des aktiven Worktree. Nur während --worktree Sitzungen vorhanden |
worktree.path | Absoluter Pfad zum Worktree-Verzeichnis |
worktree.branch | Git-Branch-Name für den Worktree (z. B. "worktree-my-feature"). Fehlt bei Hook-basierten Worktrees |
worktree.original_cwd | Das Verzeichnis, in dem Claude sich befand, bevor es den Worktree betrat |
worktree.original_branch | Git-Branch, der vor dem Betreten des Worktree ausgecheckt wurde. Fehlt bei Hook-basierten Worktrees |
Vollständiges JSON-Schema
Vollständiges JSON-Schema
Ihr Statuszeilen-Befehl empfängt diese JSON-Struktur über stdin:Felder, die möglicherweise fehlen (nicht in JSON vorhanden):
vim: erscheint nur, wenn Vim-Modus aktiviert istagent: erscheint nur bei Ausführung mit dem--agentFlag oder konfigurierter Agent-Einstellungworktree: erscheint nur während--worktreeSitzungen. Wenn vorhanden, könnenbranchundoriginal_branchauch bei Hook-basierten Worktrees fehlen
null sein können:context_window.current_usage:nullvor dem ersten API-Aufruf in einer Sitzungcontext_window.used_percentage,context_window.remaining_percentage: können früh in der Sitzungnullsein
Kontextfenster-Felder
Dascontext_window Objekt bietet zwei Möglichkeiten, die Kontextnutzung zu verfolgen:
- Kumulative Summen (
total_input_tokens,total_output_tokens): Summe aller Token über die gesamte Sitzung, nützlich zur Verfolgung des Gesamtverbrauchs - Aktuelle Nutzung (
current_usage): Token-Zählungen aus dem letzten API-Aufruf, verwenden Sie dies für einen genauen Kontextprozentsatz, da er den tatsächlichen Kontextzustand widerspiegelt
current_usage Objekt enthält:
input_tokens: Eingabe-Token im aktuellen Kontextoutput_tokens: generierte Ausgabe-Tokencache_creation_input_tokens: Token, die in den Cache geschrieben wurdencache_read_input_tokens: Token, die aus dem Cache gelesen wurden
used_percentage Feld wird nur aus Eingabe-Token berechnet: input_tokens + cache_creation_input_tokens + cache_read_input_tokens. Es enthält keine output_tokens.
Wenn Sie den Kontextprozentsatz manuell aus current_usage berechnen, verwenden Sie die gleiche Eingabe-only-Formel, um used_percentage zu entsprechen.
Das current_usage Objekt ist null vor dem ersten API-Aufruf in einer Sitzung.
Beispiele
Diese Beispiele zeigen häufige Statuszeilen-Muster. Um ein Beispiel zu verwenden:- Speichern Sie das Skript in einer Datei wie
~/.claude/statusline.sh(oder.py/.js) - Machen Sie es ausführbar:
chmod +x ~/.claude/statusline.sh - Fügen Sie den Pfad zu Ihren Einstellungen hinzu
jq zum Analysieren von JSON. Python und Node.js haben integriertes JSON-Parsing.
Kontextfensternutzung
Zeigen Sie das aktuelle Modell und die Kontextfensternutzung mit einem visuellen Fortschrittsbalken an. Jedes Skript liest JSON von stdin, extrahiert dasused_percentage Feld und erstellt einen 10-Zeichen-Balken, wobei gefüllte Blöcke (▓) die Nutzung darstellen:

Git-Status mit Farben
Zeigen Sie Git-Branch mit farbcodierten Indikatoren für bereitgestellte und geänderte Dateien an. Dieses Skript verwendet ANSI-Escape-Codes für Terminalfarben:\033[32m ist Grün, \033[33m ist Gelb und \033[0m setzt auf Standard zurück.

Kosten- und Dauer-Verfolgung
Verfolgen Sie die API-Kosten und verstrichene Zeit Ihrer Sitzung. Dascost.total_cost_usd Feld sammelt die Kosten aller API-Aufrufe in der aktuellen Sitzung. Das cost.total_duration_ms Feld misst die Gesamtverstrichene Zeit seit Sitzungsbeginn, während cost.total_api_duration_ms nur die Zeit verfolgt, die auf API-Antworten wartet.
Jedes Skript formatiert Kosten als Währung und konvertiert Millisekunden in Minuten und Sekunden:

Mehrere Zeilen anzeigen
Ihr Skript kann mehrere Zeilen ausgeben, um eine reichhaltigere Anzeige zu erstellen. Jedeecho Anweisung erzeugt eine separate Zeile im Statusbereich.

print oder echo Anweisung erstellt eine separate Zeile:
Anklickbare Links
Dieses Beispiel erstellt einen anklickbaren Link zu Ihrem GitHub-Repository. Es liest die Git-Remote-URL, konvertiert das SSH-Format mitsed in HTTPS und umhüllt den Repository-Namen mit OSC 8 Escape-Codes. Halten Sie Cmd (macOS) oder Strg (Windows/Linux) gedrückt und klicken Sie, um den Link in Ihrem Browser zu öffnen.

printf '%b', das Backslash-Escapes zuverlässiger interpretiert als echo -e über verschiedene Shells hinweg:
Teure Operationen zwischenspeichern
Ihr Statuszeilen-Skript wird während aktiver Sitzungen häufig ausgeführt. Befehle wiegit status oder git diff können langsam sein, besonders in großen Repositories. Dieses Beispiel speichert Git-Informationen in einer temporären Datei und aktualisiert sie nur alle 5 Sekunden.
Verwenden Sie einen stabilen, festen Dateinamen für die Cache-Datei wie /tmp/statusline-git-cache. Jede Statuszeilen-Invokation wird als neuer Prozess ausgeführt, daher erzeugen prozessbasierte Identifikatoren wie $$, os.getpid() oder process.pid jedes Mal einen anderen Wert und der Cache wird nie wiederverwendet.
Jedes Skript prüft, ob die Cache-Datei fehlt oder älter als 5 Sekunden ist, bevor Git-Befehle ausgeführt werden:
Windows-Konfiguration
Unter Windows führt Claude Code Statuszeilen-Befehle über Git Bash aus. Sie können PowerShell von dieser Shell aus aufrufen:Tipps
- Mit Mock-Eingabe testen:
echo '{"model":{"display_name":"Opus"},"context_window":{"used_percentage":25}}' | ./statusline.sh - Ausgabe kurz halten: Die Statusleiste hat begrenzte Breite, daher kann lange Ausgabe abgeschnitten oder unangenehm umgebrochen werden
- Langsame Operationen zwischenspeichern: Ihr Skript wird während aktiver Sitzungen häufig ausgeführt, daher können Befehle wie
git statuszu Verzögerungen führen. Siehe das Caching-Beispiel für die Handhabung.
Fehlerbehebung
Statuszeile wird nicht angezeigt- Überprüfen Sie, dass Ihr Skript ausführbar ist:
chmod +x ~/.claude/statusline.sh - Überprüfen Sie, dass Ihr Skript auf stdout ausgibt, nicht auf stderr
- Führen Sie Ihr Skript manuell aus, um zu überprüfen, dass es Ausgabe erzeugt
- Wenn
disableAllHooksin Ihren Einstellungen auftruegesetzt ist, ist die Statuszeile auch deaktiviert. Entfernen Sie diese Einstellung oder setzen Sie sie auffalse, um sie erneut zu aktivieren. - Führen Sie
claude --debugaus, um den Exit-Code und stderr aus der ersten Statuszeilen-Invokation in einer Sitzung zu protokollieren - Bitten Sie Claude, Ihre Einstellungsdatei zu lesen und den
statusLineBefehl direkt auszuführen, um Fehler zu finden
-- oder leere Werte
- Felder können
nullsein, bevor die erste API-Antwort abgeschlossen ist - Behandeln Sie Null-Werte in Ihrem Skript mit Fallbacks wie
// 0in jq - Starten Sie Claude Code neu, wenn Werte nach mehreren Nachrichten leer bleiben
- Verwenden Sie
used_percentagefür genauen Kontextzustand anstelle von kumulativen Summen - Die
total_input_tokensundtotal_output_tokenssind kumulativ über die Sitzung und können die Kontextfenstergröße überschreiten - Der Kontextprozentsatz kann sich von der
/contextAusgabe unterscheiden, je nachdem, wann jeder berechnet wird
- Überprüfen Sie, dass Ihr Terminal OSC 8-Hyperlinks unterstützt (iTerm2, Kitty, WezTerm)
- Terminal.app unterstützt keine anklickbaren Links
- SSH- und tmux-Sitzungen können OSC-Sequenzen je nach Konfiguration entfernen
- Wenn Escape-Sequenzen als Literaltext wie
\e]8;;angezeigt werden, verwenden Sieprintf '%b'anstelle vonecho -efür zuverlässigere Escape-Behandlung
- Komplexe Escape-Sequenzen (ANSI-Farben, OSC 8-Links) können gelegentlich zu beschädigter Ausgabe führen, wenn sie mit anderen UI-Aktualisierungen überlappen
- Wenn Sie beschädigten Text sehen, versuchen Sie, Ihr Skript auf einfache Textausgabe zu vereinfachen
- Mehrzeilige Statuszeilen mit Escape-Codes sind anfälliger für Rendering-Probleme als einzeilige einfache Texte
- Skripte, die mit Nicht-Null-Codes beendet werden oder keine Ausgabe erzeugen, führen dazu, dass die Statuszeile leer wird
- Langsame Skripte blockieren die Statuszeilen-Aktualisierung, bis sie abgeschlossen sind. Halten Sie Skripte schnell, um veraltete Ausgabe zu vermeiden.
- Wenn eine neue Aktualisierung ausgelöst wird, während ein langsames Skript läuft, wird das laufende Skript abgebrochen
- Testen Sie Ihr Skript unabhängig mit Mock-Eingabe, bevor Sie es konfigurieren
- Systembenachrichtigungen wie MCP-Serverfehler, automatische Updates und Token-Warnungen werden auf der rechten Seite derselben Zeile wie Ihre Statuszeile angezeigt
- Das Aktivieren des ausführlichen Modus fügt einen Token-Zähler zu diesem Bereich hinzu
- Auf schmalen Terminals können diese Benachrichtigungen Ihre Statuszeilen-Ausgabe abschneiden