Skip to main content
El comando /goal establece una condición de finalización y Claude sigue trabajando hacia ella sin que usted solicite cada paso. Después de cada turno, un modelo pequeño y rápido verifica si se cumple la condición. Si el modelo juzga que aún no se cumple, Claude inicia otro turno en lugar de devolver el control a usted. El objetivo se borra automáticamente una vez que se cumple la condición, si el modelo juzga que la condición es imposible de satisfacer, o si un turno falla en un error que deba corregir. Utilice un objetivo para trabajo sustancial con un estado final verificable:
  • Migrar un módulo a una nueva API hasta que cada sitio de llamada se compile y las pruebas pasen
  • Implementar un documento de diseño hasta que se cumplan todos los criterios de aceptación
  • Dividir un archivo grande en módulos enfocados hasta que cada uno esté dentro de un presupuesto de tamaño
  • Trabajar a través de un backlog de problemas etiquetados hasta que la cola esté vacía

Comparar formas de mantener una sesión en ejecución

Tres enfoques mantienen la sesión actual en ejecución entre solicitudes. Elija según lo que deba iniciar el siguiente turno: /goal y un Stop hook se activan después de cada turno. /goal es un atajo con alcance de sesión: escribe una condición y está activa solo para la sesión actual. Un Stop hook vive en su archivo de configuración, se aplica a cada sesión en su alcance y puede ejecutar un script para verificaciones deterministas o una solicitud para evaluaciones basadas en modelos. El modo automático por sí solo aprueba llamadas de herramientas dentro de un único turno pero no inicia uno nuevo. Claude se detiene cuando juzga que el trabajo está hecho. /goal añade un evaluador separado que verifica su condición después de cada turno, por lo que la finalización es decidida por un modelo nuevo en lugar del que realiza el trabajo. Los dos son complementarios: el modo automático elimina solicitudes por herramienta, y /goal elimina solicitudes por turno.
Los enfoques anteriores mantienen la sesión actual en ejecución. También puede programar trabajo que se ejecute independientemente de cualquier sesión abierta, como pruebas nocturnas o triaje matutino. Consulte opciones de programación para rutinas en la nube y tareas programadas de escritorio.

Usar /goal

Solo un objetivo puede estar activo por sesión. El mismo comando establece, verifica y lo borra según el argumento.

Establecer un objetivo

Ejecute /goal seguido de la condición que desea que se cumpla. Si ya hay un objetivo activo, el nuevo lo reemplaza.
Establecer un objetivo inicia un turno inmediatamente, con la condición misma como directiva. No necesita enviar un mensaje separado. Mientras el objetivo está activo, un indicador ◎ /goal active muestra cuánto tiempo lleva ejecutándose el objetivo. Un objetivo no cambia su modo de permisos. Para permitir que los turnos de objetivo se ejecuten sin supervisión, ejecute /goal en modo automático. En modo Manual, Claude aún pregunta antes de llamadas a herramientas que su configuración no permita, como el comando de prueba anterior. Mientras el objetivo está activo, la transcripción muestra cada veredicto que devuelve el evaluador, y puede presionar Ctrl+O para ver la razón detrás del mismo. La vista de estado también muestra la razón más reciente, para que pueda ver hacia dónde está trabajando Claude a continuación.

Escribir una condición efectiva

El evaluador juzga su condición contra lo que Claude ha expuesto en la conversación. No ejecuta comandos ni lee archivos de forma independiente, así que escriba la condición como algo que la propia salida de Claude pueda demostrar. “Todas las pruebas en test/auth pasan” funciona porque Claude ejecuta las pruebas y el resultado aparece en la transcripción para que el evaluador lo lea. Una condición que se mantiene a lo largo de muchos turnos generalmente tiene:
  • Un estado final medible: un resultado de prueba, un código de salida de compilación, un recuento de archivos, una cola vacía
  • Una verificación establecida: cómo Claude debe probarlo, como “npm test sale con 0” o “git status está limpio”
  • Restricciones que importan: cualquier cosa que no debe cambiar en el camino, como “ningún otro archivo de prueba se modifica”
La condición puede tener hasta 4.000 caracteres. Para limitar cuánto tiempo se ejecuta un objetivo, incluya una cláusula de turno o tiempo en la condición, como or stop after 20 turns. Claude informa el progreso contra esa cláusula cada turno y el evaluador la juzga desde la conversación.

Verificar estado

Ejecute /goal sin argumentos para ver el estado actual.
Si un objetivo está activo, el estado muestra:
  • La condición
  • Cuánto tiempo lleva ejecutándose
  • Cuántos turnos se han evaluado
  • El gasto de tokens actual
  • La razón más reciente del evaluador
