ai:platformy:claude-code:statusline

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
ai:platformy:claude-code:statusline [11.04.2026 12:22] – Věrná migrace z software:vyvoj:claude-code:statusline do ai:platformy:claude-code:statusline; upraven pouze interní odkaz na nový namespace. Petr Nosekai:platformy:claude-code:statusline [08.05.2026 21:45] (aktuální) – Zjednodušení: ctx% čteno přímo z used_percentage. Doplněny poznatky z oficiální dokumentace (total_input_tokens zahrnuje cache, used_percentage existuje). Petr Nosek
Řádek 1: Řádek 1:
 ====== Status line pro Claude Code ====== ====== Status line pro Claude Code ======
  
-[[ai:platformy:claude-code:start|Claude Code]] umí vykreslovat vlastní status line spuštěný jako externí příkaz. Tohle je moje varianta, která drží stabilní pořadí polí a na jeden pohled ukazuje pracovní adresář, model, session ID, využití kontextu, 5h a 7d limity i informaci, jestli session nepřelezla hranici 200k tokenů.+//Vytvořeno: **** | Aktualizováno: **~~LASTMOD~~**// 
 + 
 +[[ai:platformy:claude-code:start|Claude Code]] umí vykreslovat vlastní status line spuštěný jako externí příkaz. Tohle je moje varianta, která drží stabilní pořadí polí a na jeden pohled ukazuje pracovní adresář, model, session ID, využití kontextu, 5h a 7d limity i absolutní spotřebu tokenů context window se zvýrazněním nad hranicí 200k.
  
 ===== Co z toho získám ===== ===== Co z toho získám =====
  
-  * Aktuální pracovní adresář zkrácený relativně k ''$HOME'', takže místo celé cesty vidím jen ''~'' nebo ''~/...''.+  * Aktuální pracovní adresář projektu (root, kde byl Claude Code spuštěn) zkrácený relativně k ''$HOME'', takže místo celé cesty vidím jen ''~'' nebo ''~/...''. Adresář se v průběhu session nemění, i když shell přejde do podadresáře.
   * Použitý model a session ID přímo ve status line.   * Použitý model a session ID přímo ve status line.
-  * Využití context window v procentech.+  * Využití context window v procentech, čtené přímo z předpočítaného pole ''used_percentage''.
   * 5hodinový a 7denní limit, včetně času resetu, pokud je Claude Code pošle v JSONu.   * 5hodinový a 7denní limit, včetně času resetu, pokud je Claude Code pošle v JSONu.
-  * Rychlý signáljestli session už překročila hranici 200k tokenů.+  * Absolutní spotřebu tokenů context window ve formátu ''XYZk/TOTALk''. Hodnota celkového okna se čte dynamickytakže funguje i pro 1M context window. Červeně se rozsvítí při překročení 200k tokenů.
   * Barevné zvýraznění podle vytížení: zelená pod 70 %, žlutá od 70 %, červená od 90 %.   * Barevné zvýraznění podle vytížení: zelená pod 70 %, žlutá od 70 %, červená od 90 %.
  
Řádek 30: Řádek 32:
  
 <code> <code>
-~/scratch │ Sonnet 4.6 | sid:<id> │ ctx:23% │ <200k+~/scratch │ Sonnet 4.6 | sid:<id> │ ctx:23% │ 92k/400k
 </code> </code>
  
Řádek 36: Řádek 38:
  
 <code> <code>
-~/project-dokuwiki │ Sonnet 4.6 | sid:<id> │ ctx:23% │ 5h:41% ↺ 01:15 │ 7d:68% ↺ Ne 10:00 │ <200k+~/project-procesniaudit-website │ Sonnet 4.6 │ ctx:55% │ 5h:4% ↺ 00:50 │ 7d:45% ↺ Po 08:00 │ 220k/400k
 </code> </code>
  
Řádek 45: Řádek 47:
   * sid → dim   * sid → dim
   * ''ctx'', ''5h'' a ''7d'' → zelená pod 70 %, žlutá od 70 %, červená od 90 %   * ''ctx'', ''5h'' a ''7d'' → zelená pod 70 %, žlutá od 70 %, červená od 90 %
-  * ''>200k'' → červeně a tučně +  * token counter ''XYZk/TOTALk'' → červeně a tučně při překročení 200k, jinak dim
-  * ''<200k'' → dim+
  
 ===== Celý skript ===== ===== Celý skript =====
Řádek 69: Řádek 70:
  
 # ── 1) cwd ───────────────────────────────────────────────────────────────────── # ── 1) cwd ─────────────────────────────────────────────────────────────────────
-cwd=$(echo "$input" | jq -r '.workspace.current_dir // .cwd // ""')+cwd=$(echo "$input" | jq -r '.workspace.project_dir // .workspace.current_dir // .cwd // ""')
 # Show path relative to home dir # Show path relative to home dir
 home_dir="$HOME" home_dir="$HOME"
Řádek 124: Řádek 125:
 } }
  
