Skip to main content
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 działającymi w tle.

Narzędzie exec

Parametry: Działanie:
  • Uruchomienia pierwszoplanowe zwracają dane wyjściowe bezpośrednio.
  • Po przeniesieniu do tła (jawnie lub wskutek upływu czasu yieldMs) narzędzie zwraca status: "running" + sessionId oraz krótki końcowy fragment danych wyjściowych.
  • Uruchomienia w tle i z yieldMs dziedziczą tools.exec.timeoutSec, chyba że wywołanie przekazuje jawny parametr timeout.
  • Dane wyjściowe pozostają w pamięci do czasu sprawdzenia lub wyczyszczenia sesji.
  • Jeśli narzędzie process jest niedozwolone, exec działa synchronicznie i ignoruje yieldMs/background.
  • Uruchomione polecenia exec otrzymują OPENCLAW_SHELL=exec na potrzeby reguł powłoki/profilu uwzględniających kontekst.
  • W przypadku długotrwałego zadania rozpoczynanego teraz: uruchom je raz i polegaj na automatycznym powiadomieniu o ukończeniu (jeśli jest włączone), gdy polecenie wygeneruje dane wyjściowe lub zakończy się niepowodzeniem.
  • Jeśli automatyczne powiadomienie o ukończeniu jest niedostępne albo potrzebujesz potwierdzenia cichego powodzenia polecenia, które kończy się bez danych wyjściowych, sprawdź stan za pomocą process.
  • Nie imituj przypomnień ani opóźnionych działań za pomocą pętli sleep lub wielokrotnego sprawdzania — do przyszłych zadań użyj cron.

Nadpisywanie za pomocą zmiennych środowiskowych

Konfiguracja (preferowana zamiast nadpisywania zmiennymi środowiskowymi)

Mostkowanie procesów potomnych

Podczas uruchamiania długotrwałych procesów potomnych poza narzędziami exec/process (ponowne uruchomienia CLI, procesy pomocnicze Gateway) dołącz funkcję pomocniczą mostka procesów potomnych, aby przekazywała sygnały zakończenia i odłączała procedury nasłuchujące po wyjściu/błędzie. Zapobiega to osieroconym procesom w systemd i zapewnia spójne zamykanie na różnych platformach.

Narzędzie process

Działania: Uwagi:
  • Wyświetlane i przechowywane są tylko sesje działające w tle — wyłącznie w pamięci, nie na dysku. Sesje są tracone po ponownym uruchomieniu procesu.
  • Aktywna sesja w tle blokuje kooperacyjne wstrzymanie hosta i bezpieczne ponowne uruchomienie Gateway, dopóki właściciel procesu nie potwierdzi jego faktycznego zakończenia.
  • process remove może ukryć działającą sesję natychmiast po zażądaniu jej zakończenia; wstrzymanie i ponowne uruchomienie pozostają zablokowane do czasu potwierdzenia zakończenia.
  • Dzienniki sesji są zapisywane w historii czatu tylko wtedy, gdy uruchomisz process poll/log, a wynik działania narzędzia zostanie zarejestrowany.
  • Zakres process jest ograniczony do konkretnego agenta; widzi ono tylko sesje uruchomione przez tego agenta.
  • Użyj poll/log, aby sprawdzić stan, dzienniki lub potwierdzić ukończenie, gdy automatyczne powiadomienie o ukończeniu jest niedostępne.
  • Użyj log przed odzyskaniem interaktywnego CLI, aby bieżący zapis sesji, stan stdin i wskazówka oczekiwania na dane wejściowe były widoczne razem.
  • Użyj write/send-keys/submit/paste/kill, gdy wymagane jest wprowadzenie danych lub interwencja.
  • process list zawiera wyprowadzoną wartość name (czasownik polecenia + cel), która ułatwia szybkie przeglądanie.
  • process list, poll i log zgłaszają waitingForInput tylko wtedy, gdy sesja nadal ma zapisywalne stdin i pozostaje bezczynna dłużej niż próg oczekiwania na dane wejściowe (domyślnie 15000 ms, OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS).
  • process log używa opartego na wierszach offset/limit. Gdy oba parametry są pominięte, zwraca ostatnie 200 wierszy ze wskazówką dotyczącą stronicowania. Gdy ustawiono offset, ale nie limit, zwraca dane od offset do końca (bez ograniczenia do 200).
  • Parametr timeout działania poll powoduje oczekiwanie przez maksymalnie podaną liczbę milisekund przed zwróceniem wyniku; wartości powyżej 30000 są ograniczane do 30000.
  • Sprawdzanie służy do uzyskiwania stanu na żądanie, a nie do planowania pętli oczekiwania. Jeśli zadanie ma zostać wykonane później, użyj cron.

Przykłady

Uruchom długie zadanie i sprawdź je później:
Sprawdź sesję interaktywną przed wysłaniem danych wejściowych:
Uruchom natychmiast w tle:
Wyślij dane na stdin:
Wyślij klawisze PTY:
Prześlij bieżący wiersz:
Wklej tekst dosłowny:

Powiązane