Codex Goal en profundidad: un flujo de trabajo orientado a objetivos para que los AI Agents trabajen durante horas

Una explicación práctica de Codex Goal / Persistent Goals: cómo hacer que un AI Agent avance según criterios claros de finalización y no declare la tarea terminada demasiado pronto durante migraciones, refactors o reparación de tests.

Los AI Agents dentro del navegador, la terminal y el IDE cada vez escriben mejor código. Pero el problema real para muchos desarrolladores ya no es “no puede hacerlo”, sino “se detiene a mitad de camino y dice que ya terminó”.

Los tickets pequeños encajan muy bien con un coding agent: arreglar un botón, añadir un endpoint, cambiar un texto breve o agregar un test. El objetivo es claro, el alcance es pequeño y la verificación es directa. Pero cuando la tarea se convierte en una migración grande, un refactor entre módulos, la reparación de una suite de tests, una actualización de dependencias o la optimización de prompt evals, el Agent puede caer fácilmente en un patrón conocido:

Llega a un estado intermedio que parece razonable y se detiene demasiado pronto.

Codex Goal / Persistent Goals intentan resolver precisamente este problema de parada prematura. La idea no es hacer que el Agent ejecute más rondas. La idea es hacer que siga avanzando hacia un objetivo claro hasta cumplir criterios de finalización verificables.

Codex Goal trata de condiciones de parada, no de bucles

Muchos intentos de automatización de tareas largas empiezan con una instrucción poco precisa:

1
Sigue revisando el código y corrigiendo problemas hasta que no haya errores.

O en una forma más mecánica:

1
2
3
4
Repite 10 veces:
1. Ejecuta los tests
2. Pide al modelo que corrija los fallos
3. Ejecuta los tests otra vez

Este tipo de rough loop puede mantener al Agent ocupado durante más tiempo, pero tiene dos problemas serios:

  1. No sabe cuándo debería detenerse de verdad.
  2. No sabe si “ya no veo errores” equivale a “la tarea está completa”.

La clave de Codex Goal no es el número de iteraciones. Es la combinación de goal, state y judge stop condition. Es decir, el Agent necesita saber cuál es el objetivo, hasta dónde ha avanzado y qué evidencia demuestra que la tarea realmente terminó.

Esa es la frontera importante para los Agents de larga duración: no “puede dar más pasos”, sino “puede saber qué le falta todavía”.

Diferencia entre Goal y un prompt normal

Un prompt normal se parece más a una instrucción puntual:

1
Arregla los tests de este proyecto.

Un Goal prompt se parece más a un pequeño contrato de tarea:

1
2
3
4
5
6
Objetivo: corregir los tests que fallan en el repositorio actual.
Alcance: modificar solo src/ y tests/. No cambiar scripts de build.
Criterio de finalización: npm test pasa por completo y los cambios no introducen errores de lint.
Comando de verificación: npm test && npm run lint.
Si hay bloqueo: después de 3 intentos fallidos, informar los casos que siguen fallando, los enfoques intentados y los blockers.
Salida: resumir archivos modificados, causa raíz y resultados de verificación.

La diferencia principal es que el Goal prompt define qué significa “terminado”.

Sin una definition of done, el Agent puede confundir “cambié el código” con “completé la tarea”. Con criterios claros de finalización, el Agent debe seguir trabajando contra evidencia externa: tests, logs, diffs, resultados de build y puntuaciones de eval.

Por qué importa el LLM judge stop condition

Lo más difícil en una tarea larga no es hacer que el Agent ejecute comandos. Es hacer que decida:

  • ¿La tarea está realmente completa?
  • ¿Solo pasó una prueba local?
  • ¿Arregló un problema pero introdujo otro?
  • ¿Debe seguir investigando, ejecutar otra verificación o deshacer una dirección?

Ahí es donde un LLM judge stop condition resulta valioso.

Idealmente, el Agent no debería mirar solo si el último comando terminó con exit code 0. También debería razonar sobre:

  • si todos los criterios de finalización del usuario se cumplieron;
  • si los cambios se mantuvieron dentro del alcance permitido;
  • si realmente se ejecutaron tests, lint, build y evals;
  • si los logs de fallo todavía contienen elementos sin resolver;
  • si el cambio introduce efectos secundarios o riesgos evidentes;
  • si el informe final ofrece suficiente evidencia para que una persona revise rápido.

En otras palabras, el judge no solo declara éxito. También evita que el Agent cierre la tarea por optimismo.

Tareas que encajan bien con Goal

Codex Goal / Persistent Goals son especialmente útiles para trabajos de código complejos que requieren varias rondas de exploración y verificación:

  • Migración de código: pasar de un framework antiguo a uno nuevo, de CommonJS a ESM o de una API antigua a una API nueva.
  • Refactors grandes: dividir módulos, ordenar límites, reemplazar implementaciones duplicadas y reducir complejidad.
  • Reparación de tests: analizar casos fallidos, identificar causas, corregirlas y verificar repetidamente.
  • Actualizaciones de dependencias: subir frameworks, SDKs o herramientas de build mientras se manejan breaking changes.
  • Optimización de prompt eval: ejecutar evaluaciones, revisar muestras fallidas y ajustar prompts o estrategias de tool calling.
  • Limpieza de deuda técnica: reemplazar patrones antiguos bajo una regla clara sin cambiar el comportamiento.

