feat(statusline): historial de estados + clasificacion al escribir el usuario
- statusline.sh: muestra los ultimos 7 estados previos como emojis atenuados (DIM) separados por │, entre el objetivo y la fase actual. El historial se guarda en el goal JSON (campo .history), colapsando estados consecutivos repetidos, hasta 12 entradas. - goal_phase_worker.sh: dos modos. 'stop' (tras la respuesta del asistente, con filtro de trabajo real) y 'prompt' (tras el prompt del usuario, clasifica la intencion para feedback inmediato). Nuevo veredicto 'sin_cambio' para preguntas/charla que no implican cambio de actividad; ante la duda, no toca. Ambos modos mantienen el historial. - goal_tracker.sh: en cada prompt con objetivo activo lanza el worker en modo prompt (background) ademas del Stop hook. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,11 +43,15 @@ if [ -n "$GOAL_LINE" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 2) Informativo: estado actual para el modelo.
|
||||
# 2) Informativo + clasificacion inmediata desde el prompt.
|
||||
if [ -f "$F" ]; then
|
||||
G=$(jq -r '.goal // ""' "$F" 2>/dev/null)
|
||||
P=$(jq -r '.phase // ""' "$F" 2>/dev/null)
|
||||
echo "GOAL-TRACKER: file=$F | goal=\"$G\" phase=\"$P\". La fase la mantiene el Stop hook automaticamente — NO escribas la fase. El usuario fija el objetivo escribiendo \"objetivo: <texto>\". Si redefine la tarea en lenguaje natural sin ese prefijo, actualiza \"goal\" en ese JSON leyendo su prompt."
|
||||
# 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."
|
||||
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