處理長時間運行的背景任務:OpenClaw exec 與 process 工具指南
在開發自動化工具時,最煩人的就是遇到那些要跑很久的指令。你可能只是想跑個編譯或啟動一個服務,但如果指令卡住或者讓連線逾時,你就完全不知道進度到哪了。更慘的是,有時候你還需要中途餵資料進去,或者想停掉它卻找不到那個行程。
OpenClaw 透過 exec 工具來執行 shell 指令,並利用 process 工具來管理這些在記憶體中運行的背景 Session,幫你解決這些問題。
需要準備的東西
Section titled “需要準備的東西”exec工具:用於執行指令process工具:用於管理背景任務
要在 OpenClaw 處理背景任務,最快的方法就是讓指令在超時後自動轉入背景,或是直接強制背景執行。
-
啟動背景任務 你可以設定
yieldMs(預設 10,000ms),如果指令跑超過這個時間,它會自動轉為背景執行並給你一個sessionId。{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 } -
檢查任務狀態與輸出 拿到
sessionId後,用poll來抓取最新的輸出。這也會告訴你行程是否已經結束。{ "tool": "process", "action": "poll", "sessionId": "<id>" } -
發送互動輸入 如果指令需要你輸入內容(例如確認訊息或互動式指令),可以用
write發送資料到 stdin。{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" } -
清理任務 任務結束後,建議用
clear把記憶體中的 Session 紀錄釋放掉。{ "tool": "process", "action": "clear", "sessionId": "<id>" }
深入了解工具參數
Section titled “深入了解工具參數”exec 工具
Section titled “exec 工具”這是你執行指令的出發點,支援以下參數:
command(必填):你要執行的指令。background(bool):直接在背景執行,不等待輸出。timeout(秒,預設 1800):超過時間會自動殺掉行程。pty: 如果需要真實的 TTY 支援,請設為true。yieldMs(預設 10000):自動轉入背景前的等待時間。elevated(bool):如果環境允許,在 Host 主機上以提升權限執行。
process 工具
Section titled “process 工具”當任務進入背景後,你需要用這些 Action 來操作:
list: 列出所有運行中與已結束的 Session。log: 讀取完整的聚合輸出,支援offset與limit進行分頁。kill: 強制終止一個背景 Session。remove: 如果還在跑就殺掉,跑完了就清理掉。
- 指令沒有進入背景模式:請檢查
process工具是否被禁用。如果process不可用,exec會強制以同步方式執行,並忽略所有的yieldMs或background設定。 - 重新啟動後找不到 Session:Session 資訊是儲存在記憶體中的,一旦 OpenClaw 重啟,所有 Session 都會消失(不會持久化到硬碟)。
- 找不到其他 Agent 的 Session:
process工具是有作用域限制的,你只能看到並管理由同一個 Agent 啟動的 Session。 - 對話紀錄沒看到輸出:只有當你執行
process poll或process log且工具結果被記錄時,輸出的 log 才會存入對話歷史中。
如果你在設定過程中遇到任何問題,可以直接詢問我們的 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。