Codex /goal · Claude Code /goal · oct/2026

Agentes que trabajan durante horas, en ejecución larga

No se trata de pedirle al agente que "trabaje 10 horas". Se trata de darle un objetivo con una condición de terminado verificable, guardar el estado en archivos y poner límites. Trabaja en ciclos hasta concluir.

Banner Ejecución Larga: agentes que trabajan horas y días sin perder el rumbo
Qué es

Un método + plantillas para ejecuciones largas

Este repositorio reúne el material de origen sobre la sesión larga en Codex, una investigación de las novedades de jul–oct/2026 con fuentes, un plan de uso y plantillas listas para copiar.

Los seis pilares: /goal, archivos de estado, ciclo continuo, guardrails, métricas y fases

🎯 Objetivo verificable

El /goal necesita Resultado, Restricciones y Verificación: comandos cuya salida prueba que terminó. Nada de "hasta que quede bien".

🗂️ Estado en archivos

goal, plan, state, progress, failures y decisions.md guardan la tarea; canal.md guarda lo que la compactación pierde (hechos, glosario, trampas). Tras compactar o reanudar, el agente vuelve a leer los archivos en lugar de depender de la memoria de la conversación.

🛡️ Límites y compuertas

Tiempo, tokens y memoria con límite. Gasto de créditos, API, producción y acciones irreversibles se convierten en compuerta humana.

Cómo funciona

Un ciclo que solo se detiene cuando se alcanza el criterio

El agente elige siempre la siguiente acción útil, prueba, registra y continúa. Tres ciclos sin avance medible = detenerse y llamar al humano.

Objetivo→ Lee el estado→ Siguiente acción→ Ejecuta→ Prueba→ Corrige→ Guarda estado + commit↺

Sesión persistente

Continuidad lógica del trabajo: el mismo objetivo, el mismo historial.

Compactación

Resume el historial antiguo para que quepa en la ventana. Cambia el prefijo y baja el caché justo después — es lo esperado.

Prompt cache

Reutiliza el prefijo idéntico. En sesiones continuas el acierto supera el 95%. Mida cached ÷ input.

Requisitos previos

Lo que necesita

Un agente de código con modo de objetivo y un proyecto con alguna prueba automática que sirva de oráculo.

Codex CLI

El /goal vive dentro del TUI (no aparece en el --help).

# versión reciente
codex --version

o Claude Code

También tiene /goal, además de /loop, background agents y workflows.

claude --version

Las plantillas

Clone este repositorio para copiar los archivos de estado y los prompts.

git clone https://github.com/inematds/execucao-longa
Guía de uso · paso a paso

De la primera línea del goal hasta "concluido"

Use las plantillas de templates/. Cada ejecución tiene su propia carpeta dentro del proyecto.

1

Cree la carpeta de estado de la ejecución

Una carpeta por ejecución, con siete archivos (los seis de estado + canal.md).

execucao-longa/tools/novo-longrun.sh . meu-objetivo   # crea la carpeta con los siete archivos y fecha el goal.md

# o a mano:
mkdir -p longrun/2026-10-01-meu-objetivo
cp execucao-longa/templates/{goal,plan,state,progress,failures,decisions,canal}.md \
   longrun/2026-10-01-meu-objetivo/
2

Escriba el goal.md con criterios verificables

Cada criterio es un comando y la salida esperada. Liste también las compuertas humanas.

## Criterios de terminado (verificables)
- [ ] npm test  → 0 fallos
- [ ] npm run build  → sale con código 0
## Compuertas humanas (detenerse y preguntar)
- gasto de créditos / API de pago / deploy en producción
3

Inicie el goal

En Codex, pegue templates/prompt-goal-codex.md completado. Si el objetivo todavía es vago, ejecute /plan antes.

codex
/goal RESULTADO: ... VERIFICACIÓN: ... ESTADO: longrun/2026-10-01-meu-objetivo/
# en Claude Code: la condición tiene que aparecer en la salida
/goal la salida de npm test muestra 0 fallos y state.md dice "concluido"
4

