Ejecución larga|INEMA.CLUB-PRO

Clase 7 · 17 min

Medir la sesión: medir-sessao.py, costo de retomada y recall

Sin medir, "la sesión se puso cara" y "el agente se olvidó" son pura impresión. El kit lee las transcripciones JSONL de Claude Code y de Codex y devuelve duración, compactaciones, tokens y caché por turno, el costo real de retomar y una búsqueda en todo lo que ya se dijo. En esta clase mides un caso conocido y después tu sesión más grande.

Comenzar la clase
Osciloscopio de banco que muestra una onda verde limpia, con las puntas de prueba sobre la mesa.

En esta clase vas a

  1. 1Dónde quedan las transcripciones de Claude y de Codex
  2. 2medir-sessao.py: resumen, --json y --por-turno
  3. 3custo-retomada.py y nota-retomada.py
  4. 4recall: búsqueda en 0,02 s en lo que ya se dijo

Objetivo: medir duración, compactaciones, tokens y caché de una sesión, leer el costo de retomar y encontrar una decisión antigua con recall.

01De la transcripción a la medida

Cuatro herramientas del kit, solo biblioteca estándar de Python, sin red.

Haz clic en cada bloque del diagrama para ver qué hace.

Lo que se decidió tiene que estar en un archivo del proyecto. La transcripción sirve para medir y para recordar dónde buscar.

02Mide un caso conocido y luego el tuyo

Los fixtures de las pruebas del kit dan números fijos: si tu salida coincide, la herramienta está bien en tu máquina.

