假設遠端 Mac 已具 OpenClaw 閘道與 CLI,本篇聚焦編排維運:列舉/取消、目錄隔離、失敗時降殘留。延伸:CrewAI 閘道路由、LangGraph 工具。
初始化 · flows 維運命令範例占位 · 目錄隔離 · 失敗取消 · FAQ
痛點一、共用家目錄致狀態互蓋。二、子任務 fan-out 未帶父識別,取消後難對帳。三、先殺父再殺子易留 worker 占埠或 GPU 上下文。四、儀表板權杖與本機身分檔混放時,輪替與稽核無法對齊租戶標籤。
初始化
以專用 profile 將 OPENCLAW_PROFILE、OPENCLAW_HOME 指到可備份樹根;寫 run_label 供日誌切片。部署後跑 openclaw doctor 核版本、埠與回環綁定。若與 launchd 併用,請讓 plist 繼承同一組環境變數,避免互動式 shell 與守護行程各寫一套狀態。
步驟清單
- 建
~/openclaw-profiles/<專案>並限帳號讀寫。 - 先匯出環境變數再啟 flows 或守護行程。
- 閘道與應用共用
correlation_id命名規則。 - runbook 寫明「先列舉、後取消」與備援人員。
- 變更後 doctor 加埠檢,確認無殘留監聽。
flows 維運命令範例占位
子命令以實際版本為準;占位須含 profile、格式、篩選、乾跑,祕密放本機檔勿進 shell 歷程。建議另建 make tasks-list 薄封裝,統一注入逾時與日誌目錄,降低值班誤打旗標的機率。
openclaw tasks list --profile "${OPENCLAW_PROFILE}" --format json > "${OPENCLAW_HOME}/scratch/task-snapshot.json"
openclaw flows doctor --profile "${OPENCLAW_PROFILE}" --dry-run
openclaw tasks cancel --profile "${OPENCLAW_PROFILE}" --task-id "<CHILD_ID>" --reason "operator_failover"內部 wiki 請附預期退出碼與逾時,供 CI/launchd 包重試。
目錄隔離
身分與權杖放 config,暫存與下載放 scratch(建議零七零零);勿 symlink 回共用 ~/.openclaw 以免輪替誤傷他 repo。
| 類型 | 內容 | 頻率 |
|---|---|---|
| config | 權杖、角色 JSON、工具白名單 | 低 |
| scratch | flows 產物、暫存、評測輸出 | 高 |
| logs | 父子 task、閘道摘要、取消原因 | 追加 |
可引用獨立 profile 樹、config/scratch 分離、同一 correlation_id 貫穿閘道與本機日誌;變更單應附目錄樹截圖與權限位元遮罩。
失敗取消
遵守先子後父:先斷長連線與葉 shell,再收根節點;支援時對行程群組發訊號。取消寫原因碼,五分鐘內 grep 是否仍有同 parent_task_id 的 listener;重試與熔斷對齊防取消風暴。
孤兒程序常來自已分離的互動 shell、背景輪詢或未掛編排樹的單元測試腳本;除先葉後根外,應在規格書要求「凡對外連線須帶 correlation」,並以只讀稽核帳號抽查殘留 PID。fan-out 前即寫日誌欄位;子任務設最大深度與並行;生產機禁止手動長跑 curl 等無編排樹工作。
FAQ
取消後埠仍占用?常為群組未綁定或 launchd 與互動 shell 各一份閘道;依 profile 比對 PID 與執行檔路徑。
先讀哪篇?模型出口見LiteLLM 閘道路由;多角色見 CrewAI 篇,correlation 命名保持一致。
占位能進 CI?可,但祕密改檔案注入、profile 矩陣化,合併前乾跑確認 flows 仍指對閘道。
小結:profile 分專案、父子識別可 grep、先葉後根取消,三者構成 Task Brain 維運底線;flows 占位統一值班與自動化語意。