メイン Agent から sessions_spawn でサブタスクを起動した際、ACP_TURN_FAILED、invalid handshake 1008、または queue owner unavailable が出る一方、同一 Gateway 上の直接チャットは正常——この記事では次を説明します:① runtime=acp と runtime=subagent の選定タイミング;② streamTo / resumeSessionId が acp パス専用である理由と subagent 誤設定のトリアージ;③ ACP ハンドシェイク失敗時の subagent フォールバックと Windows OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE;④ OpenAI Completions vs Responses における streamTo 自動入力の差異。アップグレード護航 ACP トリアージ、Docker サブエージェント 1008 ペアリングと補完関係にあり——本記事はマルチ Agent スケジューリング runtime 選定に特化します。
runtime=acp なのに ACP bridge が未整備:メインチャネルは会話できるが spawn すると ACP_TURN_FAILED——原因は acpx 未登録または queue owner オフラインであり、モデルクォータではありません。runtime=subagent に streamTo / resumeSessionId を入れる:これらは ACP セッション継続専用です。subagent は Gateway 内蔵 RPC を通るため、誤設定はパラメータ無効またはサイレントにフィールド破棄となり、「サブ Agent がコンテキストを受け取っていない」ように見えます。OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE で延長またはリトライしてください。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 またはロールバック)を明記してください。この契約がないと、「昨日は spawn できたのに今日は不可」という事象の説明が困難になります——変更は Gateway プロセスよりテンプレートフィールドや API 形態に起きることが多いからです。
| サイト内の既存長文 | 本記事の範囲 | 本記事で繰り返さない内容 |
|---|---|---|
| アップグレード護航 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。下表は本番で最も多い四つのタスク形態です(網羅ではありませんが、チケットの 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 トークンストリームをメイン Control UI または指定 channel 描画先へ向けます。2026 Responses API ルーティングは一部設定で streamTo を自動推論します(メインセッションが Responses 形態にバインドされ未明示入力の場合);Completions 形態では自動入力されません——Responses 環境から Completions へ移行し spawn テンプレートを変えないと、「以前は戻せたのに今はサブ Agent が裏で完走する」回帰が起きます。これは upgrade 無関係で、API 形態 + runtime の組み合わせ問題です。
トリアージではフィールド剥離実験が有効です:失敗した呼び出し JSON を複製し、streamTo と resumeSessionId を除いて runtime=subagent で再試行してください。subagent が即成功すれば、元の障害は ACP パスまたは誤設定とほぼ断定でき、task 内容やモデル能力の問題ではありません。失敗が続く場合は pairing、Token、またはツール面へ。本実験は Runbook 第 4 步に記載し、on-call が acp ログで空転しないようにしてください。
// ✅ 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_TURN_FAILED、1008、queue ownerruntime=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 トリアージへ |
フォールバック戦略:acp パスが変更ウィンドウ内で連続二回失敗(reload 後再試含む)し、subagent 単独パスが最小タスクプローブを通過する場合、チケットに「一時 runtime=subagent」を明記し、UI 戻しが必要なタスクを制限してください——acpx 修復後に acp へ戻します。これは不良バージョン digest ロールバックと直交します:フォールバックは SLA 維持、ロールバックは既知 regression の修復です。
OPENCLAW_ACPX_RUNTIME_STARTUP_PROBEWindows では provider 拡張と Defender スキャンが acpx コールドスタートを数秒以上遅らせることがあります。bridge 準備前に spawn すると ACP_TURN_FAILED または invalid handshake に見えます。環境変数 OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=1(意味はインストール版ドキュメント準拠)を設定すると、Gateway が初回 spawn 前に acpx ヘルスプローブを追加で待ち、競合による偽失敗率を下げられます。それでも失敗する場合は、同一マシン subagent 最小タスクで Gateway スケジューリングスタック自体が健全か確認し、acpx インストール/権限問題を切り分けてください——Windows 起動遅延を「OpenClaw バージョンをロールバック必須」と誤判断しないためです。
アップグレード護航との分担:護航記事は「バージョン移行後の probe/ACP 全サイト回帰」;本記事は「バージョン安定後、spawn スケジューリング層の誤選択または handshake 偶発失敗」。連携時は upgrade ラダー通過を先に確認し、本記事の runtime マトリクスへ——さもないと split-brain を streamTo 誤設定と誤判断します。
# 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 修復継続(設定/bridge) | 一時 runtime=subagent | ピン留め/ロールバック |
|---|---|---|---|
| spawn/acp のみ赤、メインチャネルと subagent プローブは正常 | acpx 登録、startup probe 調査 | 推奨:UI 戻し不要タスクは subagent 優先 | 既知 regression ウィンドウ内で検討 |
| acp + subagent 両方失敗、probe も赤 | backup 復元後のみ単步試行 | 第一選択ではない | 優先 backup または digest ロールバック |
| UI 戻し必須、acp 利用不可 | bridge 修復前に業務損害 | streamTo シナリオは代替不可 | ロールバック評価またはリモート Mac 常駐 Gatewayへ |
runtime、streamTo / resumeSessionId の有無、メインセッション API 形態(Completions vs Responses)を記録。openclaw gateway status + gateway probe;アップグレード後は必ず単回 reload(アップグレード護航参照)。OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE;1008 / queue owner ログ取得。sessions_spawn 成功回数 / 総呼び出し;acp 桶が 95% 未満で subagent 桶が正常なら、モデル変更より bridge 修復を優先。runtime=subagent 呼び出しに streamTo/resumeSessionId が残る監査カウント;本番目標 0(アプリ層 lint またはテンプレートレビュー)。ノート PC Gateway で acpx、蓋閉じスリープ、複数 provider プラグインを混在させると、spawn 失敗が「OpenClaw 不安定」と誤記録されがちです。より安定した方法は、権威 Gateway と acpx を常時電源のリモート Macに同居させ、ローカルは SSH で Control UI を転送のみ——spawn と probe を同一ノードで受け入れ、ログタイムラインを揃えます。
メイン Agent の prompt だけを繰り返し変更し、runtime と streamTo の整合を確認しないと、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でトポロジを連結してください。
よくある質問
streamTo と resumeSessionId は runtime=subagent で使えますか?
使えません。いずれも runtime=acp の ACP 継続と UI 戻し専用です。subagent パスでは task 等の Gateway 内蔵フィールドのみ渡してください。テンプレートレビューはレンタル料金の本番ノードチケット化実践を参照できます。
ACP が 1008 または queue owner unavailable を返したら必ずバージョンをロールバックしますか?
必ずしもそうではありません。症状表で bridge 登録と Docker ペアリング 1008 を区別してください。メインチャネル正常なら一時 runtime=subagent と Windows startup probe を使用。両パス連続失敗時はdigest ロールバック;接続問題はヘルプセンターをご参照ください。