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

Obě strany předchozí revize Předchozí verze
ai:platformy:claude-code:statusline [08.05.2026 21:28] – Oprava skriptu statusline: project_dir místo current_dir, dynamický ctx %, segment XYZk/TOTALk místo exceeds_200k. 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 9: Řádek 9:
   * 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.   * 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, počítané dynamicky ze skutečně vrácených polí JSONu.+  * 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.
   * Absolutní spotřebu tokenů context window ve formátu ''XYZk/TOTALk''. Hodnota celkového okna se čte dynamicky, takže funguje i pro 1M context window. Červeně se rozsvítí při překročení 200k tokenů.   * Absolutní spotřebu tokenů context window ve formátu ''XYZk/TOTALk''. Hodnota celkového okna se čte dynamicky, takže funguje i pro 1M context window. Červeně se rozsvítí při překročení 200k tokenů.
Řádek 129: Řádek 129:
 ctx_used_tokens=$(echo "$input" | jq -r '.context_window.total_input_tokens // 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_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_tokens] && [ -n "$ctx_window_size" ] && [ "$ctx_window_size" -gt 0 ]; then +if [ -n "$ctx_pct" ]; then 
-  ctx_pct=$(python3 -c "print(round($ctx_used_tokens / $ctx_window_size * 100))") +  ctx_int=$(printf "%.0f" "$ctx_pct") 
-  if   [ "$ctx_pct" -ge 90 ]; then +  if   [ "$ctx_int" -ge 90 ]; then 
-    ctx_str="$(printf "${RED}${BOLD}ctx:%s%%!${RESET}" "$ctx_pct")" +    ctx_str="$(printf "${RED}${BOLD}ctx:%s%%!${RESET}" "$ctx_int")" 
-  elif [ "$ctx_pct" -ge 70 ]; then +  elif [ "$ctx_int" -ge 70 ]; then 
-    ctx_str="$(printf "${YELLOW}ctx:%s%%${RESET}" "$ctx_pct")"+    ctx_str="$(printf "${YELLOW}ctx:%s%%${RESET}" "$ctx_int")"
   else   else
-    ctx_str="$(printf "${GREEN}ctx:%s%%${RESET}" "$ctx_pct")"+    ctx_str="$(printf "${GREEN}ctx:%s%%${RESET}" "$ctx_int")"
   fi   fi
 fi fi
Řádek 198: Řádek 199:
   * 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.   * 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 počítá dynamicky z ''context_window.total_input_tokens'' ''context_window.context_window_size''Pole ''context_window.used_percentage''JSONu od Claude Code neexistujeproto ho skript nepoužívá+  * 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). 
-  * Skript záměrně nepoužívá příznak ''exceeds_200k_tokens'' — ten se počítá **kumulativní** spotřeby tokenů přes celou session (součet všech inputů přes všechny turny) a v dlouhé session zůstane natrvalo ''true''. Místo toho skript ukazuje aktuální stav context window v segmentu ''XYZk/TOTALk''.+  * ''total_input_tokens'' zahrnuje všechny vstupní tokeny včetně cache a od v2.1.132 reprezentuje aktuální stav context windownikoli 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'' → ''XYZk/TOTALk''.   * 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.txt
  • Poslední úprava: 08.05.2026 21:45
  • autor: Petr Nosek