多 Agent 編排常栽在任務樹失聯、身分檔共用、先父後子取消,留下孤兒程序與難以稽核的副作用。將 Task Brain 鎖進每專案 profile,並在 flows 留下可 grep 的父子識別,才能把取消變成可重現維運。

假設遠端 Mac 已具 OpenClaw 閘道與 CLI,本篇聚焦編排維運:列舉/取消、目錄隔離、失敗時降殘留。延伸:CrewAI 閘道路由LangGraph 工具

初始化 · flows 維運命令範例占位 · 目錄隔離 · 失敗取消 · FAQ

痛點一、共用家目錄致狀態互蓋。二、子任務 fan-out 未帶父識別,取消後難對帳。三、先殺父再殺子易留 worker 占埠或 GPU 上下文。四、儀表板權杖與本機身分檔混放時,輪替與稽核無法對齊租戶標籤。

初始化

以專用 profile 將 OPENCLAW_PROFILEOPENCLAW_HOME 指到可備份樹根;寫 run_label 供日誌切片。部署後跑 openclaw doctor 核版本、埠與回環綁定。若與 launchd 併用,請讓 plist 繼承同一組環境變數,避免互動式 shell 與守護行程各寫一套狀態。

步驟清單

  1. ~/openclaw-profiles/<專案> 並限帳號讀寫。
  2. 先匯出環境變數再啟 flows 或守護行程。
  3. 閘道與應用共用 correlation_id 命名規則。
  4. runbook 寫明「先列舉、後取消」與備援人員。
  5. 變更後 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 占位統一值班與自動化語意。