Gateway
Uitvoering op de achtergrond en procestool
OpenClaw voert shellopdrachten uit via de tool exec en bewaart langlopende taken in het geheugen. De tool process beheert deze achtergrondsessies.
Tool exec
Parameters:
| Parameter | Beschrijving |
|---|---|
command |
Vereist. Uit te voeren shellopdracht. |
workdir |
Werkmap; laat weg om de standaard-cwd te gebruiken. |
env |
Extra omgevingsvariabelen voor de opdracht. |
yieldMs |
Aantal milliseconden dat wordt gewacht voordat de taak naar de achtergrond gaat (standaard 10000). |
background |
Voer onmiddellijk op de achtergrond uit. |
timeout |
Time-out in seconden (standaard tools.exec.timeoutSec); beëindigt het proces wanneer deze verstrijkt. Stel timeout: 0 in om de time-out van het exec-proces voor die aanroep uit te schakelen. |
pty |
Voer indien beschikbaar uit in een pseudoterminal (CLI's die een TTY vereisen, codeeragents). |
elevated |
Voer buiten de sandbox uit als de verhoogde modus is ingeschakeld/toegestaan (standaard gateway, of node wanneer het uitvoerdoel node is). |
host |
Uitvoerdoel: auto, sandbox, gateway of node. |
node |
Node-id/-naam, gebruikt met host: "node". |
Gedrag:
- Uitvoeringen op de voorgrond retourneren de uitvoer rechtstreeks.
- Wanneer een taak naar de achtergrond gaat (expliciet of door een
yieldMs-time-out), retourneert de toolstatus: "running"+sessionIden een kort laatste deel van de uitvoer. - Uitvoeringen op de achtergrond en met
yieldMsnementools.exec.timeoutSecover, tenzij de aanroep een explicietetimeoutmeegeeft. - Uitvoer blijft in het geheugen totdat de sessie wordt opgevraagd of gewist.
- Als de tool
processniet is toegestaan, wordtexecsynchroon uitgevoerd en wordenyieldMs/backgroundgenegeerd. - Gestarte exec-opdrachten ontvangen
OPENCLAW_SHELL=execvoor contextbewuste shell-/profielregels. - Voor langlopend werk dat nu begint: start het eenmaal en vertrouw op de automatische activering bij voltooiing (indien ingeschakeld) zodra de opdracht uitvoer produceert of mislukt.
- Als automatische activering bij voltooiing niet beschikbaar is, of als je bevestiging van een stille succesvolle uitvoering nodig hebt voor een opdracht die zonder uitvoer correct afsluit, vraag je de status op met
process. - Boots herinneringen of uitgestelde vervolgacties niet na met
sleep-lussen of herhaald opvragen — gebruik Cron voor toekomstig werk.
Overschrijvingen via omgevingsvariabelen
| Variabele | Effect |
|---|---|
OPENCLAW_BASH_YIELD_MS |
Standaardwachttijd voordat de taak naar de achtergrond gaat (ms). Standaard 10000, begrensd op 10-120000. |
OPENCLAW_BASH_MAX_OUTPUT_CHARS |
Limiet voor uitvoer in het geheugen (tekens). |
OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS |
Limiet voor wachtende stdout/stderr per stroom (tekens). |
OPENCLAW_BASH_JOB_TTL_MS |
TTL voor voltooide sessies (ms), begrensd op 1 min.-3 uur. |
OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS |
Drempel voor inactieve uitvoer voordat schrijfbare achtergrondsessies worden gemarkeerd als waarschijnlijk wachtend op invoer. Standaard 15000. |
Configuratie (bij voorkeur in plaats van overschrijvingen via omgevingsvariabelen)
| Sleutel | Standaard | Effect |
|---|---|---|
tools.exec.backgroundMs |
10000 | Hetzelfde als OPENCLAW_BASH_YIELD_MS. |
tools.exec.timeoutSec |
1800 | Standaardtime-out per aanroep. |
tools.exec.cleanupMs |
1800000 | Hetzelfde als OPENCLAW_BASH_JOB_TTL_MS. |
tools.exec.notifyOnExit |
true | Zet een systeemgebeurtenis in de wachtrij en vraagt om een Heartbeat wanneer een exec op de achtergrond afsluit. |
tools.exec.notifyOnExitEmptySuccess |
false | Zet ook voltooiingsgebeurtenissen in de wachtrij voor succesvolle uitvoeringen op de achtergrond zonder uitvoer. |
Overbrugging van onderliggende processen
Wanneer langlopende onderliggende processen buiten de tools exec/process worden gestart (herstarts van CLI's, Gateway-helpers), koppel je de overbruggingshelper voor onderliggende processen zodat beëindigingssignalen worden doorgestuurd en listeners bij afsluiten/fouten worden losgekoppeld. Dit voorkomt verweesde processen onder systemd en houdt het afsluitgedrag consistent op verschillende platforms.
Tool process
Acties:
| Actie | Effect |
|---|---|
list |
Actieve + voltooide sessies. |
poll |
Haal nieuwe uitvoer voor een sessie op (rapporteert ook de afsluitstatus). |
log |
Lees samengevoegde uitvoer en aanwijzingen voor invoerherstel. Ondersteunt offset + limit. |
write |
Stuur stdin (data, optioneel eof). |
send-keys |
Stuur expliciete toetstokens of bytes naar een door een PTY ondersteunde sessie. |
submit |
Stuur Enter/regeleinde naar een door een PTY ondersteunde sessie. |
paste |
Stuur letterlijke tekst, optioneel omsloten door de modus voor gemarkeerd plakken. |
kill |
Beëindig een achtergrondsessie. |
clear |
Verwijder een voltooide sessie uit het geheugen. |
remove |
Beëindig de sessie als deze actief is; wis deze anders als deze voltooid is. |
Opmerkingen:
- Alleen achtergrondsessies worden weergegeven/bewaard — uitsluitend in het geheugen, niet op schijf. Sessies gaan verloren wanneer het proces opnieuw wordt gestart.
- Een actieve achtergrondsessie blokkeert coöperatieve opschorting van de host en een veilige herstart van de Gateway totdat de proceseigenaar bevestigt dat het proces daadwerkelijk is afgesloten.
process removekan een actieve sessie onmiddellijk verbergen nadat beëindiging is aangevraagd; opschorting en herstart blijven geblokkeerd totdat het afsluiten is bevestigd.- Sessielogboeken worden alleen in de chatgeschiedenis opgeslagen als je
process poll/loguitvoert en het toolresultaat wordt vastgelegd. processheeft een bereik per agent; de tool ziet alleen sessies die door die agent zijn gestart.- Gebruik
poll/logvoor status, logboeken of bevestiging van voltooiing wanneer automatische activering bij voltooiing niet beschikbaar is. - Gebruik
logvoordat je een interactieve CLI herstelt, zodat het huidige transcript, de stdin-status en de aanwijzing dat op invoer wordt gewacht samen zichtbaar zijn. - Gebruik
write/send-keys/submit/paste/killwanneer invoer of ingrijpen nodig is. process listbevat een afgeleidename(opdrachtwerkwoord + doel) voor snel overzicht.process list,pollenlograpporterenwaitingForInputalleen wanneer de sessie nog schrijfbare stdin heeft en langer inactief is dan de drempel voor wachten op invoer (standaard 15000 ms,OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS).process loggebruikt een regelgebaseerdeoffset/limit. Wanneer beide zijn weggelaten, worden de laatste 200 regels geretourneerd met een bladeraanwijzing. Wanneeroffsetis ingesteld enlimitniet, wordt vanafoffsettot het einde geretourneerd (niet beperkt tot 200).- De
timeoutvanpollwacht maximaal het opgegeven aantal milliseconden voordat de aanroep retourneert; waarden boven 30000 worden begrensd op 30000. - Opvragen is bedoeld voor status op aanvraag, niet voor het plannen van wachtlussen. Als het werk later moet plaatsvinden, gebruik je Cron.
Voorbeelden
Voer een langlopende taak uit en vraag de status later op:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }{ "tool": "process", "action": "poll", "sessionId": "<id>" }Inspecteer een interactieve sessie voordat je invoer verstuurt:
{ "tool": "process", "action": "log", "sessionId": "<id>" }Start onmiddellijk op de achtergrond:
{ "tool": "exec", "command": "npm run build", "background": true }Stuur stdin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }Stuur PTY-toetsen:
{ "tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"] }Verstuur de huidige regel:
{ "tool": "process", "action": "submit", "sessionId": "<id>" }Plak letterlijke tekst:
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }