Background Exec + Process Tool
OpenClaw 透過exec 工具執行 Shell 指令,並將長執行的任務保留在記憶體中。process 工具則負責管理這些背景工作階段 (Sessions)。
exec tool
關鍵參數:command(必填)yieldMs(預設 10000): 超過此延遲後自動背景化background(bool): 立即背景化timeout(秒, 預設 1800): 超時後殺死程序elevated(bool): 若啟用/允許 Elevated 模式,則在 Host 上以提升權限執行- 需要真實 TTY? 設定
pty: true。 workdir,env
- 前景執行直接回傳輸出。
- 當背景化時 (明確指定或超時),工具回傳
status: "running"+sessionId以及簡短的尾端輸出 (Tail)。 - 輸出保留在記憶體中,直到工作階段被輪詢 (Poll) 或清除 (Clear)。
- 若
process工具被停用,exec會同步執行並忽略yieldMs/background。
Child process bridging
當在 exec/process 工具之外衍生長執行的子程序時 (例如 CLI respawns 或 Gateway helpers),請附加 Child-process Bridge Helper,以便轉發終止訊號並在退出/錯誤時卸離聆聽者。這能避免 systemd 上的孤兒程序 (Orphaned Processes),並保持跨平台的關閉行為一致。 環境變數覆蓋:PI_BASH_YIELD_MS: 預設 Yield (ms)PI_BASH_MAX_OUTPUT_CHARS: 記憶體內輸出上限 (chars)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: 每個 Stream 的待處理 stdout/stderr 上限 (chars)PI_BASH_JOB_TTL_MS: 完成工作階段的 TTL (ms, 範圍 1m–3h)
tools.exec.backgroundMs(預設 10000)tools.exec.timeoutSec(預設 1800)tools.exec.cleanupMs(預設 1800000)tools.exec.notifyOnExit(預設 true): 當背景 exec 退出時,將系統事件排入佇列 + 請求 Heartbeat。
process tool
動作 (Actions):list: 列出執行中 + 已完成的工作階段poll: 取出 (Drain) 工作階段的新輸出 (亦報告退出狀態)log: 讀取聚合的輸出 (支援offset+limit)write: 發送 stdin (data, 選填eof)kill: 終止背景工作階段clear: 從記憶體中移除已完成的工作階段remove: 若執行中則殺死,若已完成則清除
- 僅背景化的工作階段會被列出/持久化在記憶體中。
- 程序重啟後工作階段會遺失 (無磁碟持久化)。
- 只有當您執行
process poll/log且工具結果被記錄時,工作階段日誌才會儲存至聊天記錄。 process是以 Agent 為範疇的 (Scoped per agent);它只能看見該 Agent 啟動的工作階段。process list包含衍生的name(指令動詞 + 目標) 以供快速瀏覽。process log使用基於行的offset/limit(省略offset以抓取最後 N 行)。