El loop que aprende|INEMA.CLUB-PRO

Clase 7 · 18 min

Observabilidad: trazas y costo por ciclo

Un loop que corre solo necesita dejar una traza: cuánto tardó cada ciclo, cuántos tokens gastó, qué decidió y por qué. Sin eso, un bucle de errores o un ciclo que revienta la cuota solo aparece en la factura de fin de mes. En esta clase grabas una línea por ciclo y sacas de ella el costo por ciclo, el costo por keep y las alertas.

Empezar la clase
Panel con varios medidores analógicos y un registrador de papel continuo dibujando líneas, una aguja con punta amarilla.

En esta clase vas a

  1. 1Una línea JSON por ciclo: lo mínimo que vale la pena guardar
  2. 2Costo por ciclo y costo por keep
  3. 3Alertas: tope, ciclos sin keep, errores iguales seguidos
  4. 4Tokens reales de una llamada de Claude Code

Objetivo: grabar una traza por ciclo (tiempo, tokens, veredicto) y sacar de ella el costo por ciclo, el costo por keep y las alertas del meta-agente.

01Del ciclo a la alerta

El mismo papel del Meta-agente de LOOP-R: observa el sistema, no el problema, y solo reporta. Haz clic en cada bloque.

Una traza sin tokens igual sirve: tiempo, estado y motivo ya muestran el bucle de error y el estancamiento.

La alerta no detiene el loop: lo detiene el tope del curso 2 (loop-longrun.sh) o la persona. Aquí, la lectura de la traza.

02Ensayo: seis ciclos, dos problemas

Agentes falsos con tokens inventados: un ciclo caro y tres fallas iguales (como un agente sin respuesta por el límite de la sesión).

Terminal · ensayo sin costo
K=~/projetos/loop-r-eng-aprende-v72/kit
E=${TMPDIR:-/tmp}/ensaio-aprende/a7; rm -rf $E; mkdir -p $E
bash $K/novo-sistema.sh $E/sis > /dev/null; export RASTRO=$E/rastros.jsonl
c() { TOKENS_FALSOS="$2" AGENTE="bash $K/agente-falso.sh $1" bash $K/experimento.sh $E/sis "$1" > /dev/null; }
c comenta "8000 500"; c sinonimos "9000 700"; c estraga "41000 3000"   # tokens inventados para el ensayo
c falha "0 0"; c falha "0 0"; c falha "0 0"
echo "## uma linha do rastro"; sed -n 2p $RASTRO
echo "## custo por ciclo"; python3 $K/custo-ciclo.py $RASTRO --teto 50000; echo "saída: $?"
Ejemplo del repositorio
## uma linha do rastro
{"ciclo": 2, "descricao": "sinonimos", "segundos": 0, "tokens_entrada": 9000, "tokens_saida": 700, "status": "keep", "motivo": "melhorou"}
## custo por ciclo
ciclo  status   segundos  tokens(ent+saída)  motivo
    1  discard         0               8500  não melhorou
    2  keep            0               9700  melhorou
    3  discard         0              44000  não melhorou
    4  erro            0                  0  agente falhou (saída 1): ERRO: sem resposta do m
    5  erro            0                  0  agente falhou (saída 1): ERRO: sem resposta do m
    6  erro            0                  0  agente falhou (saída 1): ERRO: sem resposta do m
total: 6 ciclos · 1 keep · 62200 tokens
custo por keep: 62200 tokens
ALERTA: ciclo 3 usou 88% do teto de 50000 tokens
ALERTA: 3 erros seguidos iguais: agente falhou (saída 1): ERRO: sem resposta do modelo (limit
saída: 1

Los tokens de este ensayo son inventados (variable TOKENS_FALSOS); tiempo, estado y alertas son del script de verdad. El bucle de error es el caso que más cuesta sin aparecer: en el curso 1, el juez real se detuvo en el límite de la sesión a partir de la 16.ª llamada.

03Los tokens de una llamada real

El agente-claude.sh le pide a claude -p --output-format json y escribe en la traza la suma de entrada (con caché) y la salida. Una llamada por la suscripción.

Terminal · real, una llamada
K=~/projetos/loop-r-eng-aprende-v72/kit
E=${TMPDIR:-/tmp}/ensaio-aprende/a7      # el ensayo anterior
RASTRO=$E/rastros.jsonl AGENTE="bash $K/agente-claude.sh" bash $K/experimento.sh $E/sis "claude"; echo "saída: $?"
tail -1 $E/rastros.jsonl | python3 -c 'import json,sys; d=json.load(sys.stdin); print("tokens:", "sim" if (d["tokens_entrada"] or 0) > 0 else "não", "·", d["status"])'
Ejemplo del repositorio
ciclo 7 · keep · 0.800 → 1.000 · melhorou
saída: 0
tokens: sim · keep

La línea grabada en la traza en esa ronda: 10 segundos, 247.492 tokens de entrada (sumando lectura y escritura de caché) y 364 de salida. El pedido pesa menos de 2 KB: casi toda la entrada es el contexto que la sesión de Claude Code carga en esta máquina. Una medición, Claude Code 2.1.303; la tuya cambia según tus instrucciones, plugins y MCPs.

04Lo que ya se mide en INEMA

Dos casos locales, con la fecha de cada número.

1. Ejemplo LOOP-R

Cada ciclo de vendas-whatsapp tiene un custo.md por agente. Los cuatro ciclos suman cerca de 1,7 millones de tokens para una promoción (README del ejemplo).

Datos de ventas sintéticos, agentes de verdad: el costo es real, el efecto fue diseñado.

05Práctica

Ensayo, real y tu loop.

E19 · Las dos alertas

10 min

Corre el ensayo.

Listo cuando: ALERTA: ciclo 3 usou 88% do teto, ALERTA: 3 erros seguidos iguais y saída: 1.

E20 · Tokens de verdad

5 min

Corre el bloque real justo después del ensayo.

Listo cuando: la última línea impresa empieza con tokens: sim; si aparece tokens: não · erro, el agente se quedó sin respuesta (límite de la sesión): espera y vuelve a correr.

E21 · Traza en tu loop

20 min

Conecta RASTRO a tu experimento (o graba la misma línea JSON al final de cada ciclo de tu loop) y define el tope de tokens por ciclo a partir de la medición real del E20.

Listo cuando: python3 $K/custo-ciclo.py [tu traza] --teto [tu tope] lista un ciclo por línea y termina en sem alerta o en un ALERTA: que sabes explicar.

06Prueba de la clase

Pregunta 1 de 4

Seis ciclos, un keep, 62.200 tokens en total. ¿Cuál es el costo por keep?competencia

07En tres frases

Una líneaCada ciclo registra tiempo, tokens, estado y motivo; nada de texto de prompt.
Costo por keepTotal de tokens sobre las mejoras que se quedaron; incluye los intentos que no se quedaron.
AlertasTope, ciclos sin keep y errores iguales seguidos; la alerta avisa, el tope y la persona frenan.

Para ir más allá

Clase anteriorSiguiente clase