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 [04.08.2026 14:30] – Aktualizace subagent status line po změně dat Claude Code Petr Nosekai:platformy:claude-code:statusline [09.08.2026 23:18] (aktuální) – Aktualizace subagent status line pro aktuální chování label Petr Nosek
Řádek 8: Řádek 8:
  
   * Hlavní status line ukazuje pracovní adresář, model, session ID, využití context window, 5h a 7d limity a absolutní spotřebu tokenů.   * Hlavní status line ukazuje pracovní adresář, model, session ID, využití context window, 5h a 7d limity a absolutní spotřebu tokenů.
-  * Subagent status line ukazuje každého subagenta jako vlastní řádek: agent, model, krátký popis, stav, zaplnění jeho context window, tokeny, trend tokenů, rychlost tokenů za sekundu, běh od startu a případně pracovní adresář.+  * Subagent status line ukazuje každého subagenta jako vlastní řádek: agent, model, krátký popis dispatche, živou činnost, stav, zaplnění jeho context window, tokeny, trend tokenů, rychlost tokenů za sekundu, běh od startu a případně pracovní adresář.
   * Model subagenta se bere z pole ''model'', které Claude Code předává do ''subagentStatusLine''. Název ''subagent_type'' v datech samostatně není; pro přehled se proto zapisuje do ''description''.   * Model subagenta se bere z pole ''model'', které Claude Code předává do ''subagentStatusLine''. Název ''subagent_type'' v datech samostatně není; pro přehled se proto zapisuje do ''description''.
   * Popisky subagentů jsou čitelné i při paralelním běhu více agentů.   * Popisky subagentů jsou čitelné i při paralelním běhu více agentů.
Řádek 216: Řádek 216:
  
 <code> <code>
-elite-prompt-architect │ haiku │ rešerše pricing │ running │ ctx:2% │ tok:8.1k ▁▄█ 579/s │ 14s+elite-prompt-architect │ haiku │ rešerše pricing │ Reading subagent-statusline.sh │ running │ ctx:2% │ tok:8.1k ▁▄█ 579/s │ 14s
 </code> </code>
  
-==== Pravidlo do globálního ''CLAUDE.md'' ====+==== Pravidlo ve skillu ''calling-subagents'' ====
  
-Aby byl panel čitelný i dalších session, je potřeba dát do globálního ''CLAUDE.md'' pravidlo pro pojmenování dispatchů v Claude Code. ''description'' přenáší identitu subagenta, protože ''subagent_type'' není samostatnou součástí dat pro panel. Model se do ''description'' nepíše: Claude Code předává autoritativní hodnotu v poli ''model''.+Pro pojmenování dispatchů Claude Code je tato konvence uložená ve skillu ''calling-subagents''. ''description'' přenáší identitu subagenta, protože ''subagent_type'' není samostatnou součástí dat pro panel. Model se do ''description'' nepíše: Claude Code předává autoritativní hodnotu v poli ''model''.
  
 <code markdown> <code markdown>
Řádek 242: Řádek 242:
  
 - Separator is a spaced middot ` · ` — the status line splits the label on it. - Separator is a spaced middot ` · ` — the status line splits the label on it.
 +- The panel's `label` field is **not** the dispatch label. Claude Code computes it as
 +  `progress.summary || description`, and for `local_agent` it fills `progress.summary`
 +  every 30 s with an LLM-generated activity line ("Reading runAgent.ts"). A status-line
 +  script must therefore read identity from `description` and treat `label` as live
 +  activity only — never the other way round.
 - **Never write the model into `description`.** Claude Code sends the real model in - **Never write the model into `description`.** Claude Code sends the real model in
   the task's `model` field and the status line renders it as a colored chip itself.   the task's `model` field and the status line renders it as a colored chip itself.
Řádek 266: Řádek 271:
 # Renders one custom row per active subagent in the agent panel. # Renders one custom row per active subagent in the agent panel.
 # Row: <type> │ <status> │ tok:<n> <sparkline> <rate> │ <elapsed> │ [cwd] │ <label|desc> # Row: <type> │ <status> │ tok:<n> <sparkline> <rate> │ <elapsed> │ [cwd] │ <label|desc>
