Exec in background + strumento Process
OpenClaw esegue i comandi shell tramite lo strumentoexec e mantiene in memoria le attività di lunga durata. Lo strumento process gestisce queste sessioni in background.
Strumento exec
Parametri chiave:command(obbligatorio)yieldMs(predefinito 10000): passa automaticamente in background dopo questo ritardobackground(bool): passa immediatamente in backgroundtimeout(secondi, predefinito 1800): termina il processo dopo questo timeoutelevated(bool): esegue fuori dalla sandbox se la modalità elevata è abilitata/consentita (gatewayper impostazione predefinita, oppurenodequando la destinazione exec ènode)- Serve un vero TTY? Imposta
pty: true. workdir,env
- Le esecuzioni in primo piano restituiscono direttamente l’output.
- Quando passa in background (esplicitamente o per timeout), lo strumento restituisce
status: "running"+sessionIde una breve coda dell’output. - L’output viene mantenuto in memoria finché la sessione non viene sondata o rimossa.
- Se lo strumento
processnon è consentito,execviene eseguito in modo sincrono e ignorayieldMs/background. - I comandi exec avviati ricevono
OPENCLAW_SHELL=execper regole della shell/profilo sensibili al contesto. - Per attività di lunga durata che iniziano ora, avviale una sola volta e fai affidamento sul risveglio automatico al completamento quando è abilitato e il comando produce output o fallisce.
- Se il risveglio automatico al completamento non è disponibile, oppure ti serve la conferma di successo silenzioso per un comando che è terminato correttamente senza output, usa
processper confermare il completamento. - Non simulare promemoria o follow-up ritardati con loop
sleepo polling ripetuto; usa cron per il lavoro futuro.
Bridging dei processi figli
Quando avvii processi figli di lunga durata al di fuori degli strumenti exec/process (per esempio, respawn della CLI o helper del gateway), collega l’helper di bridging dei processi figli in modo che i segnali di terminazione vengano inoltrati e i listener vengano scollegati in caso di uscita/errore. Questo evita processi orfani su systemd e mantiene coerente il comportamento di arresto su tutte le piattaforme. Override dell’ambiente:PI_BASH_YIELD_MS: yield predefinito (ms)PI_BASH_MAX_OUTPUT_CHARS: limite di output in memoria (caratteri)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: limite stdout/stderr in sospeso per stream (caratteri)PI_BASH_JOB_TTL_MS: TTL per le sessioni terminate (ms, limitato a 1m–3h)
tools.exec.backgroundMs(predefinito 10000)tools.exec.timeoutSec(predefinito 1800)tools.exec.cleanupMs(predefinito 1800000)tools.exec.notifyOnExit(predefinito true): mette in coda un evento di sistema + richiede un heartbeat quando un exec in background termina.tools.exec.notifyOnExitEmptySuccess(predefinito false): quando è true, mette in coda anche eventi di completamento per esecuzioni in background riuscite che non hanno prodotto output.
Strumento process
Azioni:list: sessioni in esecuzione + terminatepoll: scarica il nuovo output per una sessione (riporta anche lo stato di uscita)log: legge l’output aggregato (supportaoffset+limit)write: invia stdin (data,eoffacoltativo)send-keys: invia token di tasti espliciti o byte a una sessione supportata da PTYsubmit: invia Enter / ritorno a capo a una sessione supportata da PTYpaste: invia testo letterale, facoltativamente racchiuso nella modalità di incolla delimitatakill: termina una sessione in backgroundclear: rimuove dalla memoria una sessione terminataremove: termina se è in esecuzione, altrimenti rimuove se è terminata
- Solo le sessioni passate in background vengono elencate/conservate in memoria.
- Le sessioni vengono perse al riavvio del processo (nessuna persistenza su disco).
- I log delle sessioni vengono salvati nella cronologia chat solo se esegui
process poll/loge il risultato dello strumento viene registrato. processè limitato per agente; vede solo le sessioni avviate da quell’agente.- Usa
poll/logper stato, log, conferma di successo silenzioso o conferma di completamento quando il risveglio automatico al completamento non è disponibile. - Usa
write/send-keys/submit/paste/killquando ti servono input o interventi. process listinclude unnamederivato (verbo del comando + destinazione) per scansioni rapide.process logusaoffset/limitbasati sulle righe.- Quando sia
offsetsialimitvengono omessi, restituisce le ultime 200 righe e include un suggerimento per l’impaginazione. - Quando viene fornito
offsetelimitviene omesso, restituisce daoffsetfino alla fine (non limitato a 200). - Il polling serve per lo stato on-demand, non per pianificare cicli di attesa. Se il lavoro deve avvenire in seguito, usa cron.