El recuento de turnos y la razón más reciente aparecen después de que se haya ejecutado la primera evaluación. Si no hay un objetivo activo pero uno se logró anteriormente en la sesión, el estado muestra la condición lograda junto con su duración, recuento de turnos y gasto de tokens.

Borrar un objetivo

Ejecute /goal clear para eliminar un objetivo activo antes de que se resuelva.
Claude imprime Goal cleared: seguido de la condición para confirmar, o No goal set si nada estaba activo. stop, off, reset, none y cancel se aceptan como alias para clear. Ejecutar /clear para iniciar una nueva conversación también elimina cualquier objetivo activo.

Reanudar con un objetivo activo

Cuando reanuda una sesión, Claude Code restaura un objetivo que aún estaba activo cuando terminó la sesión. Claude Code lo restaura en cada ruta de reanudación: --continue, --resume con un ID de sesión, nombre o ruta de archivo de transcripción, y el selector de sesión. Antes de v2.1.239, Claude Code restauraba el objetivo en cada ruta excepto el selector claude --resume. Claude Code lleva la condición pero reinicia el recuento de turnos, el temporizador y la línea de base de gasto de tokens. No restaura un objetivo que ya se logró o se borró.

Ejecutar de forma no interactiva

/goal funciona en modo no interactivo, en la aplicación de escritorio y a través de Control Remoto. Establecer un objetivo con -p ejecuta el bucle hasta su finalización en una sola invocación:
Con la salida de texto predeterminada, nada se imprime hasta que se termine la ejecución, por lo que un objetivo que se ejecuta muchos turnos puede parecer atascado. Agregue --output-format stream-json --verbose para emitir cada mensaje mientras se ejecuta el bucle. Interrumpa el proceso con Ctrl+C para detener un objetivo no interactivo antes de que se resuelva.

Cómo funciona la evaluación

/goal es un envoltorio alrededor de un Stop hook basado en solicitud con alcance de sesión. Cada vez que Claude termina un turno, Claude Code envía la condición y la conversación hasta ahora a su modelo pequeño y rápido configurado, que por defecto es Haiku en la API de Claude; en un proveedor de terceros, consulte su página de proveedor para conocer el valor predeterminado de la plataforma. El modelo devuelve uno de tres veredictos, cada uno con una breve razón:
  • Aún no se cumple: Claude sigue trabajando y toma la razón como orientación para el siguiente turno.
  • Cumplido: Claude Code borra el objetivo y registra una entrada lograda en la transcripción.
  • Imposible: el evaluador juzgó que la condición nunca puede satisfacerse. Claude Code borra el objetivo y registra una entrada fallida en la transcripción junto con la razón. No necesita borrarla usted mismo.
Si Claude sigue respondiendo al evaluador sin hacer progreso (sin uso de herramientas durante varios turnos seguidos), Claude Code detiene el bucle, imprime una advertencia y devuelve el control a usted con el objetivo aún establecido. La evaluación se reanuda después de su siguiente solicitud. La guía de hooks explica el mecanismo subyacente.

Cuando un turno falla

Cuando un turno falla, Claude Code borra el objetivo si el error es uno que usted tiene que corregir. Después de cualquier otro error, el objetivo permanece establecido.

Los errores que debe corregir borran el objetivo

Si un turno falla en un error que no se borrará hasta que lo corrija, Claude Code borra el objetivo e imprime una advertencia nombrando la causa. La advertencia comienza con Goal cleared after an unrecoverable error y termina con Run /goal again to continue. Corrija la causa, luego establezca el objetivo nuevamente con /goal <condition>. Cuatro tipos de fallo borran el objetivo:
  • Un fallo de autenticación, cuando Claude Code gestiona sus propias credenciales. Cuando un host las gestiona por usted, como la aplicación de escritorio, la extensión de VS Code o una sesión en la nube, Claude Code deja el objetivo activo porque el host restaura el acceso por su cuenta.
  • Un saldo de crédito agotado
  • Un desbordamiento de contexto que auto-compact no pudo borrar
  • Un modelo que no está disponible

Otros errores reintentan o pausan el objetivo

