Manejo de comandos en segundo plano con exec y process
¿Alguna vez has lanzado un comando que tarda una eternidad y bloquea tu flujo de trabajo? Es frustrante esperar a que una tarea termine sin saber si sigue progresando o si se quedó colgada en el olvido.
Gestionar procesos que deben correr en segundo plano suele ser un problema, especialmente cuando necesitas recuperar la salida más tarde o enviar comandos adicionales mientras la tarea sigue activa. OpenClaw resuelve esto permitiendo que los comandos de shell se mantengan en memoria.
Requisitos previos
Sección titulada «Requisitos previos»Para usar estas funciones, necesitas cumplir con lo siguiente:
- OpenClaw instalado y en funcionamiento.
- Acceso a las herramientas
execyprocess. - Modo
elevatedhabilitado si necesitas ejecutar comandos directamente en el host. - Configuración de variables de entorno como
PI_BASH_YIELD_MSsi deseas ajustar los valores por defecto.
Inicio rápido
Sección titulada «Inicio rápido»Sigue estos pasos para gestionar tus procesos en menos de 5 minutos.
1. Ejecutar una tarea con auto-background
Sección titulada «1. Ejecutar una tarea con auto-background»Si un comando tarda más del tiempo definido en yieldMs (10 segundos por defecto), pasará automáticamente a segundo plano.
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000}2. Iniciar una tarea directamente en segundo plano
Sección titulada «2. Iniciar una tarea directamente en segundo plano»Puedes forzar que el comando no bloquee la ejecución usando el parámetro background.
{ "tool": "exec", "command": "npm run build", "background": true}3. Consultar el estado y obtener la salida
Sección titulada «3. Consultar el estado y obtener la salida»Usa la herramienta process con la acción poll para ver si el proceso terminó y obtener los nuevos logs.
{ "tool": "process", "action": "poll", "sessionId": "<id_de_la_sesion>"}4. Interactuar con el proceso
Sección titulada «4. Interactuar con el proceso»Si el comando requiere una respuesta, puedes enviar datos a stdin.
{ "tool": "process", "action": "write", "sessionId": "<id_de_la_sesion>", "data": "y\n"}Solución de problemas
Sección titulada «Solución de problemas»Aquí tienes soluciones para los problemas descritos en la documentación:
execignora el segundo plano: Si la herramientaprocessestá desactivada en tu configuración,execsiempre correrá de forma síncrona e ignorará los parámetrosyieldMsybackground.- Sesiones desaparecidas: Las sesiones se guardan en memoria. Si reinicias el proceso de OpenClaw, todas las sesiones activas y terminadas se perderán porque no hay persistencia en disco.
- No encuentras una sesión: La herramienta
processestá limitada al agente que la creó. Un agente no puede ver ni gestionar las sesiones iniciadas por otro. - Logs incompletos en el historial: Los logs de las sesiones solo se guardan en el historial del chat si ejecutas explícitamente
process polloprocess logy se registra el resultado.
Si necesitas ayuda personalizada, utiliza el AI Setup Assistant.
Próximos pasos
Sección titulada «Próximos pasos»- Configuración avanzada de
tools.exec.timeoutSecycleanupMs. - Uso de Child process bridging para evitar procesos huérfanos en systemd.
OpenClaw Expert
Sigues atascado?
Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.