高速なオペレータ フロー
実用的な/acp Runbook が必要な場合は、これを使用します。
- セッションを生成します。
/acp spawn codex --mode persistent --thread auto
- バインドされたスレッドで作業します (または、そのセッション キーを明示的にターゲットにします)。
- 実行時の状態を確認します。
/acp status
- 必要に応じてランタイム オプションを調整します。
/acp model <provider/model>/acp permissions <profile>/acp timeout <seconds>
- コンテキストを置き換えずにアクティブなセッションをナッジします。
/acp steer tighten logging and continue
- 作業を停止します。
/acp cancel(現在のターンを停止)、または/acp close(セッションを閉じてバインディングを削除)
人間のためのクイック スタート
自然なリクエストの例:- 「ここのスレッドで永続的な Codex セッションを開始し、集中したままにしてください。」
- 「これをワンショットのクロード コード ACP セッションとして実行し、結果を要約します。」
- 「スレッド内のこのタスクには Gemini CLI を使用し、同じスレッドでフォローアップを続けてください。」
runtime: "acp" を選択します。2. 要求されたハーネス ターゲットを解決します (agentId、たとえば codex)。3. スレッド バインディングが要求され、現在のチャネルがそれをサポートしている場合は、ACP セッションをスレッドにバインドします。4. フォーカスが外れる/クローズされる/期限切れになるまで、フォローアップ スレッド メッセージを同じ ACP セッションにルーティングします。
ACP とサブエージェント
外部ハーネス ランタイムが必要な場合は、ACP を使用します。 OpenClaw ネイティブの委任された実行が必要な場合は、サブエージェントを使用します。| エリア | ACPセッション | サブエージェントの実行 |
|---|---|---|
| ランタイム | ACP バックエンド プラグイン (例: acpx) | OpenClaw ネイティブ サブエージェント ランタイム |
| セッションキー | agent:<agentId>:acp:<uuid> | agent:<agentId>:subagent:<uuid> |
| 主なコマンド | /acp ... | /subagents ... |
| スポーンツール | sessions_spawn と runtime:"acp" | sessions_spawn (デフォルトのランタイム) |
スレッドバインドされたセッション (チャネルに依存しない)
チャネル アダプタでスレッド バインディングが有効になっている場合、ACP セッションをスレッドにバインドできます。- OpenClaw は、スレッドをターゲット ACP セッションにバインドします。- そのスレッド内のフォローアップ メッセージは、バインドされた ACP セッションにルーティングされます。
- ACP 出力は同じスレッドに返されます。
- フォーカスを解除/閉じる/アーカイブ/アイドル タイムアウトまたは最大有効期限を設定すると、バインドが削除されます。
acp.enabled=trueacp.dispatch.enabledはデフォルトでオンです (ACP ディスパッチを一時停止するにはfalseを設定します)- チャネルアダプター ACP スレッド生成フラグが有効 (アダプター固有)
- ディスコード:
channels.discord.threadBindings.spawnAcpSessions=true - Telegram:
channels.telegram.threadBindings.spawnAcpSessions=true
- ディスコード:
スレッドサポートチャネル
- セッション/スレッド バインディング機能を公開するチャネル アダプター。
- 現在の組み込みサポート:
- Discordのスレッド/チャンネル
- Telegramトピック(グループ/スーパーグループのフォーラムトピックおよびDMトピック)
- プラグイン チャネルは、同じバインディング インターフェイスを通じてサポートを追加できます。
チャンネル固有の設定
非一時的なワークフローの場合は、最上位のbindings[] エントリで永続的な ACP バインディングを構成します。
バインディングモデル- bindings[].type="acp" は、永続的な ACP 会話バインディングをマークします
bindings[].matchはターゲットの会話を識別します。- Discord チャンネルまたはスレッド:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Telegram フォーラムのトピック:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>"
- Discord チャンネルまたはスレッド:
bindings[].agentIdは、所有する OpenClaw エージェント ID です。- オプションの ACP オーバーライドは
bindings[].acpの下にあります。mode(persistentまたはoneshot)labelcwdbackend
エージェントごとのランタイムのデフォルト
agents.list[].runtime を使用して、エージェントごとに 1 回 ACP デフォルトを定義します。
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(ハーネス ID、例:codexまたはclaude)agents.list[].runtime.acp.backendagents.list[].runtime.acp.modeagents.list[].runtime.acp.cwd
bindings[].acp.*agents.list[].runtime.acp.*- グローバル ACP デフォルト (例:
acp.backend)
- OpenClaw は、構成された ACP セッションが使用前に存在することを確認します。
- そのチャネルまたはトピック内のメッセージは、構成された ACP セッションにルーティングされます。
- バインドされた会話では、
/newと/resetが同じ ACP セッション キーを所定の場所にリセットします。 - 一時的なランタイム バインディング (スレッド フォーカス フローによって作成されたものなど) は、存在する場合には引き続き適用されます。
ACP セッション (インターフェイス) を開始します
sessions_spawn より
runtime: "acp" を使用して、エージェント ターンまたはツール コールから ACP セッションを開始します。
runtimeのデフォルトはsubagentなので、ACP セッションに対して明示的にruntime: "acp"を設定します。agentIdが省略された場合、OpenClaw は設定時にacp.defaultAgentを使用します。mode: "session"では、永続的なバインドされた会話を維持するためにthread: trueが必要です。
task (必須): ACP セッションに送信される最初のプロンプト。
runtime(ACP に必須):"acp"である必要があります。agentId(オプション): ACP ターゲット ハーネス ID。設定されている場合は、acp.defaultAgentに戻ります。thread(オプション、デフォルトfalse): サポートされている場合、リクエスト スレッド バインディング フロー。mode(オプション):run(ワンショット) またはsession(永続)。- デフォルトは
runです thread: trueとモードが省略された場合、OpenClaw はデフォルトでランタイム パスごとに永続的な動作を行う可能性がありますmode: "session"にはthread: trueが必要です
- デフォルトは
cwd(オプション): 要求されたランタイム作業ディレクトリ (バックエンド/ランタイム ポリシーによって検証される)。label(オプション): セッション/バナー テキストで使用されるオペレータ向けのラベル。streamTo(オプション):"parent"は、最初の ACP 実行の進行状況の概要をシステム イベントとしてリクエスタ セッションにストリーミングします。- 利用可能な場合、受け入れられた応答にはセッション スコープの JSONL ログ (
<sessionId>.acp-stream.jsonl) を指すstreamLogPathが含まれており、完全なリレー履歴を追跡できます。
- 利用可能な場合、受け入れられた応答にはセッション スコープの JSONL ログ (
オペレーターの煙テスト
ACP が生成されることを簡単にライブチェックしたい場合は、ゲートウェイのデプロイ後にこれを使用します。 単体テストに合格するだけでなく、実際にはエンドツーエンドで動作します。 推奨ゲート:1. デプロイされたゲートウェイのバージョン/ターゲット ホスト上のコミットを確認します。 2. デプロイされたソースに ACP リネージの受け入れが含まれていることを確認します。src/gateway/sessions-patch.ts (subagent:* or acp:* sessions)。
3. ライブ エージェントへの一時的な ACPX ブリッジ セッションを開きます (たとえば、
jpclawhq の razor(main))。
4. そのエージェントに、次のように sessions_spawn に電話するよう依頼します。
runtime: "acp"agentId: "codex"mode: "run"- タスク:
Reply with exactly LIVE-ACP-SPAWN-OK
- エージェントのレポートを確認します。
accepted=yes- 本物の
childSessionKey - バリデータエラーなし
- 一時的な ACPX ブリッジ セッションをクリーンアップします。
- 意図的にテストする場合を除き、このスモーク テストは
mode: "run"のままにしてください。 スレッドバインドされた永続的な ACP セッション。 - 基本ゲートには
streamTo: "parent"は必要ありません。その道は以下によって決まります リクエスター/セッション機能は個別の統合チェックです。 - スレッドバインドされた
mode: "session"テストを 2 番目のより充実した統合として扱う 実際の Discord スレッドまたは Telegram トピックから渡されます。
サンドボックスの互換性
ACP セッションは現在、OpenClaw サンドボックス内ではなく、ホスト ランタイム上で実行されます。 現在の制限:- リクエスター セッションがサンドボックス化されている場合、ACP の生成はsessions_spawn({ runtime: "acp" }) と /acp spawn の両方でブロックされます。
- エラー:
Sandboxed sessions cannot spawn ACP sessions because runtime="acp" runs on the host. Use runtime="subagent" from sandboxed sessions. sessions_spawnとruntime: "acp"は、sandbox: "require"をサポートしません。- エラー:
sessions_spawn sandbox="require" is unsupported for runtime="acp" because ACP sessions run outside the sandbox. Use runtime="subagent" or sandbox="inherit".
- エラー:
runtime: "subagent" を使用します。
/acp コマンドより
必要に応じてチャットからオペレーターを明示的に制御するには、/acp spawn を使用します。
--mode persistent|oneshot--thread auto|here|off--cwd <absolute-path>--label <name>
セッションターゲットの解決
ほとんどの/acp アクションは、オプションのセッション ターゲット (session-key、session-id、または session-label) を受け入れます。
解決順序:
- 明示的なターゲット引数 (または
/acp steerの場合は--session)- キーを試行します
- 次に、UUID 形式のセッション ID
- 次にラベルを付けます
- 現在のスレッド バインディング (この会話/スレッドが ACP セッションにバインドされている場合)
- 現在のリクエスターセッションのフォールバック
Unable to resolve session target: ...) を返します。
スレッドモードを生成する
/acp spawn は `—thread auto | here | off` をサポートします。 | モード | 行動 |
|---|---|---|---|---|
auto | アクティブなスレッドの場合: そのスレッドをバインドします。スレッドの外側: サポートされている場合は、子スレッドを作成/バインドします。 | |||
here | 現在アクティブなスレッドが必要です。 1つでもなければ失敗します。 | |||
off | 拘束力はありません。セッションはバインドされていない状態で開始されます。 |
- 非スレッド バインディング サーフェスでは、デフォルトの動作は実質的に
offになります。 - スレッドバウンドのスポーンにはチャネル ポリシーのサポートが必要です。
- ディスコード:
channels.discord.threadBindings.spawnAcpSessions=true - Telegram:
channels.telegram.threadBindings.spawnAcpSessions=true
- ディスコード:
ACP コントロール
利用可能なコマンドファミリー:/acp spawn/acp cancel/acp steer/acp close/acp status/acp set-mode/acp set/acp cwd/acp permissions/acp timeout/acp model/acp reset-options/acp sessions/acp doctor/acp install
/acp status は、有効なランタイム オプションと、使用可能な場合はランタイム レベルとバックエンド レベルの両方のセッション ID を示します。一部のコントロールはバックエンド機能に依存します。バックエンドがコントロールをサポートしていない場合、OpenClaw は明確なサポートされていないコントロール エラーを返します。
ACP コマンド クックブック|コマンド |何をするのか |例 |
| -------------------- | -------------------------------------------------------- | -------------------------------------------------------------- | |/acp spawn | ACP セッションを作成します。オプションのスレッドバインド。 | /acp spawn codex --mode persistent --thread auto --cwd /repo |
| /acp cancel |ターゲットセッションの飛行中のターンをキャンセルします。 | /acp cancel agent:codex:acp:<uuid> |
| /acp steer |実行中のセッションに操縦指示を送信します。 | /acp steer --session support inbox prioritize failing tests |
| /acp close |セッションを閉じて、スレッド ターゲットのバインドを解除します。 | /acp close |
| /acp status |バックエンド、モード、状態、ランタイム オプション、機能を表示します。 | /acp status |
| /acp set-mode |ターゲットセッションのランタイムモードを設定します。 | /acp set-mode plan |
| /acp set |一般的なランタイム構成オプションの書き込み。 | /acp set model openai/gpt-5.2 |
| /acp cwd |実行時の作業ディレクトリのオーバーライドを設定します。 | /acp cwd /Users/user/Projects/repo || /acp permissions |承認ポリシープロファイルを設定します。 | /acp permissions strict |
| /acp timeout |実行時のタイムアウト (秒) を設定します。 | /acp timeout 120 |
| /acp model |ランタイムモデルのオーバーライドを設定します。 | /acp model anthropic/claude-opus-4-5 |
| /acp reset-options |セッションランタイムオプションのオーバーライドを削除します。 | /acp reset-options |
| /acp sessions |ストアからの最近の ACP セッションを一覧表示します。 | /acp sessions |
| /acp doctor |バックエンドの健全性、機能、実用的な修正。 | /acp doctor |
| /acp install |決定的なインストールと有効化の手順を出力します。 | /acp install |
実行時オプションのマッピング
/acp には便利なコマンドと汎用セッターがあります。
同等の操作:- /acp model <id> は、ランタイム構成キー model にマップされます。
/acp permissions <profile>は、ランタイム構成キーapproval_policyにマップされます。/acp timeout <seconds>は、ランタイム構成キーtimeoutにマップされます。/acp cwd <path>はランタイム cwd オーバーライドを直接更新します。/acp set <key> <value>は汎用パスです。- 特殊なケース:
key=cwdは cwd オーバーライド パスを使用します。
- 特殊なケース:
/acp reset-optionsは、ターゲット セッションのすべてのランタイム オーバーライドをクリアします。
acpx ハーネスのサポート (現在)
現在の acpx 組み込みハーネス エイリアス:piclaudecodexopencodegeminikimi
agentId にはこれらの値を優先してください。
acpx CLI を直接使用すると、--agent <command> 経由で任意のアダプターをターゲットにすることもできますが、その生のエスケープ ハッチは acpx CLI 機能です (通常の OpenClaw agentId パスではありません)。
必要な構成
コア ACP ベースライン:- ディスコード:
channels.discord.threadBindings.spawnAcpSessions=true
acpx バックエンドのプラグインのセットアップ
プラグインをインストールして有効にします。acpx コマンドとバージョンの構成
デフォルトでは、acpx プラグイン (@openclaw/acpx として公開) はプラグインローカルの固定バイナリを使用します。
- コマンドのデフォルトは
extensions/acpx/node_modules/.bin/acpxです。 - 予期されるバージョンのデフォルトは拡張ピンです。
- スタートアップは、ACP バックエンドをすぐに準備完了として登録します。
- バックグラウンド保証ジョブが
acpx --versionを検証します。 - プラグインのローカル バイナリが見つからないか不一致の場合は、次のように実行されます。
npm install --omit=dev --no-save acpx@<pinned>を実行し、再検証します。
commandは、絶対パス、相対パス、またはコマンド名 (acpx) を受け入れます。- 相対パスは OpenClaw ワークスペース ディレクトリから解決されます。
expectedVersion: "any"は厳密なバージョンの一致を無効にします。commandがカスタム バイナリ/パスを指している場合、プラグインのローカル自動インストールは無効になります。- バックエンドのヘルスチェックが実行されている間、OpenClaw の起動はノンブロッキングのままです。
権限の設定
ACP セッションは非対話的に実行されます。ファイル書き込みおよびシェル実行権限のプロンプトを承認または拒否するための TTY はありません。 acpx プラグインは、アクセス許可の処理方法を制御する 2 つの構成キーを提供します。permissionMode
| ハーネス エージェントがプロンプトを表示せずに実行できる操作を制御します。 | 値 | 行動 |
|---|---|---|
approve-all | すべてのファイル書き込みとシェルコマンドを自動承認します。 | |
approve-reads | 自動承認は読み取りのみです。書き込みと実行にはプロンプトが必要です。 | |
deny-all | すべての許可プロンプトを拒否します。 |
nonInteractivePermissions
許可プロンプトが表示されるが対話型 TTY が利用できない場合の動作を制御します (これは ACP セッションの場合に常に当てはまります)。
| 値 | 行動 |
|---|---|
fail | AcpRuntimeError とのセッションを中止します。 (デフォルト) |
deny | 許可を黙って拒否し、続行します (正常な機能低下)。 |
構成
プラグイン構成経由で設定します:重要: 現在、OpenClaw のデフォルトはpermissionMode=approve-readsおよびnonInteractivePermissions=failです。非対話型 ACP セッションでは、権限プロンプトをトリガーする書き込みまたは実行がAcpRuntimeError: Permission prompt unavailable in non-interactive modeで失敗する可能性があります。 権限を制限する必要がある場合は、nonInteractivePermissionsをdenyに設定して、セッションがクラッシュせずに正常に機能を低下させるようにします。
トラブルシューティング|症状 |考えられる原因 |修正 |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |ACP runtime backend is not configured |バックエンドプラグインが見つからないか無効になっています。 |バックエンド プラグインをインストールして有効にし、/acp doctor を実行します。 |
| ACP is disabled by policy (acp.enabled=false) | ACP がグローバルに無効になっています。 | acp.enabled=true を設定します。 || ACP dispatch is disabled by policy (acp.dispatch.enabled=false) |通常のスレッド メッセージからのディスパッチが無効になっています。 | acp.dispatch.enabled=true を設定します。 |
| ACP agent "<id>" is not allowed by policy |エージェントが許可リストに含まれていません。 |許可されている agentId を使用するか、acp.allowedAgents を更新してください。 |
| Unable to resolve session target: ... |不正なキー/ID/ラベル トークン。 | /acp sessions を実行し、正確なキー/ラベルをコピーして、再試行してください。 |
| --thread here requires running /acp spawn inside an active ... thread | --thread here はスレッド コンテキストの外で使用されます。 |ターゲット スレッドに移動するか、--thread auto/off を使用してください。 || Only <user-id> can rebind this thread. |別のユーザーがスレッド バインディングを所有しています。 |所有者として再バインドするか、別のスレッドを使用します。 |
| Thread bindings are unavailable for <channel>. |アダプターにはスレッド バインディング機能がありません。 | --thread off を使用するか、サポートされているアダプター/チャネルに移動してください。 |
| Sandboxed sessions cannot spawn ACP sessions ... | ACP ランタイムはホスト側です。リクエスタセッションはサンドボックス化されています。 |サンドボックス セッションから runtime="subagent" を使用するか、非サンドボックス セッションから ACP spawn を実行します。 |
| sessions_spawn sandbox="require" is unsupported for runtime="acp" ... | sandbox="require" は ACP ランタイム用にリクエストされました。 |必要なサンドボックス化には runtime="subagent" を使用するか、非サンドボックス セッションから sandbox="inherit" で ACP を使用します。 ||バインドされたセッションの ACP メタデータが欠落しています |古い/削除された ACP セッション メタデータ。 | /acp spawn を使用して再作成し、スレッドを再バインド/フォーカスします。 |
| AcpRuntimeError: Permission prompt unavailable in non-interactive mode | permissionMode は、非対話型 ACP セッションでの書き込み/実行をブロックします。 | plugins.entries.acpx.config.permissionMode を approve-all に設定し、ゲートウェイを再起動します。 権限の設定 を参照してください。 |
| ACP セッションが早期に失敗し、出力がほとんどありません。権限プロンプトは permissionMode/nonInteractivePermissions によってブロックされます。 |ゲートウェイ ログで AcpRuntimeError を確認してください。完全な権限を得るには、permissionMode=approve-all を設定します。正常に機能を低下させるには、nonInteractivePermissions=deny を設定します。 |
| ACP セッションが作業完了後に無期限に停止します。ハーネス プロセスは完了しましたが、ACP セッションが完了を報告しませんでした。 | ps aux \| grep acpx で監視します。古いプロセスを手動で強制終了します。 |