Operations Runbook
Procedimientos paso a paso para las operaciones recurrentes. Cada procedimiento es una sección autocontenida que se puede seguir sin leer el resto de la documentación.
Propósito
Este runbook es la referencia del operator. Está escrito para el humano que necesita arreglar algo, reiniciar algo o verificar que algo está funcionando. Cada procedimiento es una sección autocontenida con los prerequisitos, los pasos, el output esperado y la recuperación si el procedimiento falla.
El cheatsheet companion está en Cheatsheet; los health checks están en Health Checks.
Convenciones
- Todas las rutas usan el placeholder
{workspace-root}. La ruta real es el workspace root del operator. - Todos los comandos asumen un shell POSIX. En macOS y Linux es el default.
- Los comandos destructivos se marcan con
[DESTRUCTIVE]. Requieren confirmación explícita. - Los procedimientos asumen que el operator tiene acceso por shell al host.
State review
Verificar el health de todos los gateways, sessions y herramientas.
Procedimiento
-
Comprobar el gateway del Coordinator:
Output esperado: un documento JSON con
"status": "ok". -
Comprobar el gateway del Research Worker:
Output esperado: un documento JSON con
"status": "ok". -
Comprobar el gateway del Media Agent:
Output esperado: un documento JSON con
"status": "ok". -
Listar las sesiones activas:
Output esperado: una lista de session IDs y sus estados.
-
Listar las misiones de research en curso:
Output esperado: una lista de carpetas de misiones. Cada carpeta tiene un
phase.jsoncon un estado no-terminal, o está archivada (estado terminal).
Recuperación
Si un gateway no responde, ver el procedimiento de recuperación del gateway específico más abajo.
Session resume
Continuar trabajo previo sin perder contexto.
Procedimiento
-
Identificar la sesión a reanudar:
-
Reanudar la sesión:
-
Verificar que la sesión está activa:
Recuperación
Si la sesión no se puede reanudar, la causa más común es que el proceso subyacente ha crasheado. Reiniciar el gateway y reintentar.
Worker recovery
Reiniciar el Research Worker tras un crash o tras un cambio de configuración.
Procedimiento
-
Identificar el supervisor:
- En macOS:
launchdcon el LaunchAgent~/Library/LaunchAgents/{worker-launchagent-label}.plist. - En Linux:
systemdcon la unit{worker-systemd-unit}.service.
- En macOS:
-
En macOS:
El flag
-kmata el proceso actual (si lo hay) y lo reinicia.KeepAlive=trueasegura que el supervisor reinicia el proceso si crashea. -
En Linux:
-
Verificar que el worker está up:
Output esperado: un documento JSON con
"status": "ok". -
Verificar que no hay misiones stuck:
Output esperado: una lista de misiones en curso. Si la lista está vacía, todas las misiones están en estado terminal.
Recuperación
Si el worker no arranca:
- Comprobar el fichero de log:
- macOS:
tail -f /Users/{user}/.openclaw-scout/logs/gateway.log - Linux:
sudo journalctl -u {worker-systemd-unit}.service -n 100
- macOS:
- Problemas comunes:
- Puerto ya en uso. Identificar y matar el proceso en conflicto.
- Error de configuración. Validar el fichero de configuración.
- Dependencias faltantes. Instalarlas.
Si una misión está stuck en un estado no-terminal, ver Research Mission Lifecycle → Recovery.
Media Agent recovery
Reiniciar el Media Agent tras un crash o tras un cambio de configuración.
Procedimiento
- Identificar el supervisor (igual que el worker).
- Reiniciar el proceso:
- En macOS:
- En Linux:
- En macOS:
- Verificar que el agent está up:
Coding Assistant invocation
Correr el Coding Assistant no interactivamente para delegar una implementación específica o un análisis.
Procedimiento
El Coding Assistant se invoca mediante un scoped prompt. La invocación exacta es específica del framework; los requisitos documentados son:
- El prompt describe el objetivo y las boundaries, no la implementación.
- El prompt referencia los ficheros relevantes
AGENTS.md,SKILL.mdyTOOL.md. - La invocación tiene el trust level requerido para la tarea:
read-onlypara inspección read-only.workspace-writepara cambios de código dentro del workspace.- Full trust para tareas que requieren acceso de producción (raro; solo con autorización explícita del usuario).
Ejemplo de invocación (ilustrativo):
El prompt file es el implementation prompt descrito en Coding Assistant → Workflow.
Test suite
Correr la suite de tests de un proyecto.
Procedimiento
-
Cambiar al directorio del proyecto:
-
Instalar dependencias (si no están instaladas):
-
Correr los tests:
-
Verificar el output de los tests:
- Todos los tests pasan.
- El report de cobertura está en o por encima del mínimo del proyecto (típicamente 70%).
Audit review
Revisar el audit log del periodo pasado.
Procedimiento
-
Listar los audit reports del periodo:
-
Abrir el report más reciente:
-
Para cada hallazgo, comprobar:
- ¿El hallazgo sigue siendo válido?
- ¿Se ha resuelto?
- ¿La severidad sigue siendo precisa?
-
Actualizar el report con el estado actual.
-
Si se identifican nuevos hallazgos, añadirlos al Catálogo de fallos.
Backup
Respaldar el workspace.
Procedimiento
-
Verificar que el destino del backup está disponible:
-
Correr el script de backup:
-
Verificar el backup:
La entrada más reciente debería ser el backup recién creado.
-
Verificar la integridad del backup:
Recuperación
Si el backup falla:
- Comprobar el espacio en disco en el destino del backup.
- Comprobar los permisos en el destino del backup.
- Comprobar el log del script para el error específico.
Si el backup está corrupto, restaurar del backup previo y documentar el incidente en el audit log.
Browser recovery
Recuperar la instancia del browser cuando crashea o deja de responder.
Procedimiento
-
Cerrar todas las instancias del browser:
-
Arrancar una instancia nueva del browser:
-
Verificar que el browser responde:
Retention
Archivar misiones de research antiguas a cold storage.
Procedimiento
-
Identificar misiones más antiguas que el periodo de retención (default 90 días):
-
Verificar que el cold storage está disponible:
-
Archivar las misiones:
-
Verificar el archive:
-
Eliminar las misiones archivadas del workspace:
Confirmar con el usuario antes de correr este comando.
Coding Assistant killed by timeout
El proceso del Coding Assistant lo mata el OS (SIGKILL) cuando su task o prompt es demasiado grande. El síntoma típico es una línea de log que contiene killed y un return code de 137.
Síntomas
- El Coding Assistant sale con código 137.
- El log muestra
Killedcerca del final de la run. - No hay artefactos ni output parcial en el workspace.
Procedimiento
- No escribas el código a mano. La regla de recuperación del Coding Assistant es absoluta. Para y recupera el assistant antes de hacer cualquier otra cosa.
- Identificar la task que mató al assistant. Normalmente es el fichero más grande o la fase más compleja.
- Dividir la task en prompts más pequeños. La regla recomendada: un fichero por prompt. Los prompts más pequeños tienen menos memoria y menos latencia.
- Re-correr con un timeout más largo (recomendado:
120-180spara tasks pequeñas). - Si el assistant sigue muriendo, considera un split más agresivo: primero el fichero header-only, luego la implementación, luego los tests.
Recuperación
Si el Coding Assistant no se puede recuperar tras tres intentos con prompts progresivamente más pequeños, para y pide ayuda al operator. El operator puede necesitar ajustar el entorno (memoria, swap) o usar un execution path distinto.
Model quota exhausted
La quota de texto del modelo está agotada. El síntoma es un 429 o un quota_exceeded del provider del modelo. La quota de texto está en una rolling window de 5 horas; las quotas de voz, imagen y música son diarias.
Síntomas
- El modelo devuelve un 429 o un
quota_exceeded. - El health probe del Coordinator reporta
quota_exhausted: true. - El fichero de tracking de quota muestra un porcentaje de uso no cero.
Procedimiento
- Identificar qué quota está agotada (texto, voz, imagen, música) leyendo la respuesta del provider del modelo.
- Para la quota de texto, esperar a que la rolling window de 5 horas se resetee. El reset time lo reporta el provider. Durante la espera:
- El Coordinator no debería iniciar nuevas text requests.
- Las background tasks deberían pausarse.
- Se puede informar al usuario de que el assistant está en estado "quota cooldown".
- Para la quota de voz, imagen o música, esperar al reset diario.
- Si hay una task crítica en curso, considera cambiar a un modelo alternativo (si está configurado) o a un execution path de fallback (p. ej., correr una herramienta CLI directamente).
Recuperación
Cuando se resetea la quota:
- Verificar el reset corriendo una text request mínima.
- Reanudar las tasks en curso.
- Actualizar el fichero de tracking de quota con el uso nuevo.
- Si el reset time de la quota no se respeta, loguear el incidente y considerar rotar la API key.
Token pool: all tokens exhausted
Todos los tokens en el token pool de Perplexity del research framework están marcados quota_exhausted. El síntoma es un failed_terminal en la fase P3 con el error no_tokens_available.
Procedimiento
- Leer el fichero de estado del token pool:
- Identificar qué tokens están exhausted y cuáles (si los hay) siguen activos.
- Esperar a que los tokens exhausted se reseteen. Las quotas de Perplexity se resetean diario.
- Si la espera no es aceptable, añadir un token nuevo al pool:
- Editar
{framework-root}/config/token_pool_config.json. - Añadir la entrada del token nuevo.
- Recargar el pool (el framework recarga en cada request; no necesita restart).
- Editar
- Verificar que el token nuevo está en uso leyendo el journal y buscando el campo
namedel token nuevo.
Recuperación
Si el operator no puede añadir un token nuevo, deshabilitar P3 para las misiones afectadas. El DAG maneja que P3 esté ausente (las fases que necesitan synthesis.json se marcarán blocked_missing_input).
Browser CDP target detached
La automatización del browser pierde su conexión con el Chromium DevTools Protocol. El síntoma es un error que contiene Target.detached o connection refused en el puerto CDP (default 18800).
Síntomas
- Las acciones del browser devuelven
connection refusedoTarget.detached. - El Coordinator no puede tomar un snapshot.
- La pestaña del browser sigue abierta pero inalcanzable.
Procedimiento
- Comprobar si el proceso del browser sigue corriendo:
- Si el proceso no está corriendo, reiniciar el browser:
- Si el proceso está corriendo pero no responde, matarlo y reiniciar:
- Verificar que el browser nuevo responde tomando un snapshot de una URL conocida.
Recuperación
Si el browser se detacha repetidamente:
- Comprobar los recursos del host (memoria, CPU).
- Comprobar si hay instancias del browser en conflicto.
- Considerar cambiar a un perfil nuevo.
- Documentar el incidente en el audit log.
Media Lab Server not responding
El Media Lab Server (generación de imágenes y música) no responde en 127.0.0.1:8765. El síntoma es un connection refused o un timeout en la API.
Procedimiento
- Comprobar si el proceso del server está corriendo:
- Si no está corriendo, arrancarlo:
- Verificar que el server está up:
- Si el server está corriendo pero no responde, comprobar el log para el error más reciente.
- Si el server falla repetidamente, comprobar el espacio en disco y los permisos del output directory.