El kit: siete archivos que sostienen una ejecución larga
Una sesión larga falla de tres maneras: no sabe cuándo parar, olvida lo que hizo después de compactar y gasta lo que no debía. El kit execucao-longa responde con archivos, no con la memoria del modelo: el agente relee la carpeta en vez de recordar. En esta clase instalas el kit y creas la primera carpeta.
1Instalar el kit y comprobar que pasan las 73 pruebas
2Crear longrun/[fecha]-[slug]/ con un comando
3Separar lo que se reescribe de lo que solo se agrega
4Poner el método en las reglas globales del agente
Objetivo: crear la carpeta longrun/ de una ejecución y decir, para cada uno de los siete archivos, quién escribe, cuándo se lee y si solo agrega.
01 · Los siete archivos alrededor del agente
Haz clic en cada bloque: quién escribe, cuándo se lee y cómo cambia.
Clase 101 · Los siete archivos alrededor del agenteHaz clic en cada bloque: quién escribe, cuándo se lee y cómo cambia.
¿Se compactó, se cayó o cambiaste de modelo? El próximo ciclo relee la carpeta y continúa.
1/6
goal.md
Resultado en una frase, criterios de terminado (función, regresión, límite), topes, restricciones y puertas humanas. Es el único archivo que el agente no debe reescribir: cambiar el goal a mitad de camino es cambiar de tarea.
Desplaza la página: cada etapa de abajo enciende su parte del diagrama.
1/6
goal.md
Resultado en una frase, criterios de terminado (función, regresión, límite), topes, restricciones y puertas humanas. Es el único archivo que el agente no debe reescribir: cambiar el goal a mitad de camino es cambiar de tarea.
2/6
plan.md + state.md
Los dos son fotografías del ahora: se reescriben, no se acumulan. El state.md termina con los comandos exactos para retomar. Cuando la primera línea de "Funciona" dice concluído, el vigía y el hook dejan de tratar la ejecución como activa.
3/6
progress, failures, decisions
Historial fechado en tabla. Nunca se borra una línea: es lo que permite ver después si el agente reabrió algo ya hecho o repitió el mismo intento tres veces.
4/6
canal.md
Conocimiento del proyecto, no estado de la tarea: dónde están las cosas, el nombre correcto de cada pieza, la trampa que costó una hora. Solo agrega, una línea por hecho, con fecha. El hook pide llenarlo en la franja 1 (clase 3).
5/6
Agente o loop
Después de cada compactación o retomada, lo primero es releer los archivos, en el orden goal → state → plan → canal → final de progress y failures, y seguir desde el primer ítem pendiente.
6/6
La carpeta es la memoria
El objetivo queda quieto en goal.md; el ahora queda en plan y en state; el historial solo crece en progress, failures y decisions; lo que el resumen pierde queda en el canal.
Los mismos archivos sirven para Claude Code y para Codex: uno retoma lo que el otro grabó.
02 · Cuándo entra en juego cada archivo
Una ejecución de principio a fin, vista a través de los archivos.
1. Antes
novo-longrun.sh crea la carpeta con los siete archivos ya marcados con la fecha.
Tú completas el goal.md. Es la parte que lleva tiempo, y es la que decide si la ejecución termina (clase 2).
Nombre de la carpetalongrun/2026-10-19-contador-palavras/
2. En cada ciclo
Lee state y plan, elige la próxima acción útil, la ejecuta y la prueba.
Al final reescribe state y plan y agrega una línea en progress. Si algo salió mal, una línea en failures.
Línea de progress.md| 2026-10-01 14:30 | medição do piloto | 7714c3c | sim (nível 3) | 332791 / 304000 / 4296 | 0 |
3. Después de compactar
El resumen de la compactación mezcla lo confirmado con la suposición. Los archivos no.
El agente relee goal → state → plan → canal antes de actuar y no reabre lo que el state dice que está hecho.
4. Al final
El state.md dice concluido, pero quien lo cierra eres tú: ejecutas la prueba final por tu cuenta y mides la sesión (clase 7).
La corrección más pequeña de cada falla va del failures.md al FALHAS.md del proyecto.
03 · Instalar y crear la primera carpeta
Una vez por máquina, y después una carpeta por ejecución. Las rutas siguen el README del kit.
~/projetos/execucao-longa/tools/novo-longrun.sh ~/projetos/<seu-projeto> <slug-do-objetivo>
ls ~/projetos/<seu-projeto>/longrun/*/
CLAUDE.md y AGENTS.md globales · pegar una vez (templates/AGENTS-long-run.md)
## Execução longa (/goal, loop, objetivo de horas) — método em ~/projetos/execucao-longa
- **Antes de começar:** `~/projetos/execucao-longa/tools/novo-longrun.sh <projeto> <slug>` cria `longrun/<data>-<slug>/` (goal, plan, state, progress, failures, decisions, canal). Critério de pronto no `goal.md` em **nível 3+**: `comando → saída esperada`, cobrindo função, regressão e limite, sem atalho possível (contagem mínima, testes congelados, validador).
- **Durante:** releia goal → state → plan → canal após toda compactação ou retomada; registre cedo no `canal.md` (só acrescentar) fatos, aprendizados, glossário e armadilhas; teste cada mudança; commit a cada checkpoint; continue enquanto houver próxima ação útil e segura.
- **Parar e chamar o humano:** 3 ciclos sem avanço mensurável; o mesmo plano de fechamento repetido sem fechar ou item já feito reaberto (contexto degradou); crédito/API, ação irreversível ou externa, credencial ausente, decisão de negócio.
- **Faixas de contexto** (no Claude Code o hook avisa uma vez cada; no Codex, acompanhe o % em `/status`): ~50% → registrar no `canal.md`; ~70% → atualizar estado e pedir `/compact`; ~85% ou 3ª compactação → `/session-handoff` + sessão nova + `/prime`.
- **Headless:** `~/projetos/execucao-longa/tools/loop-longrun.sh <pasta-longrun>` (flock, timeout, MemoryMax, testes protegidos, parada por estagnação). Medir: `tools/medir-sessao.py <jsonl>`.
- Tetos sempre: timeout, memória (`systemd-run --user --scope -p MemoryMax=`), saída de ferramenta curta.
- **Histórico:** `recall "termo" [--projeto X] [--fonte codex|claude] [--desde AAAA-MM-DD]` busca em tudo o que já foi dito com o Codex e o Claude nesta máquina (índice reindexado de hora em hora) — use antes de perguntar ao usuário algo que pode já ter sido decidido.
Ejemplo del repositorio
$ python3 -m pytest -q -p no:cacheprovider | tail -1
73 passed in 18.59s
$ novo-longrun.sh ~/ensaio/projeto-teste contador-palavras
criado: ~/ensaio/projeto-teste/longrun/2026-10-19-contador-palavras
próximo: preencher ~/ensaio/projeto-teste/longrun/2026-10-19-contador-palavras/goal.md (critérios nível 3+) e colar templates/prompt-goal-codex.md no /goal
$ ls ~/ensaio/projeto-teste/longrun/*/
canal.md decisions.md failures.md goal.md plan.md progress.md state.md
$ novo-longrun.sh ~/ensaio/projeto-teste contador-palavras
já existe: ~/ensaio/projeto-teste/longrun/2026-10-19-contador-palavras
$ echo $?
1
Ejecutado con el kit del 18/10/2026; solo se acortó la ruta de la carpeta de ensayo. El tiempo de pytest cambia de una máquina a otra.
Carpeta fuera de un proyecto: el script exige que la carpeta del proyecto exista. El hook y el vigia buscan longrun/*/state.md en la raíz del repositorio git.
Reutilizar el slug: dos ejecuciones el mismo día con el mismo slug chocan y el script se niega. Usa otro slug; no borres la carpeta antigua, es historial.
Escribir "concluído" en el state.md por error: para el hook y el vigia, la ejecución deja de estar activa.
04 · Video: las tres piezas del método
Seis minutos con el concepto (10/10/2026). El concepto sigue vigente; dos detalles cambiaron después: en la franja 3 y en la 3.ª compactación el agente termina la tarea en curso antes de la sesión nueva (clase 3), y el cuidado con la caché hoy es el handoff automático a los 45 min de inactividad (clase 4).
En tu máquina. Pasa al siguiente solo cuando el "listo cuando" sea verdad.
E1 · Kit instalado y probado
10 min
Clona el kit en ~/projetos/execucao-longa y ejecuta su suite de pruebas.
Listo cuando:python3 -m pytest -q -p no:cacheprovider | tail -1 → 73 passed (en un clon más nuevo el número puede ser mayor; nunca puede aparecer failed).
E2 · La carpeta de una ejecución de verdad
10 min
Elige una tarea real de un proyecto tuyo que lleve más de una hora y crea su carpeta. Ejecuta el mismo comando dos veces.
Listo cuando:ls ~/projetos/[tu-proyecto]/longrun/*/ | wc -l → 7; la segunda llamada imprime já existe: y echo $? → 1.
E3 · El método en las reglas globales
10 min
Pega el bloque de templates/AGENTS-long-run.md en ~/.claude/CLAUDE.md y en ~/.codex/AGENTS.md. Abre una sesión nueva y pregunta: "¿cómo empiezas una ejecución larga?" El bloque también menciona /session-handoff, /prime y recall: solo existen a partir de las clases 5 y 7.
Listo cuando:grep -c novo-longrun.sh ~/.claude/CLAUDE.md → 1 o más, y la sesión nueva responde citando novo-longrun.sh y criterio nivel 3 sin que tú se lo recuerdes.
06 · Prueba de la clase
Pregunta 1 de 4
¿Cuál de estos archivos debe el agente REESCRIBIR en cada ciclo, en lugar de solo agregar?competencia
Correcto
state.md y plan.md son la fotografía del ahora y se reescriben. progress, failures y decisions son historial: solo se agregan, para poder ver después si el agente repitió un intento o reabrió un ítem.
No es esa
state.md y plan.md son la fotografía del ahora y se reescriben. progress, failures y decisions son historial: solo se agregan, para poder ver después si el agente repitió un intento o reabrió un ítem.Repasar: Los siete archivos alrededor del agente
Pregunta 2 de 4
El agente descubrió que la base de datos de prueba solo levanta con la variable DB_LOCAL=1. ¿Dónde va eso?
Correcto
Es conocimiento del proyecto que la compactación pierde: canal.md, una línea con fecha. En plan.md desaparece en la próxima reescritura; en goal.md cambiaría la tarea.
No es esa
Es conocimiento del proyecto que la compactación pierde: canal.md, una línea con fecha. En plan.md desaparece en la próxima reescritura; en goal.md cambiaría la tarea.Repasar: Los siete archivos alrededor del agente
Pregunta 3 de 4
Después de una compactación, ¿qué es lo primero que hace el agente?competencia
Correcto
El resumen mezcla lo confirmado con la suposición. Los archivos no. Por eso el kit manda releer la carpeta en orden y seguir desde el primer ítem pendiente.
No es esa
El resumen mezcla lo confirmado con la suposición. Los archivos no. Por eso el kit manda releer la carpeta en orden y seguir desde el primer ítem pendiente.Repasar: Cuándo entra en juego cada archivo
Pregunta 4 de 4
Ejecutaste novo-longrun.sh con un slug que ya existe hoy. ¿Qué pasa?
Correcto
El script se niega y no toca la carpeta existente. Una carpeta antigua es historial: usa otro slug.