-# Input (stdin): { cwd, columns, tasks:[ ... ] }+# Input (stdin): { cwd, columns, tasks:{id,name,type,status,description,label,startTime,tokenCount,tokenSamples,cwd}, ... ] }
 # Output (stdout): one JSON line per task -> {"id":"<id>","content":"<row w/ ANSI>"} # Output (stdout): one JSON line per task -> {"id":"<id>","content":"<row w/ ANSI>"}
  
Řádek 415: Řádek 420:
 echo "$input" | jq -c '.tasks[]?' | while read -r task; do echo "$input" | jq -c '.tasks[]?' | while read -r task; do
   id=$(echo "$task" | jq -r '.id // empty'); [ -z "$id" ] && continue   id=$(echo "$task" | jq -r '.id // empty'); [ -z "$id" ] && continue
-  # Primární štítek = label|description (subagent_type ve schématu NENÍ). +  # Identita agenta se čte VÝHRADNĚ z `description(konvence 
-  primary=$(echo "$task" | jq -r '(.label // ""as $l | (.description // ""as $d | (.name // ""as $n +  # "<subagent_type> · <popis>"); `subagent_typeve schématu není. 
-    if ($l|length)>0 then $l elif ($d|length)>then $d elif ($n|length)>0 then $n else "agent" end')+  # POZOR: `label` NENÍ štítek dispatche. Claude Code ho počítá jako 
 +  # `progress.summary || description` a pro `type == "local_agent"` do 
 +  # `progress.summary` průběžně (à 30 szapisuje LLM-generované shrnutí 
 +  # aktuální činnosti ("Reading runAgent.ts"). Jakmile se první shrnutí 
 +  # objeví, `label` přepíše description a jméno agenta by z něj zmizelo. 
 +  # Proto: description = identita, label = živá činnost. Nikdy naopak. 
 +  descr=$(echo "$task"   | jq -r '.description // ""') 
 +  label=$(echo "$task"   | jq -r '.label // ""') 
 +  name=$(echo "$task"    | jq -r '.name // ""') 
 +  primary="$descr"; [ -z "$primary" ] && primary="$name" 
 +  activity="" 
 +  if [ -n "$label" ] && [ "$label" != "$descr" ] && [ "$label" != "$name" ]; then 
 +    activity="$label" 
 +  fi 
 +  # Typy bez description (local_bash: label = příkaz→ label slouží jako štítek. 
 +  [ -z "$primary" ] && { primary="$activity"; activity="";
 +  [ -z "$primary" ] && primary="agent"
   # `type` je hrubá kategorie ("local_agent"); ukázat jen když nese info.   # `type` je hrubá kategorie ("local_agent"); ukázat jen když nese info.
   type=$(echo "$task"    | jq -r '.type // ""')   type=$(echo "$task"    | jq -r '.type // ""')
Řádek 506: Řádek 527:
   fi   fi
  
-  # ořez primárního štítku podle columns (heuristika: fixní část ~ 55 sloupců +  # ořez popisku a živé činnosti podle columns (heuristika: fixní část ~ 55 
-  # — status + ctx + tok/sparkline/rate + elapsed) +  # sloupců — status + ctx + tok/sparkline/rate + elapsed). Popis dispatche má 
-  if [ -n "$primary" ] && [ "$columns" -gt 0 ] 2>/dev/null; then+  # přednost (odlišuje paralelní agenty téhož typu), činnost bere zbytek. 
 +  if [ "$columns" -gt 0 ] 2>/dev/null; then
     budget=$(( columns - 55 )); [ "$budget" -lt 12 ] && budget=12     budget=$(( columns - 55 )); [ "$budget" -lt 12 ] && budget=12
-    if [ "${#primary}" -gt "$budget" ]; then primary="${primary:0:$((budget-1))}…"; fi+    if [ -n "$activity" ]; then 
 +      pbudget=$(( budget * 2 / 5 )); [ "$pbudget" -lt 10 ] && pbudget=10 
 +    else 
 +      pbudget="$budget" 
 +    fi 
 +    if [ -n "$primary" ] && [ "${#primary}" -gt "$pbudget" ]; then primary="${primary:0:$((pbudget-1))}…"; fi 
 +    if [ -n "$activity" ]; then 
 +      abudget=$(( budget - ${#primary} - 3 )); [ "$abudget" -lt 8 ] && abudget=8 
 +      if [ "${#activity}" -gt "$abudget" ]; then activity="${activity:0:$((abudget-1))}…"; fi 
 +    fi
   fi   fi
 +  actseg=""
 +  [ -n "$activity" ] && actseg=$(printf "%b%s%b" "$WHITE" "$activity" "$RESET")
  
   # type badge jen když není běžná lokální kategorie   # type badge jen když není běžná lokální kategorie
Řádek 529: Řádek 562:
     parts+=("$(printf "%b%b%s%b" "$MAGENTA" "$BOLD" "$primary" "$RESET")")     parts+=("$(printf "%b%b%s%b" "$MAGENTA" "$BOLD" "$primary" "$RESET")")
   fi   fi
 +  [ -n "$actseg" ] && parts+=("$actseg")
   [ -n "$status" ]  && parts+=("$(printf "%b%s%b" "$sc" "$status" "$RESET")")   [ -n "$status" ]  && parts+=("$(printf "%b%s%b" "$sc" "$status" "$RESET")")
   [ -n "$ctxseg" ]  && parts+=("$ctxseg")   [ -n "$ctxseg" ]  && parts+=("$ctxseg")
Řádek 551: Řádek 585:
   * Hlavní ''statusLine'' a ''subagentStatusLine'' jsou oddělené. Hlavní řádek zůstává pro top-level session, subagenti se zobrazují v agent panelu.   * Hlavní ''statusLine'' a ''subagentStatusLine'' jsou oddělené. Hlavní řádek zůstává pro top-level session, subagenti se zobrazují v agent panelu.
   * ''subagentStatusLine'' dostává skutečný model v poli ''model'', ale nedostává ''subagent_type''. Proto ''description'' používá dvoudílný tvar ''<subagent_type> · <short description>''.   * ''subagentStatusLine'' dostává skutečný model v poli ''model'', ale nedostává ''subagent_type''. Proto ''description'' používá dvoudílný tvar ''<subagent_type> · <short description>''.
 +  * V aktuálním Claude Code je ''label'' pro ''local_agent'' živá činnost, ne identita dispatche: odpovídá ''progress.summary || description''. ''AgentSummary'' přibližně každých 30 sekund zapisuje do ''progress.summary'' krátké LLM-generované shrnutí činnosti. Identita se proto vždy čte z ''description'', zatímco ''label'' se vypisuje jen jako samostatný sloupec s činností.
   * Starší tříčlenné popisky ''<subagent_type> · <model> · <description>'' zůstávají podporované. Prostřední modelový segment se ignoruje ve prospěch hodnoty z ''model''; nově se ale zapisuje dvoudílný tvar.   * Starší tříčlenné popisky ''<subagent_type> · <model> · <description>'' zůstávají podporované. Prostřední modelový segment se ignoruje ve prospěch hodnoty z ''model''; nově se ale zapisuje dvoudílný tvar.
   * ''contextWindowSize'' spolu s ''tokenCount'' určuje ''ctx'' — procento obsazení context window subagenta. Pod 70 % je zelené, od 70 % žluté a od 90 % červené. ''tokenCount'' je aktuální obsazení okna, ne kumulativní spotřeba.   * ''contextWindowSize'' spolu s ''tokenCount'' určuje ''ctx'' — procento obsazení context window subagenta. Pod 70 % je zelené, od 70 % žluté a od 90 % červené. ''tokenCount'' je aktuální obsazení okna, ne kumulativní spotřeba.
  • ai/platformy/claude-code/statusline.1785846624.txt.gz
  • Poslední úprava: 04.08.2026 14:30
  • autor: Petr Nosek