exec 工具執行 Shell 命令,並將長時間執行的工作保留在記憶體中。process 工具負責管理這些背景工作階段。
exec 工具
參數:
行為:
- 前景執行會直接傳回輸出。
- 移至背景執行時(明確指定,或因
yieldMs逾時),工具會傳回status: "running"+sessionId以及一小段輸出尾端。 - 背景執行和
yieldMs執行會繼承tools.exec.timeoutSeconds,除非呼叫時明確傳入timeout。 - 輸出會保留在記憶體中,直到輪詢或清除工作階段為止。
- 若不允許使用
process工具,exec會同步執行,並忽略yieldMs/background。 - 產生的 exec 命令會收到
OPENCLAW_SHELL=exec,以套用能感知情境的 Shell/設定檔規則。 - 對於現在開始的長時間工作:僅啟動一次,並在命令產生輸出或失敗時,依賴自動完成喚醒(若已啟用)。
- 若無法使用自動完成喚醒,或需要確認某個命令在沒有輸出的情況下正常結束,請使用
process輪詢。 - 不要使用
sleep迴圈或重複輪詢來模擬提醒或延遲追蹤;未來要執行的工作請使用排程。
環境變數覆寫
設定(優先於環境變數覆寫)
子程序橋接
在 exec/process 工具之外產生長時間執行的子程序時(命令列介面重新產生程序、閘道輔助程式),請附加子程序橋接輔助程式,使終止訊號能夠轉送,並在結束/錯誤時卸除接聽器。這可避免在 systemd 上產生孤立程序,並讓各平台的關閉行為保持一致。process 工具
動作:
注意事項:
- 只有背景工作階段會列出/保留,而且僅位於記憶體中,不會儲存在磁碟上。程序重新啟動時,工作階段將會遺失。
- 即時背景工作階段會阻止協作式主機暫停和安全的閘道重新啟動,直到程序擁有者確認程序實際結束為止。
process remove可在要求終止後立即隱藏執行中的工作階段;在確認結束之前,暫停和重新啟動仍會受到阻擋。- 只有在執行
process poll/log且工具結果已記錄時,工作階段記錄才會儲存至聊天記錄。 process的範圍以每個代理為單位;它只能看到由該代理啟動的工作階段。- 無法使用自動完成喚醒時,請使用
poll/log取得狀態、記錄或完成確認。 - 復原互動式命令列介面前,請先使用
log,以便同時查看目前的文字記錄、stdin 狀態和等待輸入提示。 - 需要輸入或介入時,請使用
write/send-keys/submit/paste/kill。 process list包含衍生的name(命令動詞 + 目標),方便快速掃描。- 只有在工作階段仍有可寫入的 stdin,且閒置時間超過輸入等待門檻(預設為 15000 ms,
OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS)時,process list、poll和log才會回報waitingForInput。 process log使用以行為基礎的offset/limit。兩者皆省略時,會傳回最後 200 行並附上分頁提示。若設定offset而未設定limit,則會傳回從offset到結尾的內容(不限制為 200 行)。poll的timeout最多會等待指定的毫秒數再傳回;超過 30000 的值會限制為 30000。- 輪詢用於隨選查詢狀態,而非排定等待迴圈。若工作應在稍後執行,請使用排程。