アップストリームサービスが通常の HTTP モデル API を公開している場合は、代わりに
プロバイダー Plugin を作成します。アップストリーム
ランタイムが完全なエージェントセッション、ツールイベント、Compaction、またはバックグラウンド
タスクの状態を管理する場合は、エージェントハーネス を使用します。
Plugin が管理するもの
CLI バックエンド Plugin には、3 つのコントラクトがあります。
マニフェストは検出用メタデータです。CLI を実行したり、ランタイム動作を登録したりするものではありません。ランタイム動作は、Plugin エントリが
api.registerCliBackend(...) を呼び出した時点で開始されます。
最小構成のバックエンド Plugin
1
パッケージメタデータを作成する
package.json
./src/index.ts の場合は、ビルド済みの
JavaScript 側を指す openclaw.runtimeExtensions を追加します。エントリポイントを参照してください。2
バックエンドの所有権を宣言する
openclaw.plugin.json
cliBackends はランタイムの所有権リストです。これにより、モデル選択または agentRuntime.id で acme-cli が指定された場合に、OpenClaw が
Plugin を自動ロードできます。setup.cliBackends は、記述子を優先するセットアップサーフェスです。モデル検出、オンボーディング、またはステータスで、Plugin ランタイムをロードせずにバックエンドを認識する必要がある場合に追加します。
セットアップにこれらの静的記述子だけで十分な場合にのみ、requiresRuntime: false を使用します。3
バックエンドを登録する
index.ts
cliBackends エントリと一致する必要があります。登録された
アダプターが正式な Plugin コードです。OpenClaw の設定はバックエンドを選択しますが、そのコマンドコントラクトを書き換えることはありません。設定の構造
CliBackendConfig は、OpenClaw が CLI を起動して解析する方法を定義します。上記の実例では、バンドルされている
google-gemini-cli アダプターと同じコマンド、再開、JSONL、モデルエイリアス、セッション、画像、ウォッチドッグの各フィールドを意図的に使用しています。
CLI に合致する最小限の静的設定を推奨します。本当にバックエンドが担うべき動作にのみ、Plugin コールバックを追加してください。
高度なバックエンドフック
CliBackendPlugin では、次の項目も定義できます。
これらのフックはプロバイダー側で管理してください。バックエンドフックで動作を表現できる場合は、コアに CLI 固有の分岐を追加しないでください。
prepareExecution(ctx) は、実行用に選択された有効なトークン上限である ctx.contextTokenBudget を受け取ります。ネイティブ Compaction を所有するバックエンドは、その予算を各 CLI 固有の起動契約にマッピングできます。
runtimeArtifact は Plugin が所有します。これは、ライブ推論ターンが検証済みセットアップ権限を新規発行または再検証する場合にのみ参照されます。通常の CLI 実行では必要ありません。この宣言がないバックエンドは、検証済み CLI セットアップ権限を発行できません。bundled-package-tree 宣言では、正確な package.json 所有者を指定し、パッケージのエントリポイントがコマンドであることを必須とします。OpenClaw は、ネストされた依存関係を含む、制限された完全なインストール済みパッケージツリーをハッシュし、リダイレクトするシンボリックリンク、宣言されたパッケージ外のランチャー、必須の外部依存関係宣言、サイズ超過のツリー、不明なスクリプトがある場合はフェイルクローズします。そのツリーに完全な推論実装が含まれる場合にのみ、これを宣言してください。オプションのツール統合があっても、外部実装グラフが安全になるわけではありません。
同じバックエンドが自己完結型のネイティブ実行可能ファイルも提供する場合は、その正規ベース名を nativeExecutableNames に列挙します。その他のネイティブコマンドは未検証のままです。
ctx.executionMode は、通常のターンでは "agent"、一時的な /btw 呼び出しでは "side-question" です。BTW のためにネイティブツール、セッションの永続化、再開動作を無効にする場合など、CLI に異なるワンショットフラグが必要なときに使用します。通常は nativeToolMode: "always-on" を持つバックエンドでも、補足質問用の argv によってそれらのツールが確実に無効化される場合は、sideQuestionToolMode: "disabled" も設定してください。そうでない場合、BTW がツールなしの CLI 実行を必要とすると、OpenClaw はフェイルクローズします。
バックエンドが実行ごとにすべてのバックエンドネイティブツールを無効化できる場合にのみ、nativeToolMode: "selectable" を設定してください。制限付き実行には正規契約が渡されます。ctx.toolAvailability.native はバックエンドネイティブツールの正確なリスト、ctx.toolAvailability.openClaw は OpenClaw ツール名の正確なリストです。ホストは、生成される MCP 設定と付与も、その OpenClaw リストに独立して制限します。Plugin はこれをコア内で変換したり、トランスポートプレフィックスを追加したりしてはなりません。
バックエンドがその契約をどのように適用するかを宣言します。
toolAvailabilityEnforcement: "execution-args"にはresolveExecutionArgsが必要です。フックは競合するツールフラグを置換し、選択されたツール以外を実行できるカスタマイズ面を無効化して、新規実行と再開実行の両方に適用 argv を返す必要があります。toolAvailabilityEnforcement: "prepare-execution"にはprepareExecutionが必要です。フックは実行ごとの正確なポリシーをステージングしてtoolAvailabilityEnforced: trueを返す必要があります。確認応答がない場合はフェイルクローズし、OpenClaw は起動前にステージング済みリソースをクリーンアップします。
toolsAllow などのランタイム上限は、この契約が構築される前に OpenClaw によって正規化され、グループ展開されます。ネイティブツールは無効化され、完全に宣言された適用経路を持たないバックエンドは実行前に失敗します。
v2026.7.2-beta.1 から v2026.7.2-beta.3 を対象として構築された Plugin は、非推奨の ctx.toolAvailability.mcp トランスポート名プロジェクションを引き続き読み取れる場合があり、選択可能なバックエンドが resolveExecutionArgs を実装している場合は toolAvailabilityEnforcement を省略できる場合があります。OpenClaw は、Plugin パッケージに必須の openclaw.build.openclawVersion メタデータから、そのリリース済みベータ経路を認識し、2026.8.x 系列まで維持します。新規および更新済みの Plugin では、正規の ctx.toolAvailability.openClaw 名を使用し、toolAvailabilityEnforcement: "execution-args" を明示的に宣言してください。ベータ互換経路は、その期間の終了後に削除される予定です。
ownsNativeCompaction: OpenClaw Compaction のオプトアウト
バックエンドが独自のトランスクリプトを Compaction するエージェントを実行する場合は、ownsNativeCompaction: true を設定し、OpenClaw のセーフガード要約機能がそのセッションに対して決して実行されないようにします。CLI Compaction のライフサイクルは何もせずに戻り、ターンが続行されます。Claude Code はハーネスエンドポイントを使用せずに内部で Compaction を行うため、claude-cli を宣言します。一方、Codex などのネイティブハーネスセッションは、引き続きハーネスの Compaction エンドポイントにルーティングされます。
以下のすべてを満たす場合にのみ宣言してください。そうでない場合、遅延された予算超過セッションが予算超過のままになったり、古くなったりする可能性があります(OpenClaw はそのセッションを救済しなくなります)。
- バックエンドは、ウィンドウ上限に近づくと、独自のトランスクリプトを確実に Compaction または制限する。
- Compaction 済みの状態がターンをまたいで保持されるよう、再開可能なセッションを永続化する(例:
--resume/--session-id)。 - ネイティブハーネスの Compaction セッションではない。
agentHarnessIdに一致するセッションは、代わりにハーネスエンドポイントへルーティングされる。
MCP ツールブリッジ
CLI バックエンドは、デフォルトでは OpenClaw ツールを受け取りません。CLI が MCP 設定を利用できる場合は、明示的にオプトインします。
CLI が実際にブリッジを利用できる場合にのみ有効化してください。CLI に無効化できない独自の組み込みツールレイヤーがある場合は、
nativeToolMode: "always-on" を設定します。これにより、呼び出し元がネイティブツールなしを要求したときに OpenClaw がフェイルクローズできます。実行ごとにすべてのネイティブツールを無効化できる場合は、上記の resolveExecutionArgs 契約とともに "selectable" を使用します。
バックエンドの選択
ユーザーは、モデル参照プレフィックスを使用してスタンドアロンバックエンドを選択します。正規のmodelProvider を宣言するバックエンドは、代わりにそのプロバイダーモデルの agentRuntime.id を通じて選択できます。アダプターの仕組みは Plugin 内に保持されます。
PATH 上にあることを確認してください。異なるパスまたは argv を必要とするデプロイでは、Plugin 登録を変更するかラップする必要があります。
検証
バンドルされた Plugin の場合は、ビルダーとセットアップ登録に焦点を絞ったテストを追加してから、Plugin の対象テストレーンを実行します。チェックリスト
package.json に openclaw.extensions があり、公開パッケージ用にビルドされたランタイムエントリがあるopenclaw.plugin.json が cliBackends と意図した activation.onStartup を宣言しているセットアップまたはモデル検出がコールド状態でバックエンドを認識すべき場合、
setup.cliBackends が存在するapi.registerCliBackend(...) がマニフェストと同じバックエンド ID を使用しているバックエンドのモデルプレフィックスまたはモデルスコープの
agentRuntime.id が登録を選択するセッション、システムプロンプト、画像、出力パーサーの設定が実際の CLI 契約と一致する
対象テストと少なくとも 1 回のライブ CLI スモークテストでバックエンド経路を実証する
関連項目
- CLI バックエンド - ランタイムの選択と動作
- Plugin の構築 - パッケージとマニフェストの基本
- Plugin SDK の概要 - 登録 API リファレンス
- Plugin マニフェスト -
cliBackendsとセットアップ記述子 - エージェントハーネス - 完全な外部エージェントランタイム