Estas tareas tienen algo en común: muchos estados intermedios, causas de fallo que no siempre aparecen en el primer intento y una finalización que depende de resultados de verificación.

Tareas que no deberían depender solo de Goal

Goal no es magia. Las siguientes tareas son arriesgadas si se manejan con un único prompt largo:

  • El objetivo es muy vago, por ejemplo “mejorar el crecimiento del producto”.
  • El ciclo es largo, por ejemplo varias semanas de SEO, GEO u optimización de anuncios.
  • El trabajo requiere coordinación entre sistemas: contenido, datos, anuncios, soporte y métricas de negocio.
  • Hay riesgo de producción: cambios de base de datos, configuración en vivo, operaciones financieras o permisos de cuenta.
  • No hay mecanismos de verificación: ni tests, ni métricas, ni logs, ni criterios de aceptación humanos.

Estas tareas se parecen más a Missions que a Goals.

Un Goal funciona bien para ejecución profunda de unas horas o uno o dos días. Una Mission necesita estado, historial, planificación, aprobación humana, revisiones por etapas y métricas de largo plazo. Por ejemplo, la optimización de SEO / GEO / Ads no consiste solo en hacer que el Agent escriba contenido o ajuste parámetros en bucle. Requiere registrar estrategia, experimentos, cambios de datos y próximas acciones de forma persistente.

Plantilla para escribir mejores Goal Prompts

Un Goal prompt útil debería incluir al menos estas partes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Objetivo:
Explica en una frase el resultado final esperado.

Contexto:
Describe el problema actual, archivos relacionados, restricciones de negocio e intentos previos.

Alcance:
Lista qué directorios, archivos y módulos se pueden modificar, y qué no debe tocarse.

Criterio de finalización:
Enumera una definition of done verificable.

Comandos de verificación:
Indica tests, lint, build, evals o scripts que deben ejecutarse.

Estrategia ante fallos:
Si no se puede completar, pide al Agent que informe causas, enfoques intentados y blockers restantes.

Límites de riesgo:
Exige confirmación humana para acciones destructivas, configuración de producción, secretos, bases de datos o servicios externos.

Formato de entrega:
Pide un resumen de cambios, resultados de verificación, riesgos y siguientes pasos.

Lo que determina la calidad de una tarea larga no suele ser lo bonito que suena el prompt. Es si los criterios de finalización son lo bastante firmes.

El valor de Goal Buddy

Muchas tareas largas fallan no porque el Agent sea débil, sino porque la persona no definió la tarea con suficiente claridad al principio.

Una herramienta como Goal Buddy aporta valor porque prepara el objetivo, los límites, los criterios de finalización y el plan de verificación antes de entregar la tarea al Agent. Funciona como una lista de preflight y pregunta:

  • ¿Qué resultado visible debe producir esta tarea?
  • ¿Qué directorios se pueden cambiar y cuáles están fuera de alcance?
  • ¿Qué comando prueba el éxito?
  • Si falla, ¿el Agent debe seguir intentando? ¿Hasta dónde?
  • ¿Hace falta dividir el trabajo en commits por etapas?
  • ¿Qué acciones requieren aprobación humana?

Este paso puede parecer verboso, pero reduce mucho la probabilidad de que el Agent se desvíe, se detenga demasiado pronto o genere un diff enorme difícil de revisar.

Consejos prácticos para usuarios de Codex, Claude Code y OpenCode

Si usas Codex, Claude Code, OpenCode, OpenClaw o un coding agent similar, trata las tareas largas así:

  1. Haz commit del workspace actual primero para tener un punto limpio de rollback.
  2. Escribe la petición como un Goal, no como una instrucción vaga.
  3. Define qué se puede cambiar y qué no.
  4. Proporciona comandos de verificación, idealmente comandos que el Agent pueda ejecutar tras cada ronda.
  5. Exige que el Agent informe blockers si no puede terminar, en vez de inventar un estado de éxito.
  6. Pon confirmación humana alrededor de operaciones de alto riesgo, como borrar archivos, cambiar bases de datos o tocar configuración de despliegue.
  7. Acepta solo un resultado final que incluya resultados de tests y resumen de cambios.

La forma correcta de usar un Agent de larga duración no es “dejarlo hacer lo que quiera durante la noche”. Es darle un objetivo claro, guardrails sólidos y una salida verificable.

Resumen

Codex Goal / Persistent Goals llevan a los coding agents de “ejecutar una instrucción” a “seguir trabajando hacia un objetivo”.

Encajan mejor con tareas de ingeniería complejas pero acotadas: migraciones, refactors, reparación de tests, actualizaciones de dependencias y optimización de evals. No encajan bien con tareas de negocio vagas, de ciclo largo y sin criterios de verificación; esas deberían diseñarse como sistemas Mission.

La competencia futura entre AI Agents quizá no dependa solo de qué modelo escribe mejor código. También dependerá de qué Agent puede seguir avanzando hacia un objetivo, juzgar correctamente cuándo detenerse y dejar suficiente evidencia para que una persona revise el resultado.

Referencias:

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy