2026 OpenClaw 多 Agent 調度實操:`sessions_spawn` runtime=acp vs subagent 決策矩陣、streamTo 誤填分診與 ACP 1008 握手失敗 Runbook

約 18 分鐘閱讀 · MACCOME

若你在主 Agent 裡呼叫 sessions_spawn 派生子任務,卻遇到 ACP_TURN_FAILED、invalid handshake 1008queue owner unavailable,而同一 Gateway 上直連聊天仍正常——本文回答:runtime=acpruntime=subagent 何時選用;② streamTo / resumeSessionId 為何只對 acp 路徑合法、subagent 誤填如何分診;③ ACP 握手失敗時的 subagent 降級與 Windows OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE;④ OpenAI Completions vs Responses 下 streamTo 自動填充差異。與升級護航 ACP 分診Docker 子代理 1008 配對互補——本篇只啃多 Agent 調度 runtime 選型

多 Agent 調度最常見的六種誤判(先認清再改 runtime)

  1. 預設 runtime=acp 卻不具備 ACP bridge:主通道能聊,一 spawn 就 ACP_TURN_FAILED——根因是 acpx 未註冊或 queue owner 離線,而非模型配額。
  2. runtime=subagent 裡填 streamTo / resumeSessionId:這兩欄位僅服務 ACP 會話續接語義;subagent 走 Gateway 內嵌 RPC,誤填會報參數無效或靜默丟欄位,表象像「子 Agent 沒收到上下文」。
  3. 把 1008 一律當成 Docker 配對問題:Compose 場景見trustedProxies 專文;純本機 acp 路徑的 1008 更常是 handshake 版本或 bridge 競態。
  4. 升級後未 reload 就測 spawn:CLI 已新版本、Gateway 仍舊行程,acp 與 subagent 兩條堆疊可能分裂——先對齊驗收階梯再測調度。
  5. Windows 上忽略 acpx 啟動探針:provider 擴充套件拖慢啟動時,ACP 握手在 bridge 就緒前發起,日誌呈 invalid handshake;應對照 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE 延長或重試。
  6. Completions 與 Responses API 混配卻不查 streamTo 自動填充:2026 路由層對 Responses 會話會推斷 streamTo 目標;Completions 路徑不會——誤以為是 spawn 壞了,實為 API 形態與 runtime 不匹配。

2026 上游把 sessions_spawn 明確拆成兩條互斥執行環境runtime=acp 透過 ACP bridge 與外部 acpx 行程對話,支援 streamTo 把子 Agent 輸出回流到主會話 UI;runtime=subagent 則在 Gateway 行程內啟動輕量子代理,延遲更低、不依賴 acpx,但不支援 ACP 專屬的續接欄位。選錯 runtime 再疊加錯誤欄位,是 on-call 裡最耗時的「假複雜」——先把路徑對齊,再談模型與工具 allowlist(見tools.profile 分診)。

實務上建議把每次 spawn 呼叫當成一張調度合約歸檔:合約裡必須寫清 runtime、是否依賴 UI 回流、主會話走的是 Completions 還是 Responses、以及失敗時的降級路徑(subagent 或回滾)。缺少這張合約,事後很難解釋「同一 Gateway 昨天能 spawn、今天不行」——因為變更往往落在範本欄位或 API 形態,而不是 Gateway 行程本身。

站內已有長文 本篇涵蓋 本篇不重複
升級護航 ACP 分診 spawn 場景下 acp vs subagent 選型與降級 backup create、gateway probe 全階梯
Docker 子代理 1008 subagent 路徑與 pairing 1008 的邊界區分 Compose trustedProxies 逐步指令
tools.profile 分診 spawn 成功後「子 Agent 無工具」的二次排查 allowlist 三層疊加專文
SSH 常駐 Gateway 遠端 Mac 上 acpx 與 subagent 共存拓撲 連接埠轉發與 launchd 細節

runtime=acp vs runtime=subagent:何時用哪條堆疊

選型口訣:要 UI 回流、要續接既有 ACP 會話、要與 Cursor/IDE 側 acpx 對齊 → acp要 Gateway 內閉環、要低依賴、acp 目前不可用 → subagent。下表是正式環境裡最常見的四類任務形態(非 exhaustive,但涵蓋 80% 工單):

任務形態 建議 runtime 關鍵參數 避免
子 Agent 輸出要串流回到主聊天視窗 acp streamTo 指向主 session;可選 resumeSessionId subagent + streamTo(無效組合)
背景批次處理、無需 UI 回流 subagent task 描述 + 逾時;不配 streamTo 強行走 acp 增加 bridge 故障面
ACP bridge 報 queue owner unavailable 臨時 subagent 工單記錄降級;並行修 acpx 註冊 反覆重試 acp 拉高 MTTR
多容器 Docker,RPC healthy 但 spawn 1008 先修配對/網段,再 subagent 對照 trustedProxies;見 Docker 專文 未修 bind 就切換 runtime

streamTo / resumeSessionId:僅 acp 合法的誤填分診

社群裡大量「spawn 參數看起來對、子 Agent 卻空回覆」來自欄位與 runtime 交叉污染。Gateway 在 subagent 路徑會剝離或拒絕 ACP 專屬欄位;若主 Agent 範本從 Completions 範例複製了 streamTo: "main",而實際呼叫是 runtime=subagent,日誌往往只有泛化的 RPC error,不會明確提示「欄位無效」——需要對照呼叫 JSON。

runtime=acp 下,resumeSessionId 用於接續既有 acpx 會話(例如使用者在同執行緒裡多次 spawn);streamTo 則把子 Agent token 串流導向主 Control UI 或指定 channel 渲染目標。2026 Responses API 路由在部分設定下會自動推斷 streamTo(當主會話已綁定 Responses 形態且未顯式傳入時);Completions 形態不會自動填充——若你從 Responses 環境遷到 Completions 而未改 spawn 範本,會出現「以前能回流、現在子 Agent 在背景默默跑完」的迴歸,這與 upgrade 無關,純屬 API 形態 + runtime 組合問題。

分診時可做欄位剝離實驗:複製失敗呼叫 JSON,去掉 streamToresumeSessionId 後改 runtime=subagent 重試。若 subagent 立刻成功,則原故障幾乎可判定為 ACP 路徑或誤填,而非 task 內容或模型能力問題;若仍失敗,再進入 pairing、Token 或工具面排查。該實驗應寫在 Runbook 第 4 步,避免 on-call 在 acp 日誌裡空轉。

json
// ✅ acp:UI 回流 + 可選續接
{
  "tool": "sessions_spawn",
  "runtime": "acp",
  "task": "調研競品定價並輸出表格",
  "streamTo": "main",
  "resumeSessionId": "acp-sess-abc123"
}

// ✅ subagent:Gateway 內閉環,不要 streamTo
{
  "tool": "sessions_spawn",
  "runtime": "subagent",
  "task": "批次重新命名 logs 目錄下檔案"
}

// ❌ 常見誤填:subagent 攜帶 ACP 欄位
{
  "runtime": "subagent",
  "streamTo": "main"
}

ACP 握手失敗分診:ACP_TURN_FAILED、1008、queue owner

runtime=acp 失敗而主聊天仍正常,按日誌指紋分流——不要與「Gateway 完全無回覆」混查(後者走通道/模型專文)。

日誌 / 症狀 優先懷疑 第一動作
ACP_TURN_FAILED acpx 行程未就緒;turn 逾時 Windows 設 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1 延長探針;確認 bridge 註冊
invalid handshake / WebSocket 1008 CLI/Gateway/acpx 版本分裂;握手標頭不匹配 對齊同版本;單次 reload;對照釘版矩陣
queue owner unavailable ACP bridge 註冊遺失(2026.3.x 迴歸窗口) 確認 host acpx;臨時 runtime=subagent 保 SLA
subagent 也 1008 配對/Token/網段(非 ACP 專屬) 跳轉Docker 1008 Runbook
spawn 成功但子 Agent 無工具 tools.profile / agent 覆寫 跳轉tools.profile 分診
warning

降級策略:當 acp 路徑在變更窗口內連續兩輪失敗(含 reload 後複測),而 subagent 單路徑可通過最小任務探針,建議工單顯式記錄「臨時 runtime=subagent」並限制需要 UI 回流的任務——待 acpx 修復後再切回 acp。這與壞版本 digest 回滾正交:降級是保 SLA,回滾是修已知 regression。

Windows 與 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE

Windows 上 provider 擴充套件與 Defender 掃描常把 acpx 冷啟動拖到數秒以上;若 spawn 在 bridge 就緒前發起,表面是 ACP_TURN_FAILED 或 invalid handshake。設定環境變數 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1(具體語義以你安裝的 OpenClaw 版本文件為準)可讓 Gateway 在首輪 spawn 前多等一輪 acpx 健康探針,降低競態假失敗率。仍失敗時,用同機 subagent 最小任務驗證 Gateway 調度堆疊本身未壞,再隔離 acpx 安裝/權限問題——避免把 Windows 啟動慢誤判成「必須回滾 OpenClaw 版本」。

升級護航的分工在於:升級文章解決「版本遷移後 probe/ACP 全站迴歸」;本篇解決「版本已穩定、僅 spawn 調度層選錯或 handshake 偶發失敗」。二者串聯時,先確認 upgrade 階梯已通過,再進入本篇 runtime 矩陣——否則會把 split-brain 誤判為 streamTo 誤填。