Después de cualquier otro fallo, el objetivo permanece establecido. En una sesión interactiva en Claude Code v2.1.269 o posterior, Claude Code también imprime una línea nombrando la causa e intenta de nuevo por su cuenta o espera a usted:
  • Reintentar: después de un fallo que tiende a resolverse por sí solo, como un servidor sobrecargado o una conexión perdida, un aviso que comienza con Goal still active muestra la espera antes del siguiente intento. Después de tres reintentos automáticos, el objetivo se pausa en su lugar.
  • Pausar: después de un fallo que un reintento solo repetiría, como un límite de velocidad de API, un límite de uso de claude.ai, o un hook que terminó el turno, un aviso que comienza con Goal paused nombra la causa. Si la sesión está esperando continuar automáticamente cuando se restablece un límite de uso, Claude reanuda el trabajo hacia el objetivo entonces.
Envíe un mensaje en cualquier momento para iniciar el siguiente turno inmediatamente. Para desactivar los reintentos automáticos, establezca CLAUDE_CODE_GOAL_CHECKIN_MINUTES en 0, lo que también desactiva las verificaciones.

El trabajo en segundo plano difiere la evaluación

Si un subagente o un comando de shell en segundo plano aún se está ejecutando cuando termina un turno, Claude Code omite la evaluación para ese turno. Evalúa al final del siguiente turno que termina sin trabajo en segundo plano ejecutándose. Cuando el trabajo en segundo plano termina, Claude Code entrega el resultado a Claude como un nuevo turno, por lo que no tiene que solicitar. Una vez que el trabajo en segundo plano ha mantenido el objetivo esperando durante 30 minutos, se debe una verificación. En la verificación, Claude Code enumera las tareas en ejecución y le pide a Claude que lea su salida, siga esperando si están progresando, y corrija o detenga cualquiera que esté atascada. Después de la primera verificación, Claude Code espera el doble de tiempo antes de cada verificación posterior, hasta cuatro veces el primer intervalo: con el valor predeterminado, 1 hora después de la primera verificación, luego cada 2 horas. Claude Code entrega una verificación vencida, la primera incluida, de una de dos maneras:
  • Cuando termina un turno: Claude Code entrega la verificación al final del siguiente turno que termina con el trabajo aún en ejecución. En una sesión no interactiva, como una iniciada con -p, esta es la única forma en que Claude Code entrega verificaciones.
  • Mientras la sesión está inactiva: en una sesión interactiva, Claude Code también inicia un turno por su cuenta para entregar la verificación en lugar de esperar su siguiente solicitud. Si el trabajo en segundo plano se ha detenido sin reportar un resultado, Claude Code le pide a Claude que continúe hacia el objetivo. Claude Code inicia como máximo tres verificaciones inactivas por objetivo entre sus solicitudes. En la tercera verificación inactiva, Claude Code dice que las verificaciones inactivas se pausan hasta que envíe otra solicitud. Antes de v2.1.246, las verificaciones inactivas eran ilimitadas. Las verificaciones inactivas requieren Claude Code v2.1.236 o posterior.
Antes de v2.1.239, solo las verificaciones inactivas se retrasaban de esta manera; una verificación entregada al final de un turno se repetía en el primer intervalo. Para cambiar el primer intervalo, establezca CLAUDE_CODE_GOAL_CHECKIN_MINUTES. Claude Code usa su valor en lugar del intervalo de 30 minutos y escala los intervalos posteriores con él. Establézcalo en 0 para desactivar las verificaciones y los reintentos automáticos. Las verificaciones requieren Claude Code v2.1.234 o posterior.

Modelo de evaluación y costo

Para evaluar en un modelo diferente, establezca ANTHROPIC_DEFAULT_HAIKU_MODEL.
Claude Code lee ANTHROPIC_DEFAULT_HAIKU_MODEL en todas partes donde usa el modelo pequeño y rápido, no solo para la evaluación de /goal. Cuando lo establece, Claude Code también resuelve el alias haiku a ese modelo y ejecuta funcionalidad en segundo plano, como la resumición de conversaciones, en él.
El evaluador se ejecuta en cualquier proveedor para el que esté configurada su sesión. No llama a herramientas, por lo que solo puede juzgar lo que Claude ya ha presentado en la conversación.
Los tokens de evaluación se facturan en el modelo pequeño y rápido configurado para su proveedor y son típicamente insignificantes en comparación con el gasto de turno principal.

Requisitos

Claude Code pone /goal disponible bajo la misma regla de confianza del espacio de trabajo que los hooks en archivos de configuración, porque el evaluador es parte del sistema de hooks. /goal también no está disponible cuando disableAllHooks es true después de que se aplica la precedencia de configuración, o cuando allowManagedHooksOnly se establece en la configuración administrada. En cada caso, el comando le indica por qué en lugar de no hacer nada silenciosamente.

Ver también