Acompañe sin interrumpir

Vea el progreso, pause y reanude. Use fork para caminos alternativos.

/goals          # lista goals y estado
/goal pause     # /goal resume para continuar
/side           # pregunta de estado sin detener el trabajo
/fork           # ramifica la sesión
5

Sin interfaz: el loop headless

Cada ciclo es un codex exec con stdin cerrado, timeout, tope de memoria y flock. Quien decide seguir es el test: el loop revierte cambios en tests protegidos, hace commit de checkpoint y se detiene por estancamiento.

# loop.env + prompt.md na pasta (copie de longrun/2026-10-01-medir-sessao/)
execucao-longa/tools/loop-longrun.sh longrun/2026-10-01-meu-objetivo
# se detiene solo: CONCLUIDO, 3 ciclos sin avance o tope de ciclos
6

Cierre y mida

Compruebe usted mismo (corra el test final, mire el hash de los tests) y registre en progress.md lo que muestra medir-sessao.py: duración, compactaciones, tokens, caché y salida de herramientas.

python3 execucao-longa/tools/medir-sessao.py <sessão.jsonl>              # resumen: duración, compactaciones, caché
python3 execucao-longa/tools/medir-sessao.py <sessão.jsonl> --json --por-turno  # curva por turno
Para empezar

Cómo usarlo todo

Instálelo una vez por máquina. Después, cada objetivo largo sigue uno de dos caminos: interactivo (usted lo acompaña) o headless (corre solo).

1 · Una vez por máquina

  1. Clone el repo en ~/projetos/execucao-longa.
  2. Pegue templates/AGENTS-long-run.md en el CLAUDE.md y el AGENTS.md globales.
  3. En ~/.claude/settings.json, conecte tools/hook-longrun.sh a PreCompact, SessionStart (matcher compact|resume), PostToolUse y UserPromptSubmit: recuerda guardar antes de compactar, pide releer después y avisa las franjas de contexto (50/70/85%). Ponga "cleanupPeriodDays": 365 para que Claude no borre las transcripciones a los 30 días.
  4. Active el vigía: copie tools/systemd/longrun-vigia.* a ~/.config/systemd/user/ y corra systemctl --user enable --now longrun-vigia.timer.
  5. En los crons que llaman agentes: flock -n + timeout.

2A · Interactivo — usted acompaña

  1. tools/novo-longrun.sh <proyecto> <slug>
  2. Escriba el goal.md con criterios nivel 3.
  3. /goal en Codex o Claude Code con el prompt de templates/.
  4. El hook pide releer el estado tras compactar o retomar; el vigía avisa si se traba.
  5. Al final: medir-sessao.py y anótelo en progress.md.

2B · Headless — corre solo

  1. tools/novo-longrun.sh <proyecto> <slug>
  2. goal.md + tests congelados (el test es el juez).
  3. prompt.md + loop.env — copie del ejemplo longrun/2026-10-01-medir-sessao/.
  4. tools/loop-longrun.sh <carpeta> (en tmux o en segundo plano).
  5. Se detiene solo: concluido, estancamiento o tope. Verifique aparte y mida.

Mantenimiento

Para encontrar algo dicho en cualquier sesión (Codex o Claude): recall "término" --projeto X --desde AAAA-MM-DD. Las alertas del vigía quedan en ~/.local/state/execucao-longa/alertas.log (y en notify-send). tools/arquivar-sessoes.py muestra cuánto espacio ocupan las sesiones antiguas; --aplicar las comprime y --restaurar devuelve una. Ejemplo completo de ejecución: longrun/2026-10-01-medir-sessao/.

Criterio de listo

Cómo saber si un criterio de éxito es bueno

Un buen criterio lo puede comprobar alguien de fuera sin confiar en el agente, y el agente no puede cumplirlo con un atajo. En ejecuciones largas, el mínimo es el nivel 3.

