Exec en segundo plano + herramienta de procesos
OpenClaw ejecuta comandos de shell mediante la herramientaexec y mantiene las tareas de larga duración en memoria. La herramienta process gestiona esas sesiones en segundo plano.
Herramienta exec
Parámetros clave:command(obligatorio)yieldMs(predeterminado 10000): pasa automáticamente a segundo plano después de este retrasobackground(bool): pasar a segundo plano inmediatamentetimeout(segundos, predeterminado 1800): matar el proceso después de este tiempo de esperaelevated(bool): ejecutar fuera del sandbox si el modo elevado está habilitado/permitido (gatewayde forma predeterminada, onodecuando el destino de exec esnode)- ¿Necesitas un TTY real? Establece
pty: true. workdir,env
- Las ejecuciones en primer plano devuelven la salida directamente.
- Cuando se ejecuta en segundo plano (explícitamente o por tiempo de espera), la herramienta devuelve
status: "running"+sessionIdy una cola breve. - La salida se mantiene en memoria hasta que se sondea o se borra la sesión.
- Si la herramienta
processno está permitida,execse ejecuta de forma síncrona e ignorayieldMs/background. - Los comandos exec generados reciben
OPENCLAW_SHELL=execpara reglas de shell/perfil con reconocimiento de contexto. - Para trabajo de larga duración que empieza ahora, inícialo una vez y confía en la activación automática por finalización cuando esté habilitada y el comando emita salida o falle.
- Si la activación automática por finalización no está disponible, o necesitas confirmación
de éxito silencioso para un comando que terminó correctamente sin salida, usa
processpara confirmar la finalización. - No emules recordatorios ni seguimientos diferidos con bucles
sleepni sondeo repetido; usa cron para trabajo futuro.
Puente de procesos hijo
Al generar procesos hijo de larga duración fuera de las herramientas exec/process (por ejemplo, reapariciones de la CLI o utilidades del gateway), adjunta la utilidad de puente de procesos hijo para que las señales de terminación se reenvíen y los listeners se desacoplen al salir o producirse un error. Esto evita procesos huérfanos en systemd y mantiene un comportamiento de apagado coherente entre plataformas. Anulaciones de entorno:PI_BASH_YIELD_MS: yield predeterminado (ms)PI_BASH_MAX_OUTPUT_CHARS: límite de salida en memoria (caracteres)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: límite pendiente de stdout/stderr por flujo (caracteres)PI_BASH_JOB_TTL_MS: TTL para sesiones terminadas (ms, limitado entre 1 min y 3 h)
tools.exec.backgroundMs(predeterminado 10000)tools.exec.timeoutSec(predeterminado 1800)tools.exec.cleanupMs(predeterminado 1800000)tools.exec.notifyOnExit(predeterminado true): encola un evento del sistema + solicita heartbeat cuando finaliza un exec en segundo plano.tools.exec.notifyOnExitEmptySuccess(predeterminado false): cuando es true, también encola eventos de finalización para ejecuciones en segundo plano exitosas que no produjeron salida.
Herramienta process
Acciones:list: sesiones en ejecución + terminadaspoll: drenar salida nueva de una sesión (también informa del estado de salida)log: leer la salida agregada (admiteoffset+limit)write: enviar stdin (data,eofopcional)send-keys: enviar tokens de teclas explícitos o bytes a una sesión respaldada por PTYsubmit: enviar Enter / retorno de carro a una sesión respaldada por PTYpaste: enviar texto literal, opcionalmente envuelto en modo de pegado entre corcheteskill: terminar una sesión en segundo planoclear: eliminar una sesión terminada de la memoriaremove: matar si está en ejecución; de lo contrario, borrar si ha terminado
- Solo las sesiones en segundo plano se listan/se conservan en memoria.
- Las sesiones se pierden al reiniciar el proceso (sin persistencia en disco).
- Los registros de sesión solo se guardan en el historial de chat si ejecutas
process poll/logy se registra el resultado de la herramienta. processtiene alcance por agente; solo ve sesiones iniciadas por ese agente.- Usa
poll/logpara estado, registros, confirmación de éxito silencioso o confirmación de finalización cuando la activación automática por finalización no esté disponible. - Usa
write/send-keys/submit/paste/killcuando necesites entrada o intervención. process listincluye unnamederivado (verbo del comando + objetivo) para búsquedas rápidas.process logusaoffset/limitpor líneas.- Cuando se omiten
offsetylimit, devuelve las últimas 200 líneas e incluye una indicación de paginación. - Cuando se proporciona
offsety se omitelimit, devuelve desdeoffsethasta el final (sin limitarse a 200). - El sondeo es para estado bajo demanda, no para programación en bucle de espera. Si el trabajo debe ocurrir más tarde, usa cron.