openclaw acp はゲートウェイをバックエンドとする ACP ブリッジであり、完全な ACP ネイティブのエディタランタイムではありません。セッションのルーティング、プロンプトの配信、および基本的なストリーミング更新に重点を置いています。
互換性マトリックス
| ACP 領域 | ステータス | 備考 |
|---|---|---|
initialize, newSession, prompt, cancel | 実装済み | 標準入出力を介したブリッジフロー。ゲートウェイへの chat/send および実行中止に対応。 |
listSessions, スラッシュコマンド | 実装済み | セッション一覧はゲートウェイのセッション状態に基づきます。コマンドは available_commands_update 経由で通知されます。 |
loadSession | 部分的 | ACP セッションをゲートウェイのセッションキーに再バインドし、保存されているユーザー/アシスタントのテキスト履歴を再生します。ツールやシステムの履歴はまだ再構築されません。 |
プロンプト内容 (text, 埋め込み resource, 画像) | 部分的 | テキストやリソースはチャット入力にフラット化されます。画像はゲートウェイの添付ファイルになります。 |
| セッションモード | 部分的 | session/set_mode がサポートされています。ブリッジは、思考レベル、ツールの詳細度、推論、使用状況の詳細、および権限昇格アクションに対するゲートウェイベースの初期制御を公開します。広範な ACP ネイティブのモードや構成は対象外です。 |
| セッション情報と使用状況の更新 | 部分的 | キャッシュされたゲートウェイのセッションスナップショットから session_info_update と、ベストエフォートで usage_update 通知を発行します。使用状況は概算であり、ゲートウェイのトークン合計が更新された場合にのみ送信されます。 |
| ツールストリーミング | 部分的 | tool_call / tool_call_update イベントには、生の I/O、テキスト内容、およびゲートウェイツールの引数/結果に含まれる場合はベストエフォートでファイル位置が含まれます。埋め込みターミナルやリッチな diff 出力にはまだ対応していません。 |
セッションごとの MCP サーバー (mcpServers) | 未サポート | ブリッジモードではセッションごとの MCP サーバー要求を拒否します。代わりに OpenClaw のゲートウェイまたはエージェントで MCP を構成してください。 |
クライアント側ファイルシステムメソッド (fs/read_text_file, fs/write_text_file) | 未サポート | ブリッジは ACP クライアントのファイルシステムメソッドを呼び出しません。 |
クライアント側ターミナルメソッド (terminal/*) | 未サポート | ブリッジは ACP クライアントターミナルを作成したり、ツール呼び出しを通じてターミナル ID をストリーミングしたりしません。 |
| セッションプラン / 思考ストリーミング | 未サポート | 現在、ブリッジは出力テキストとツールのステータスのみを出力し、ACP のプランや思考プロセスの更新は出力しません。 |
既知の制限事項
loadSessionは保存されたユーザーとアシスタントのテキスト履歴を再生しますが、過去のツール呼び出し、システム通知、またはリッチな ACP ネイティブイベントタイプは再構築しません。- 複数の ACP クライアントが同じゲートウェイセッションキーを共有する場合、イベントやキャンセル(中断)のルーティングはクライアントごとに厳密に分離されるのではなく、ベストエフォートになります。クリーンなエディタローカルのターンが必要な場合は、デフォルトの分離された
acp:<uuid>セッションを使用してください。 - ゲートウェイの停止状態は ACP の停止理由に変換されますが、そのマッピングは完全な ACP ネイティブランタイムほど表現力が高くありません。
- 初期のセッション制御は、現在、思考レベル、ツールの詳細度、推論、使用状況の詳細、および権限昇格アクションといった、ゲートウェイの設定のサブセットのみを対象としています。モデル選択や実行ホストの制御は、まだ ACP 構成オプションとして公開されていません。
session_info_updateとusage_updateは、ライブの ACP ネイティブランタイム計測ではなく、ゲートウェイのセッションスナップショットから派生しています。使用状況は概算であり、コストデータは含まれず、ゲートウェイがトークン合計データを「最新」とマークした場合にのみ発行されます。- ツールの追跡データはベストエフォートです。ブリッジは既知のツールの引数や結果に現れるファイルパスを表示できますが、ACP ターミナルや構造化されたファイル diff はまだ発行しません。
使用法
ACP クライアント (デバッグ用)
IDE を介さずにブリッジの動作確認を行うための組み込み ACP クライアントです。ACP ブリッジを起動し、対話的にプロンプトを入力できます。- 自動承認は許可リストに基づいており、信頼されたコアツール ID にのみ適用されます。
readの自動承認は、現在の作業ディレクトリ(--cwd設定時)に制限されます。- 未知のツールや非コアツール、範囲外の読み取り、および危険なツールには、常に明示的な承認プロンプトが必要です。
- サーバーから提供される
toolCall.kindは、信頼できないメタデータとして扱われます(権限付与の根拠にはなりません)。
利用手順
IDE(または他のクライアント)が Agent Client Protocol をサポートしており、OpenClaw ゲートウェイのセッションを操作したい場合に ACP を使用します。- ゲートウェイが起動していることを確認します(ローカルまたはリモート)。
- ゲートウェイの接続先を構成します(構成ファイルまたはフラグ)。
- IDE の設定で、stdio 経由で
openclaw acpを実行するように指定します。
エージェントの選択
ACP はエージェントを直接選択するのではなく、ゲートウェイのセッションキーによってルーティングを行います。 特定のエージェントをターゲットにするには、エージェントスコープのセッションキーを使用します:acp:<uuid> セッションを使用します。
ブリッジモードでは、セッションごとの mcpServers はサポートされていません。ACP クライアントが newSession や loadSession 時にこれらを送信した場合、ブリッジは黙って無視するのではなく、明確なエラーを返します。
acpx (Codex, Claude Code 等の ACP クライアント) からの利用
Codex や Claude Code などのコーディングエージェントから OpenClaw ボットと ACP 経由で通信したい場合は、acpx の組み込み openclaw ターゲットを使用します。
標準的な流れ:
- ゲートウェイを実行し、ACP ブリッジから到達可能であることを確認します。
acpx openclawの参照先としてopenclaw acpを指定します。- コーディングエージェントに使用させたい OpenClaw のセッションキーを指定します。
~/.acpx/config.json で openclaw エージェントコマンドを上書きします:
Zed エディタのセットアップ
~/.config/zed/settings.json にカスタム ACP エージェントを追加します(または Zed の設定 UI を使用します):
セッションマッピング
デフォルトでは、ACP セッションにはacp: プレフィックスが付いた分離されたゲートウェイセッションキーが割り当てられます。既存のセッションを再利用するには、セッションキーまたはラベルを渡します。
--session <key>: 特定のゲートウェイセッションキーを使用します。--session-label <label>: 既存のセッションをラベルで解決します。--reset-session: そのキーに対して新しいセッション ID を発行します(同じキーですが、履歴は新しくなります)。
オプション
--url <url>: ゲートウェイの WebSocket URL (構成済みであれば gateway.remote.url がデフォルトとなります)。--token <token>: ゲートウェイ認証トークン。--token-file <path>: ゲートウェイ認証トークンをファイルから読み込みます。--password <password>: ゲートウェイ認証パスワード。--password-file <path>: ゲートウェイ認証パスワードをファイルから読み込みます。--session <key>: デフォルトのセッションキー。--session-label <label>: 解決するデフォルトのセッションラベル。--require-existing: セッションキーやラベルが存在しない場合にエラーにします。--reset-session: 初回使用前にセッションキーをリセットします。--no-prefix-cwd: プロンプトの前に作業ディレクトリを付加しません。--verbose, -v: stderr への詳細ログ出力を有効にします。
- 一部のシステムでは、
--tokenや--passwordはローカルのプロセス一覧から可視状態になる場合があります。 --token-file/--password-fileまたは環境変数 (OPENCLAW_GATEWAY_TOKEN,OPENCLAW_GATEWAY_PASSWORD) の使用を推奨します。- ゲートウェイ認証の解決は、他のゲートウェイクライアントと共通のルールに従います:
- ローカルモード: 環境変数 (
OPENCLAW_GATEWAY_*) ->gateway.auth.*->gateway.auth.*未設定時はgateway.remote.*へフォールバック - リモートモード:
gateway.remote.*(リモート優先順位ルールによる環境変数/構成フォールバックあり) --url指定時は上書きが優先され、暗黙的な構成や環境変数の認証情報は再利用されません。明示的に--token/--password(またはファイル版) を指定してください。
- ローカルモード: 環境変数 (
- ACP ランタイムバックエンドの子プロセスは
OPENCLAW_SHELL=acpを受け取ります。これはコンテキスト固有のシェルやプロフィールルールに使用できます。 openclaw acp clientは、起動したブリッジプロセスにOPENCLAW_SHELL=acp-clientを設定します。
acp client オプション
--cwd <dir>: ACP セッションの作業ディレクトリ。--server <command>: ACP サーバーコマンド (デフォルト:openclaw)。--server-args <args...>: ACP サーバーに渡す追加の引数。--server-verbose: ACP サーバーの詳細ログ出力を有効にします。--verbose, -v: クライアントの詳細ログ出力。