0 · Vago

"Dejar el sitio bien". Nadie sabe cuándo terminó.

1 · Subjetivo

"Código revisado y limpio". El agente se autoaprueba.

2 · Burlable

"0 fallos", "20 páginas". Puede borrar tests o generar páginas vacías.

3 · Protegido ✅

Comando + candado: "0 fallos y ≥ 48 tests y tests/ intacto". Mínimo aceptado.

4 · Independiente

Nivel 3 + verificación externa: e2e real, evaluador separado, muestra humana. Cuando el error cuesta caro.

5 preguntas (cada "no" baja el nivel)

  1. ¿Se puede comprobar con un comando (comando → salida esperada)?
  2. ¿La respuesta es sí/no, sin "mejoró"?
  3. ¿Es imposible cumplirlo sin hacer el trabajo? Si no, falta un candado: conteo mínimo, archivo congelado, validador.
  4. ¿La prueba aparece en la salida? El evaluador del /goal en Claude solo lee la conversación.
  5. ¿Cubre función (hace lo que debía), regresión (no rompió el resto) y límite (no tocó lo que no debía)?

Ejemplo: "traducir la guía al inglés"

❌ Nivel 0: la frase en sí. ⚠️ Nivel 2: "existe guia/en/index.html". ✅ Nivel 3–4: mismas <section id> que el PT, nada en portugués, enlaces internos responden 200, captura de pantalla revisada.

Señales de criterio malo: "bueno", "limpio", "completo"; depende de que el agente diga que terminó; solo conteo; no dice qué no puede cambiar; verificación que tarda horas. El templates/goal.md ya trae la escala.

Sesiones largas · cuidados

Deterioro de contexto, caché y modo cola

El /goal funciona, pero las sesiones con muchas compactaciones pierden el hilo. Detalles y fuentes en docs/pesquisa-goal-contexto-fila-2026-10.md (en portugués).

🧠 ¿El /goal se deteriora?