-# ── exceeds_200k ─────────────────────────────────────────────────────────────── 
-exceeds=$(echo "$input" | jq -r '.exceeds_200k_tokens // false') 
  
 # ── 3) context used ──────────────────────────────────────────────────────────── # ── 3) context used ────────────────────────────────────────────────────────────
-ctx_used_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty')+ctx_used_tokens=$(echo "$input" | jq -r '.context_window.total_input_tokens // empty'
 +ctx_window_size=$(echo "$input" | jq -r '.context_window.context_window_size // empty'
 +ctx_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty')
 ctx_str="" ctx_str=""
-if [ -n "$ctx_used_pct" ]; then +if [ -n "$ctx_pct" ]; then 
-  ctx_int=$(printf "%.0f" "$ctx_used_pct")+  ctx_int=$(printf "%.0f" "$ctx_pct")
   if   [ "$ctx_int" -ge 90 ]; then   if   [ "$ctx_int" -ge 90 ]; then
     ctx_str="$(printf "${RED}${BOLD}ctx:%s%%!${RESET}" "$ctx_int")"     ctx_str="$(printf "${RED}${BOLD}ctx:%s%%!${RESET}" "$ctx_int")"
Řádek 171: Řádek 172:
 fi fi
  
-# 6) exceeds_200k signal +# 6) token counter — červeně od 200k 
-if [ "$exceeds"true" ]; then +if [ -n "$ctx_used_tokens] && [ -n "$ctx_window_size] && [ "$ctx_window_size" -gt 0 ]; then 
-  parts+=("$(printf "${RED}${BOLD}>200k${RESET}")"+  ctx_used_k=$(python3 -c "print(round($ctx_used_tokens / 1000))"
-else +  ctx_total_k=$(python3 -c "print(round($ctx_window_size / 1000))"
-  parts+=("$(printf "${DIM}<200k${RESET}")")+  if [ "$ctx_used_tokens" -gt 200000 ]; then 
 +    parts+=("$(printf "${RED}${BOLD}%sk/%sk${RESET}" "$ctx_used_k" "$ctx_total_k")"
 +  else 
 +    parts+=("$(printf "${DIM}%sk/%sk${RESET}" "$ctx_used_k" "$ctx_total_k")") 
 +  fi
 fi fi
  
Řádek 193: Řádek 198:
   * Pole ''5h'' a ''7d'' se zobrazí jen když Claude Code skutečně pošle ''rate_limits''.   * Pole ''5h'' a ''7d'' se zobrazí jen když Claude Code skutečně pošle ''rate_limits''.
   * Funkce ''fmt_reset_short()'' a ''fmt_reset_long()'' zvládnou jak unix epoch, tak ISO-8601 string.   * Funkce ''fmt_reset_short()'' a ''fmt_reset_long()'' zvládnou jak unix epoch, tak ISO-8601 string.
 +  * Pro cwd se primárně čte ''.workspace.project_dir'' — pole, které Claude Code nastavuje na root projektu (kde byl spuštěn) a nemění se v průběhu session, i když shell přejde do podadresáře. Pole ''.workspace.current_dir'' a ''.cwd'' jsou jen fallback.
 +  * Procento využití context window se čte přímo z ''context_window.used_percentage'' — předpočítané pole, které Claude Code posílá od verze 2.1.132. Pokrývá vstupní tokeny včetně cache: ''used_percentage'' = (''input_tokens'' + ''cache_creation_input_tokens'' + ''cache_read_input_tokens'') / ''context_window_size''. Výstupní tokeny do procenta nezahrnuje, ale ani do ''XYZk'' v token counteru (tam se čte ''total_input_tokens'', které je součtem stejných tří složek).
 +  * ''total_input_tokens'' zahrnuje všechny vstupní tokeny včetně cache a od v2.1.132 reprezentuje aktuální stav context window, nikoli kumulativní součet přes celou session.
 +  * Skript záměrně nepoužívá příznak ''exceeds_200k_tokens'' — ten vychází z tokenů aktuálního API volání (input + output + cache) a má pevnou hranici 200k bez ohledu na skutečnou velikost okna. Místo toho skript ukazuje aktuální stav v segmentu ''XYZk/TOTALk''.
   * Když některé pole v JSONu chybí, skript se nerozbije a prostě ho přeskočí.   * Když některé pole v JSONu chybí, skript se nerozbije a prostě ho přeskočí.
-  * Pořadí polí je pevné: ''cwd'' → ''model + sid'' → ''ctx'' → ''5h'' → ''7d'' → ''>200k/<200k''.+  * Pořadí polí je pevné: ''cwd'' → ''model + sid'' → ''ctx'' → ''5h'' → ''7d'' → ''XYZk/TOTALk''. 
 + 
 +===== Zdroje ===== 
 + 
 +  * [[https://code.claude.com/docs/en/statusline|Claude Code – Customize your status line (oficiální dokumentace)]]
  • ai/platformy/claude-code/statusline.1775902923.txt.gz
  • Poslední úprava: 11.04.2026 12:22
  • autor: Petr Nosek