Terminal · medir los fixtures
K=~/projetos/execucao-longa
python3 $K/tools/medir-sessao.py $K/tests/fixtures/claude_mini.jsonl
python3 $K/tools/medir-sessao.py $K/tests/fixtures/codex_mini.jsonl
python3 $K/tools/medir-sessao.py $K/tests/fixtures/claude_mini.jsonl --json --por-turno
Terminal · tu sesión más grande de Claude Code y el costo de retomar
S=$(ls -S ~/.claude/projects/*/*.jsonl | head -1); echo "$S"
python3 ~/projetos/execucao-longa/tools/medir-sessao.py "$S"
python3 ~/projetos/execucao-longa/tools/custo-retomada.py 14
python3 ~/projetos/execucao-longa/tools/nota-retomada.py --relatorio
Terminal · recall en los fixtures (índice separado, en /tmp)
K=~/projetos/execucao-longa; R=/tmp/ensaio-recall
rm -rf $R && mkdir -p $R/codex/2026/10/01 $R/claude/-home-voce-projetos-demo $R/arq
cp $K/tests/fixtures/recall_codex.jsonl $R/codex/2026/10/01/rollout-a.jsonl
cp $K/tests/fixtures/recall_claude.jsonl $R/claude/-home-voce-projetos-demo/s1.jsonl
export RECALL_DB=$R/recall.db
python3 $K/tools/recall.py indexar --codex $R/codex --claude $R/claude --arquivo $R/arq
python3 $K/tools/recall.py indexar --codex $R/codex --claude $R/claude --arquivo $R/arq
python3 $K/tools/recall.py PostgreSQL
unset RECALL_DB
Terminal · recall de verdad (una vez por máquina, Linux)
mkdir -p ~/.local/bin && ln -s ~/projetos/execucao-longa/tools/recall.py ~/.local/bin/recall
recall indexar                      # primera vez: indexa ~/.claude/projects y ~/.codex/sessions
recall "cleanupPeriodDays" -n 5     # búsqueda (las opciones: --projeto X --fonte codex|claude --desde AAAA-MM-DD)
cp ~/projetos/execucao-longa/tools/systemd/recall-indexar.* ~/.config/systemd/user/
sed -i "s#/home/nmaldaner#$HOME#g" ~/.config/systemd/user/recall-indexar.service
systemctl --user daemon-reload && systemctl --user enable --now recall-indexar.timer   # reindexa cada hora
Ejemplo del repositorio
$ medir-sessao.py tests/fixtures/claude_mini.jsonl
…/tests/fixtures/claude_mini.jsonl (claude)
  duração: 7200 s | compactações: 1 | turnos: 2
  tokens de entrada: 2000 | saída: 55 | cache: 45.0%
  cache lido: 900 | escrito: 1085 | saída de ferramenta: 37 bytes
  modelos: claude-opus-5-5, claude-sonnet-5-5

$ medir-sessao.py tests/fixtures/codex_mini.jsonl
…/tests/fixtures/codex_mini.jsonl (codex)
  duração: 3600 s | compactações: 1 | turnos: 2
  tokens de entrada: 3000 | saída: 120 | cache: 60.0%
  cache lido: 1800 | escrito: 0 | saída de ferramenta: 8 bytes
  modelos: gpt-6-astra, gpt-6.1-sol

$ medir-sessao.py tests/fixtures/claude_mini.jsonl --json --por-turno
[{"i": 1, "timestamp": "2026-09-02T08:00:05.000Z", "input": 1000, "cached": 0, "ratio": 0.0, "compactacoes": 0},
 {"i": 2, "timestamp": "2026-09-02T09:00:10.000Z", "input": 1000, "cached": 900, "ratio": 0.9, "compactacoes": 1}]

$ recall indexar … (duas vezes) ; recall PostgreSQL
2 arquivos processados; 8 trechos novos.
0 arquivos processados; 0 trechos novos.
2026-09-10T10:00:03.000Z codex alfa user Quero migrar o banco para PostgreSQL até sexta …/rollout-a.jsonl:4

$ nota-retomada.py --relatorio      (sem medições ainda)
Notas de retomada (últimos 30 dias, 0 medições) — …/notas.jsonl
modo          n  acerto  tokens (mediana)
compactada    0       —                 —
retomada      0       —                 —
continuada    0       —                 —
prime         0       —                 —

Los fixtures son transcripciones pequeñas y sintéticas de las pruebas del kit (nombres de modelo incluidos); los números sirven para comprobar la herramienta, no como medida de uso. Rutas acortadas con …

03Cómo leer y dónde anotar

Una línea por ejecución en progress.md, con los números de la herramienta.

1. Caché

Entre 93% y 99% es lo normal medido en las sesiones largas. Muy por debajo de eso en una sesión larga, busca pausas mayores que la caché o un cambio de modelo a mitad de camino.

La compactación no derriba la caché: no es motivo para cortar la sesión.

04Práctica

Primero el caso conocido, después tus datos.

E16 · La herramienta coincide en tu máquina

5 min

Mide los dos fixtures y ejecuta el ensayo del recall.

Listo cuando: claude_mini → compactações: 1 | turnos: 2 y cache: 45.0%; codex_mini → cache: 60.0%; el recall imprime 2 arquivos processados; 8 trechos novos., luego 0 arquivos processados y una línea con PostgreSQL.

E17 · Tu sesión más grande en progress.md

15 min

Mide la transcripción más grande de tu Claude Code (o una de Codex en ~/.codex/sessions) y escribe la línea en el progress.md de tu ejecución, con la fecha.

Listo cuando: la línea de progress.md trae tokens de entrada, caché leída, salida y compactaciones iguales a los que medir-sessao.py imprimió para el mismo archivo.

E18 · Recall en tus sesiones

15 min

Instala el comando recall, indexa y busca una decisión que recuerdes haber tomado con el agente en la última semana.

Listo cuando: recall indexar → N arquivos processados con N mayor que 0, y recall "[término]" --desde [fecha] devuelve la línea con el archivo y el número de la línea de la conversación.

05Prueba de la clase

Pregunta 1 de 4

¿Cómo calcula medir-sessao.py la caché?competencia

06En tres frases

Mide primero lo conocidoLos fixtures dan números fijos; si coinciden, la herramienta está correcta en tu máquina.
Costo y conocimientocusto-retomada.py dice cuánto costó volver; nota-retomada.py, cuánto volvió.
Recordar sin confiarrecall encuentra dónde se dijo algo; lo que vale está en el archivo del proyecto.

Para ir más allá

Clase anteriorPróxima clase