powershell
# Windows:延長 acpx 啟動探針(範例)
$env:OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE = "1"
openclaw gateway status
openclaw gateway probe

# 最小 subagent 探針(不含 streamTo)
# 透過 Control UI 或 CLI 觸發等價 sessions_spawn,runtime=subagent

acp 壞了先 subagent:繼續修 vs 釘版 vs 降級的決策矩陣

影響面 繼續修 acp(設定/bridge) 臨時 runtime=subagent 釘版/回退
僅 spawn/acp 紅,主通道與 subagent 探針正常 查 acpx 註冊、startup probe 建議:無 UI 回流任務先走 subagent 已知 regression 窗口內再考慮
acp + subagent 雙失敗,probe 也紅 僅 backup 恢復後單步試 不作為首選 優先 backup 或 digest 回滾
必須 UI 回流,acp 不可用 修 bridge 前業務受損 不可替代 streamTo 場景 評估回退或換遠端 Mac 常駐 Gateway

七步「選型—探針—spawn—分診—降級—留痕」Runbook

  1. 凍結呼叫 JSON:記錄 runtime、是否含 streamTo / resumeSessionId、主會話 API 形態(Completions vs Responses)。
  2. Gateway 基線openclaw gateway status + gateway probe;升級後務必單次 reload(見升級護航)。
  3. 選型自檢:要 UI 回流 → acp + streamTo;背景任務 → subagent,剝離 ACP 欄位。
  4. 最小 spawn 探針:先 subagent 一句唯讀任務;通過則調度堆疊正常,失敗則查 pairing/Token。
  5. acp 專項:確認 acpx 行程與 bridge;Windows 開 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE;擷取 1008 / queue owner 日誌。
  6. 降級或回退:acp 雙輪失敗 → 工單標記 subagent 降級;雙路徑全斷 → digest 回滾。
  7. 關單指標:寫入 spawn 成功率、降級占比、MTTR;更新內部 runtime 選型備忘。

三條應寫進變更單的量化口徑

  • spawn 成功率(按 runtime 分桶):單位時間內 sessions_spawn 成功次數 / 呼叫總數;acp 桶低於 95% 且 subagent 桶正常時,優先修 bridge 而非換模型。
  • acp→subagent 降級占比:含 UI 回流需求的任務不應長期依賴降級;若連續一週 >30% 工單走 subagent 替代 acp,應推動版本釘選或拓撲遷移。
  • 誤填 streamTo 事件數runtime=subagent 呼叫中仍出現 streamTo/resumeSessionId 的稽核計數;正式環境目標為 0(應用層 lint 或範本審查)。

在筆電 Gateway 上混跑 acpx、合蓋睡眠與多 provider 外掛程式,spawn 失敗常被誤記為「OpenClaw 不穩定」。更穩妥的做法是把權威 Gateway 與 acpx 同駐在常電遠端 Mac 伺服器上,本機僅 SSH 轉發 Control UI——spawn 與 probe 在同一節點驗收,日誌時間軸可對齊。

收束:runtime 選型是調度合約,不是調參玄學

只在主 Agent 裡反覆改 prompt、卻不檢查 runtimestreamTo 是否匹配,會把 ACP 握手問題放大成「多 Agent 不可用」的錯覺。相對地,把 acp/subagent 決策矩陣、誤填分診與 subagent 降級寫進 runbook,能把 on-call 從一整晚盲試,壓到有探針、有降級、有指標的分鐘級事件。

若你仍堅持在 Windows 筆電或 Docker 分容器拓撲裡硬扛 acp bridge,要接受三項隱性成本:啟動競態導致假 1008、Completions/Responses 與 streamTo 自動填充不一致、以及 subagent 與 acp 故障面疊加時的排障半徑膨脹。對需要 7×24、spawn 可工單化、acp 與 subagent 可切換 的正式 Gateway,把環境落在 MACCOME Mac mini(M4 / M4 Pro)與六國彈性租期上,通常比在合蓋筆電上與 queue owner 搏鬥更省總成本;公開檔位可先對照多區域節點與租期指南,再與SSH 常駐 Runbook串聯拓撲。

常見問題

streamToresumeSessionId 能否在 runtime=subagent 時使用?

不能。二者僅對 runtime=acp 的 ACP 續接與 UI 回流有效;subagent 路徑應只傳 task 等 Gateway 內嵌欄位。範本審查可參考租賃價格說明中正式節點工單化實踐。

ACP 報 1008 或 queue owner unavailable 時是否必須回滾版本?

不一定。先按症狀表區分 bridge 註冊與 Docker 配對 1008;主通道正常時可臨時 runtime=subagent,並開 Windows startup probe。雙路徑連續失敗再走digest 回滾;接入問題見協助中心