exec e mantiene in memoria le attività di lunga durata. Lo strumento process gestisce queste sessioni in background.
Strumento exec
Parametri:
Comportamento:
- Le esecuzioni in primo piano restituiscono direttamente l’output.
- Quando l’esecuzione passa in background (esplicitamente o allo scadere di
yieldMs), lo strumento restituiscestatus: "running"+sessionIde una breve parte finale dell’output. - Le esecuzioni in background e quelle con
yieldMsereditanotools.exec.timeoutSec, a meno che la chiamata non specifichi untimeoutesplicito. - L’output rimane in memoria finché la sessione non viene interrogata o cancellata.
- Se lo strumento
processnon è consentito,execviene eseguito in modo sincrono e ignorayieldMs/background. - I comandi exec avviati ricevono
OPENCLAW_SHELL=execper le regole di shell/profilo sensibili al contesto. - Per un’attività di lunga durata che inizia ora: avviarla una sola volta e affidarsi alla riattivazione automatica al completamento (se abilitata) quando il comando produce output o non riesce.
- Se la riattivazione automatica al completamento non è disponibile, oppure è necessaria la conferma di un completamento senza output per un comando che termina correttamente, interrogare lo stato con
process. - Non simulare promemoria o operazioni successive differite con cicli
sleepo interrogazioni ripetute: usare Cron per le attività future.
Sostituzioni tramite variabili di ambiente
Configurazione (preferibile alle sostituzioni tramite variabili di ambiente)
Collegamento dei processi figlio
Quando si avviano processi figlio di lunga durata al di fuori degli strumenti exec/process (riavvii della CLI, helper del Gateway), collegare l’helper bridge per i processi figlio, in modo che i segnali di terminazione vengano inoltrati e i listener vengano scollegati all’uscita o in caso di errore. Ciò evita processi orfani in systemd e mantiene coerente l’arresto tra le diverse piattaforme.Strumento process
Azioni:
Note:
- Vengono elencate e conservate solo le sessioni in background, esclusivamente in memoria e non su disco. Le sessioni vengono perse al riavvio del processo.
- Una sessione in background attiva impedisce la sospensione cooperativa dell’host e il riavvio sicuro del Gateway finché il proprietario del processo non ne conferma l’effettiva terminazione.
process removepuò nascondere immediatamente una sessione in esecuzione dopo averne richiesto la terminazione; la sospensione e il riavvio rimangono bloccati finché la terminazione non viene confermata.- I registri delle sessioni vengono salvati nella cronologia della chat solo se si esegue
process poll/loge il risultato dello strumento viene registrato. processha un ambito per agente; vede solo le sessioni avviate da quell’agente.- Usare
poll/logper ottenere lo stato, i registri o la conferma del completamento quando la riattivazione automatica al completamento non è disponibile. - Usare
logprima di ripristinare una CLI interattiva, in modo da visualizzare insieme la trascrizione corrente, lo stato di stdin e l’indicazione di attesa dell’input. - Usare
write/send-keys/submit/paste/killquando sono necessari input o interventi. process listinclude unnamederivato (verbo del comando + destinazione) per una rapida consultazione.process list,pollelogsegnalanowaitingForInputsolo quando la sessione dispone ancora di stdin scrivibile ed è inattiva da un periodo superiore alla soglia di attesa dell’input (valore predefinito: 15000 ms,OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS).process logusaoffset/limitbasati sulle righe. Quando entrambi sono omessi, restituisce le ultime 200 righe con un suggerimento per la paginazione. Quandooffsetè impostato elimitnon lo è, restituisce daoffsetfino alla fine (senza il limite di 200).- Il
timeoutdipollattende fino al numero specificato di millisecondi prima di restituire il risultato; i valori superiori a 30000 vengono limitati a 30000. - L’interrogazione serve per ottenere lo stato su richiesta, non per pianificare cicli di attesa. Se l’attività deve essere eseguita in un secondo momento, usare Cron.