No es el /goal, es la compactación repetida. El objetivo sobrevive, pero se pierde "qué está hecho / qué falta": el agente repite "voy a terminar y hacer commit", reabre trabajo y no converge (issue openai/codex #34095).

🛡️ Cómo evitarlo

Franjas de contexto, antes de la automática (~90–95%): ~50% → anotar en canal.md hechos, aprendizajes y trampas; ~70% → actualizar el estado y correr /compact; ~85% o 3.ª compactación → /session-handoff, sesión nueva y /prime. En Claude Code un hook mide el % y avisa al agente una vez por franja. Un goal por funcionalidad.

⏱️ Caché entre ciclos

Si el orquestador duerme entre ciclos, despiértalo antes de que expire la caché: OpenAI 30 min (cada ~25), Claude 1 h (~55). Perder la caché cuesta de 12,5x a 25x. Despertar solo para mantener la caché compensa si hay trabajo en las próximas horas.

📋 Modo cola

Un backlog que crece: el orquestador toma la siguiente tarea, la despacha en una sesión corta, la verifica y la cierra. Se detiene cuando no hay tareas abiertas (patrón Symphony de OpenAI, sobre Linear). Empieza con una cola local en archivos.

🔎 Memoria entre sesiones

claude-mem funciona y sirve para recordar lo que ya se hizo en un proyecto, pero solo cubre Claude Code y guarda resúmenes, no lo que se dijo. Para buscar palabra por palabra en todo (Codex y Claude), use recall "término" (índice SQLite FTS5, F8). La limpieza con respaldo (F9) vació la cola antigua y cerró las sesiones trabadas. Análisis en docs/pesquisa-memoria-claude-mem-2026-10.md (en portugués).

Reglas del modo cola

  • Una tarea por archivo en longrun/<ejecución>/tasks/, con estado y campo evidencia:.
  • Cerrar exige evidencia (salida de test, archivo, hash de commit) — si no, "cerrar sin hacer" se vuelve el atajo.
  • El agente crea como máximo 5 tareas por ejecución; más allá, quedan como proposta y esperan aprobación.
  • Cola vacía → detener workers, registrar en progress.md y parar. Linear/GitHub Issues solo con autorización para usar la API.
Investigación · jul–oct/2026

Qué cambió y qué es mito

Resumen de la investigación con fuentes en docs/pesquisa-web-2026-10.md (en portugués).

✅ Confirmado

/goal, /compact, /resume y /fork existen en Codex (docs oficiales). Los goals se reanudan tras el límite de uso (20/07) y tras el reinicio del daemon (17/09). Claude Code tiene /goal desde may/2026, con evaluador después de cada turno.

🆕 Nuevos modelos

GPT-6 Astra (03/09) mantiene notas entre ventanas de contexto. Claude Opus 5.5 (22/09) tiene 1M de contexto y lectura de caché a US$0,20/MTok.

❓ Sin fuente

La sesión de 11 días / 573 turnos / 1,3 GB no tiene fuente pública. Es plausible: hay reportes de logs de sesión de 0,7 a 2 GB.

📐 No es un estándar oficial

Los archivos de estado son una división de la misma idea del PLANS.md (OpenAI) y del PROGRESS.md + git (Anthropic).

Material de origen

De dónde partió

La infografía y la portada que originaron el proyecto, guardadas en docs/origem/ junto con los cuatro textos.

Infografía Codex — Ejecución Larga
Infografía: /goal, ciclo continuo, archivos de estado, autonomía, compuertas y métricas.
Portada: Ejecución larga, 11 días en la misma sesión
Portada del experimento: 11 días en la misma sesión (cifra sin fuente pública).
Roadmap

Fases del plan

Detalles en docs/PLANO-EXECUCAO-LONGA.md (en portugués).

F0 ✓
Documentación y plantillasMaterial de origen, investigación, plan y plantillas publicados.
F1 ✓
PilotoEjecución larga real (medir-sessao): goal nivel 3, 14 tests congelados, loop headless — concluida en el 1.er ciclo, en 3 min, y verificada aparte.
F2 ✓
Medicióntools/medir-sessao.py: lee 1,8 GB en ~9 s; coincide con el oráculo en 2 sesiones grandes y en una tercera nunca vista.
F3 ✓
ReglasBloque de ejecución larga en las instrucciones globales de Claude y Codex; una sesión nueva lo sigue sin que se lo recuerden.
F4 ✓
Red de seguridadflock + timeout en los crons que llaman agentes, --max-turns, hook que pide releer tras compactar o retomar, resumen de compactación estructurado en Codex.
F5 ✓
Vigía de agentetools/vigia.py cada 10 min (timer de systemd): avisa ejecuciones detenidas, detenidas sin aviso u ociosas.
F6 ◐
Higienetools/arquivar-sessoes.py listo y probado (comprime con verificación, restaura); no aplicado — solo 0,04 GB tenían más de 90 días.
F7 ◐
Experimento "hasta dónde llega"Curva retrospectiva hecha: la caché no cae con las compactaciones; sin compactar, el costo por turno crece ~5x. Falta el experimento prospectivo sesión única × modo cola.
F8 ✓
Búsqueda en el historialComando recall "término": índice SQLite FTS5 de todo lo dicho con Codex y Claude (sin salida de herramientas), reindexado cada hora. Hecho por una ejecución larga en 1 ciclo; 90 mil fragmentos, búsqueda en 0,02–0,04 s.
F9 ✓
Limpieza de claude-memHecha con respaldo: 7.904 mensajes pendientes antiguos y 3.860 sesiones trabadas (lotes automáticos de julio) tratados sin reprocesar; logs de 640 a 129 MB; la búsqueda y la captura siguen funcionando.
Relacionados

Otros proyectos de INEMA sobre el tema