E19 · Las dos alertas
10 minCorre el ensayo.
Listo cuando: ALERTA: ciclo 3 usou 88% do teto, ALERTA: 3 erros seguidos iguais y saída: 1.
Clase 7 · 18 min
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
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.
El mismo papel del Meta-agente de LOOP-R: observa el sistema, no el problema, y solo reporta. Haz clic en cada bloque.
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.
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).
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: $?"## 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: 1Los 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.
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.
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"])'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.
Estimar el costo del loop por el tamaño del pedido. La cuenta que vale es la de la traza, por ciclo, con todo el contexto que carga la herramienta. Caché y costo de reanudación son del curso 2, lección 4.
Dos casos locales, con la fecha de cada número.
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.
Los hooks de Claude Code graban eventos en un SQLite local (sesión, herramienta, error, subagente) y un panel muestra lo que está corriendo. Medido: 3 a 5 mil llamadas de herramienta por día, cerca de 10 mil eventos y 2 MB por día.
Regla de oro del proyecto: guarda nombres y números, nunca el texto de prompt, respuesta o comando.
Hay convenciones de OpenTelemetry para agentes (spans de agente, de llamada al modelo y de herramienta, con tokens), descritas como experimentales en fuentes secundarias.
Antes de adoptarlo, revisa el estado en la documentación de OpenTelemetry. Una línea JSON por ciclo ya cubre lo que pide esta lección.
Ensayo, real y tu loop.
Corre el ensayo.
Listo cuando: ALERTA: ciclo 3 usou 88% do teto, ALERTA: 3 erros seguidos iguais y saída: 1.
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.
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.
Pregunta 1 de 4
Seis ciclos, un keep, 62.200 tokens en total. ¿Cuál es el costo por keep?competencia
Pregunta 2 de 4
Tres ciclos seguidos terminan en error con el mismo motivo. ¿Qué suele ser eso?competencia
Pregunta 3 de 4
¿Qué debe guardar la traza?
Pregunta 4 de 4
En la llamada real medida, el pedido tenía menos de 2 KB y la entrada pasó de 247 mil tokens. ¿Por qué?
Elige una alternativa. La explicación aparece después de tu intento.