Background Exec + Process Tool
OpenClaw führt Shell-Befehle über das Toolexec aus und hält lang laufende Aufgaben im Speicher. Das Tool process verwaltet diese Hintergrundsitzungen.
exec-Tool
Wichtige Parameter:command(erforderlich)yieldMs(Standard 10000): nach dieser Verzögerung automatisch in den Hintergrund verschiebenbackground(bool): sofort in den Hintergrund verschiebentimeout(Sekunden, Standard 1800): den Prozess nach diesem Timeout beendenelevated(bool): außerhalb der Sandbox ausführen, wenn der erhöhte Modus aktiviert/erlaubt ist (standardmäßiggatewayodernode, wenn das exec-Zielnodeist)- Benötigen Sie ein echtes TTY? Setzen Sie
pty: true. workdir,env
- Ausführungen im Vordergrund geben die Ausgabe direkt zurück.
- Wenn sie in den Hintergrund verschoben werden (explizit oder per Timeout), gibt das Tool
status: "running"+sessionIdund einen kurzen Tail zurück. - Die Ausgabe bleibt im Speicher, bis die Sitzung abgefragt oder gelöscht wird.
- Wenn das Tool
processnicht erlaubt ist, läuftexecsynchron und ignoriertyieldMs/background. - Von
execgestartete Befehle erhaltenOPENCLAW_SHELL=execfür kontextabhängige Shell-/Profilregeln. - Für lang laufende Arbeit, die jetzt beginnt, starten Sie sie einmal und verlassen Sie sich auf das automatische Completion-Wake, wenn es aktiviert ist und der Befehl Ausgabe erzeugt oder fehlschlägt.
- Wenn automatisches Completion-Wake nicht verfügbar ist oder Sie eine stille Erfolgs-
Bestätigung für einen Befehl benötigen, der sauber ohne Ausgabe beendet wurde, verwenden Sie
process, um den Abschluss zu bestätigen. - Emulieren Sie Erinnerungen oder verzögerte Nachverfolgungen nicht mit
sleep-Schleifen oder wiederholtem Polling; verwenden Sie cron für zukünftige Arbeit.
Bridging von Kindprozessen
Wenn lang laufende Kindprozesse außerhalb der exec/process-Tools gestartet werden (zum Beispiel CLI-Respawns oder Gateway-Helfer), hängen Sie den Child-Process-Bridge-Helper an, damit Beendigungssignale weitergeleitet werden und Listener bei Exit/Fehler entfernt werden. Das vermeidet verwaiste Prozesse unter systemd und sorgt plattformübergreifend für konsistentes Shutdown-Verhalten. Überschreibungen per Umgebung:PI_BASH_YIELD_MS: Standard-Yield (ms)PI_BASH_MAX_OUTPUT_CHARS: In-Memory-Ausgabeobergrenze (Zeichen)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: Obergrenze für ausstehendes stdout/stderr pro Stream (Zeichen)PI_BASH_JOB_TTL_MS: TTL für beendete Sitzungen (ms, begrenzt auf 1 Min.–3 Std.)
tools.exec.backgroundMs(Standard 10000)tools.exec.timeoutSec(Standard 1800)tools.exec.cleanupMs(Standard 1800000)tools.exec.notifyOnExit(Standard true): ein Systemereignis in die Warteschlange stellen + Heartbeat anfordern, wenn ein im Hintergrund ausgeführter exec beendet wird.tools.exec.notifyOnExitEmptySuccess(Standard false): wenn true, auch Completion-Ereignisse für erfolgreiche Hintergrundläufe ohne Ausgabe in die Warteschlange stellen.
process-Tool
Aktionen:list: laufende + beendete Sitzungenpoll: neue Ausgabe für eine Sitzung abrufen (meldet auch den Exit-Status)log: die aggregierte Ausgabe lesen (unterstütztoffset+limit)write: stdin senden (data, optionaleof)send-keys: explizite Schlüsseltoken oder Bytes an eine PTY-gestützte Sitzung sendensubmit: Enter / Wagenrücklauf an eine PTY-gestützte Sitzung sendenpaste: Literaltext senden, optional mit bracketed paste modekill: eine Hintergrundsitzung beendenclear: eine beendete Sitzung aus dem Speicher entfernenremove: falls laufend beenden, andernfalls falls beendet löschen
- Nur Hintergrundsitzungen werden im Speicher aufgelistet/gespeichert.
- Sitzungen gehen bei einem Prozessneustart verloren (keine Persistenz auf Festplatte).
- Sitzungslogs werden nur im Chatverlauf gespeichert, wenn Sie
process poll/logausführen und das Tool-Ergebnis aufgezeichnet wird. processist pro Agent begrenzt; es sieht nur Sitzungen, die von diesem Agenten gestartet wurden.- Verwenden Sie
poll/logfür Status, Logs, stille Erfolgsbestätigung oder Abschlussbestätigung, wenn automatisches Completion-Wake nicht verfügbar ist. - Verwenden Sie
write/send-keys/submit/paste/kill, wenn Sie Eingaben oder Eingriffe benötigen. process listenthält einen abgeleitetenname(Befehlsverb + Ziel) für schnelle Übersichten.process logverwendet zeilenbasiertesoffset/limit.- Wenn sowohl
offsetals auchlimitfehlen, werden die letzten 200 Zeilen zurückgegeben und ein Paging-Hinweis eingeschlossen. - Wenn
offsetangegeben ist undlimitfehlt, wird vonoffsetbis zum Ende zurückgegeben (nicht auf 200 begrenzt). - Polling ist für Status bei Bedarf gedacht, nicht für Scheduling mit Warteschleifen. Wenn die Arbeit später stattfinden soll, verwenden Sie stattdessen cron.