feat(statusline): estados activo (deterministas) + reposo (haiku)
Separa el ciclo de trabajo en dos grupos con la fuente adecuada para cada uno: - ACTIVO (mientras se trabaja): lo marca el hook PostToolUse de forma determinista, sin LLM, segun la herramienta usada — Read/Grep/Glob -> investigando; Edit/Write -> haciendo; Bash con tests -> testeando; Bash de lectura (ls/cat/git status...) -> investigando; mcp fn_search/show/... -> investigando. Refleja en tiempo real lo que hace el asistente. - REPOSO (al parar y ceder el control): lo resuelve el Stop hook con ask_llm (haiku) -> hecho / pendiente_revision / bloqueado / en_pausa. Al parar nunca queda en un estado activo. Cambios: - goal_phase_active.sh: nuevo hook PostToolUse (mapa herramienta -> fase activa). - goal_phase_worker.sh: ahora solo produce estados de reposo; se elimina el modo prompt. Mantiene el gate (resuelve reposo solo si hubo trabajo o se venia de activo) y el historial. - goal_tracker.sh: deja de lanzar clasificacion LLM en el prompt (redundante); vuelve a fijar objetivo desde el prompt + informar estado. - statusline.sh: nuevo estado en_pausa (en pausa); set de fases reordenado. - settings.json: registra el hook PostToolUse. Resultado: 1 sola llamada haiku por turno (Stop); el estado activo es gratis y refleja las acciones reales en vez de la intencion del prompt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,15 +43,13 @@ if [ -n "$GOAL_LINE" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 2) Informativo + clasificacion inmediata desde el prompt.
|
||||
# 2) Informativo: estado actual para el modelo.
|
||||
# La fase la mantienen los hooks automaticamente: PostToolUse marca el estado
|
||||
# ACTIVO segun las herramientas usadas; el Stop hook resuelve el REPOSO con haiku.
|
||||
if [ -f "$F" ]; then
|
||||
G=$(jq -r '.goal // ""' "$F" 2>/dev/null)
|
||||
P=$(jq -r '.phase // ""' "$F" 2>/dev/null)
|
||||
# Clasifica la fase ya, desde la intencion del prompt (modo prompt, background).
|
||||
# El Stop hook la reevaluara despues con el resultado de la respuesta.
|
||||
TRANSCRIPT=$(printf '%s' "$INPUT" | jq -r '.transcript_path // ""' 2>/dev/null)
|
||||
nohup bash "$HOME/.claude/hooks/goal_phase_worker.sh" "$SID" "$TRANSCRIPT" "$F" prompt "$PROMPT" >/dev/null 2>&1 &
|
||||
echo "GOAL-TRACKER: file=$F | goal=\"$G\" phase=\"$P\". La fase la mantienen los hooks automaticamente (tu prompt + mi respuesta) — NO escribas la fase. El usuario fija el objetivo escribiendo \"objetivo: <texto>\"; si redefine la tarea en lenguaje natural, actualiza \"goal\" en ese JSON."
|
||||
echo "GOAL-TRACKER: file=$F | goal=\"$G\" phase=\"$P\". La fase la mantienen los hooks automaticamente (PostToolUse = activo, Stop = reposo) — NO escribas la fase. El usuario fija el objetivo escribiendo \"objetivo: <texto>\"; si redefine la tarea en lenguaje natural, actualiza \"goal\" en ese JSON."
|
||||
else
|
||||
echo "GOAL-TRACKER: file=$F (sin objetivo aun). El usuario fija el objetivo de la terminal escribiendo \"objetivo: <texto>\" (lo captura este hook directo de su prompt). Si describe una tarea clara sin ese prefijo, crea {\"goal\":\"<su objetivo>\",\"phase\":\"planificando\"} leyendo su prompt. Sin objetivo, ignora."
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user