Exec w tle + narzędzie procesów¶
OpenClaw uruchamia polecenia powłoki za pomocą narzędzia exec i przechowuje długotrwałe zadania w pamięci. Narzędzie process zarządza tymi sesjami w tle.
narzędzie exec¶
Kluczowe parametry:
command(wymagane)yieldMs(domyślnie 10000): automatyczne przejście do tła po tym opóźnieniubackground(bool): natychmiastowe uruchomienie w tletimeout(sekundy, domyślnie 1800): zabicie procesu po tym czasieelevated(bool): uruchomienie na hoście, jeśli tryb podwyższonych uprawnień jest włączony/dozwolony- Potrzebujesz prawdziwego TTY? Ustaw
pty: true. workdir,env
Zachowanie:
- Uruchomienia na pierwszym planie zwracają wyjście bezpośrednio.
- Po uruchomieniu w tle (jawnie lub po przekroczeniu limitu czasu) narzędzie zwraca
status: "running"+sessionIdoraz krótki fragment końcówki. - Wyjście jest przechowywane w pamięci do momentu odpytywania lub wyczyszczenia sesji.
- Jeśli narzędzie
processjest niedozwolone,execdziała synchronicznie i ignorujeyieldMs/background.
Mostkowanie procesów potomnych¶
Podczas uruchamiania długotrwałych procesów potomnych poza narzędziami exec/process (na przykład przy ponownych uruchomieniach CLI lub pomocnikach Gateway), dołącz pomocnik mostkowania procesów potomnych, aby sygnały zakończenia były przekazywane, a nasłuchiwacze odłączane przy wyjściu/błędzie. Zapobiega to osieroconym procesom w systemd i zapewnia spójne zachowanie zamykania na różnych platformach.
Nadpisania środowiska:
PI_BASH_YIELD_MS: domyślne yield (ms)PI_BASH_MAX_OUTPUT_CHARS: limit wyjścia w pamięci (znaki)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: limit oczekującego stdout/stderr na strumień (znaki)PI_BASH_JOB_TTL_MS: TTL dla zakończonych sesji (ms, ograniczone do 1m–3h)
Konfiguracja (zalecane):
tools.exec.backgroundMs(domyślnie 10000)tools.exec.timeoutSec(domyślnie 1800)tools.exec.cleanupMs(domyślnie 1800000)tools.exec.notifyOnExit(domyślnie true): dodaj zdarzenie systemowe do kolejki + zażądaj heartbeat, gdy exec uruchomiony w tle zakończy się.
narzędzie process¶
Akcje:
list: sesje uruchomione + zakończonepoll: opróżnij nowe wyjście dla sesji (raportuje także status zakończenia)log: odczytaj zagregowane wyjście (obsługujeoffset+limit)write: wyślij stdin (data, opcjonalnieeof)kill: zakończ sesję w tleclear: usuń zakończoną sesję z pamięciremove: zabij, jeśli działa; w przeciwnym razie wyczyść, jeśli zakończona
Uwagi:
- Tylko sesje uruchomione w tle są wyświetlane i utrwalane w pamięci.
- Sesje są tracone po ponownym uruchomieniu procesu (brak utrwalania na dysku).
- Dzienniki sesji są zapisywane do historii czatu tylko wtedy, gdy uruchomisz
process poll/logi wynik narzędzia zostanie zarejestrowany. processjest ograniczone do agenta; widzi wyłącznie sesje uruchomione przez tego agenta.process listzawiera pochodnyname(czasownik polecenia + cel) do szybkich przeglądów.process logużywa opartego na liniachoffset/limit(pomińoffset, aby pobrać ostatnie N linii).
Przykłady¶
Uruchom długie zadanie i odpytaj później:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
Uruchom natychmiast w tle:
{ "tool": "exec", "command": "npm run build", "background": true }
Wyślij stdin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }