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(requerido)yieldMs(predeterminado 10000): pasa automáticamente a segundo plano después de este retrasobackground(bool): pasar inmediatamente a segundo planotimeout(segundos, predeterminado 1800): finaliza el proceso después de este tiempo de esperaelevated(bool): ejecutar en el host si el modo elevado está habilitado/permitido- ¿Necesita un TTY real? Configure
pty: true. workdir,env
- Las ejecuciones en primer plano devuelven la salida directamente.
- Cuando se ejecuta en segundo plano (explícito o por tiempo de espera), la herramienta devuelve
status: "running"+sessionIdy una cola corta. - La salida se mantiene en memoria hasta que la sesión se consulte o se borre.
- Si la herramienta
processno está permitida,execse ejecuta de forma sincrónica e ignorayieldMs/background.
Paréntesis de proceso hijo
Al generar procesos secundarios de larga duración fuera de las herramientas exec/proceso (por ejemplo, reinicios de la CLI o ayudantes del Gateway), adjunte el helper de puente de procesos secundarios para que las señales de terminación se reenvíen y los listeners se desacoplen al salir/error. Esto evita procesos huérfanos en systemd y mantiene un comportamiento de apagado consistente entre plataformas. Anulaciones de entorno:PI_BASH_YIELD_MS: rendimiento predeterminado (ms)PI_BASH_MAX_OUTPUT_CHARS: límite de salida en memoria (caracteres)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: límite de stdout/stderr pendiente por flujo (caracteres)PI_BASH_JOB_TTL_MS: TTL para sesiones finalizadas (ms, acotado a 1 m–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 un exec en segundo plano finaliza.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 + finalizadaspoll: drenar nueva salida de una sesión (también informa el estado de salida)log: leer la salida agregada (admiteoffset+limit)write: enviar stdin (data,eofopcional)kill: terminar una sesión en segundo planoclear: eliminar una sesión finalizada de la memoriaremove: matar si está en ejecución; de lo contrario, borrar si está finalizada
- Solo las sesiones en segundo plano se listan/persisten en memoria.
- Las sesiones se pierden al reiniciar el proceso (sin persistencia en disco).
- Los registros de la sesión solo se guardan en el historial del chat si ejecuta
process poll/logy el resultado de la herramienta queda registrado. processtiene alcance por agente; solo ve las sesiones iniciadas por ese agente.process listincluye unnamederivado (verbo del comando + destino) para revisiones rápidas.process logusaoffset/limitbasados en líneas (omitaoffsetpara obtener las últimas N líneas).- Cuando se omiten tanto
offsetcomolimit, 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 limitar a 200).