Background Exec + procesværktøj¶
OpenClaw kører shell kommandoer gennem exec værktøj og holder langvarige opgaver i hukommelsen. Værktøjet process styrer disse baggrundssessioner.
exec-værktøj¶
Nøgleparametre:
command(påkrævet)yieldMs(standard 10000): auto‑baggrund efter denne forsinkelsebackground(bool): kør straks i baggrundentimeout(sekunder, standard 1800): dræb processen efter denne timeoutelevated(bool): kør på værten, hvis forhøjet tilstand er aktiveret/tilladt- Har du brug for en rigtig TTY? Sæt
pty: true. workdir,env
Adfærd:
- Forgrundskørsler returnerer output direkte.
- Når den køres i baggrunden (eksplicit eller via timeout), returnerer værktøjet
status: "running"+sessionIdsamt en kort hale. - Output gemmes i hukommelsen, indtil sessionen forespørges eller ryddes.
- Hvis værktøjet
processikke er tilladt, kørerexecsynkront og ignorereryieldMs/background.
Brokobling af underprocesser¶
Ved spawning af langvarige børneprocesser uden for eksekveren/procesværktøjer (f.eks. CLI respawns eller gateway-hjælpere) vedhæfte børneproces-bro-hjælperen, så opsigelsessignaler videresendes og lyttere frigøres på afslutning/fejl. Dette undgår forældreløse processer på systemd og holder shutdown adfærd konsekvent på tværs af platforme.
Miljøoverstyringer:
PI_BASH_YIELD_MS: standard yield (ms)PI_BASH_MAX_OUTPUT_CHARS: outputloft i hukommelsen (tegn)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: loft for afventende stdout/stderr pr. stream (tegn)PI_BASH_JOB_TTL_MS: TTL for afsluttede sessioner (ms, begrænset til 1m–3h)
Konfiguration (foretrukket):
tools.exec.backgroundMs(standard 10000)tools.exec.timeoutSec(standard 1800)tools.exec.cleanupMs(standard 1800000)tools.exec.notifyOnExit(standard true): sæt en systemhændelse i kø + anmod om heartbeat, når en baggrunds-exec afsluttes.
process-værktøj¶
Handlinger:
list: kørende + afsluttede sessionerpoll: dræn nyt output for en session (rapporterer også exit-status)log: læs det aggregerede output (understøtteroffset+limit)write: send stdin (data, valgfrieof)kill: afslut en baggrunds-sessionclear: fjern en afsluttet session fra hukommelsenremove: dræb hvis kørende, ellers ryd hvis afsluttet
Noter:
- Kun sessioner, der kører i baggrunden, listes/gemmes i hukommelsen.
- Sessioner går tabt ved procesgenstart (ingen diskpersistens).
- Sessionslogs gemmes kun i chathistorikken, hvis du kører
process poll/log, og værktøjsresultatet registreres. processer afgrænset pr. agent; den kan kun se sessioner startet af den agent.process listinkluderer en afledtname(kommandoverbum + mål) til hurtige overblik.process logbruger linjebaseretoffset/limit(udeladoffsetfor at hente de sidste N linjer).
Eksempler¶
Kør en lang opgave og forespørg senere:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
Start straks i baggrunden:
{ "tool": "exec", "command": "npm run build", "background": true }
Send stdin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }