メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

CLI バックエンド Plugin により、OpenClaw はローカルの AI CLI をテキスト推論バックエンドとして呼び出せます。バックエンドはモデル参照内のプロバイダープレフィックスとして表示されます。
acme-cli/acme-large
上流統合がすでにローカルコマンドとして公開されている場合、CLI がローカルのログイン状態を所有している場合、または API プロバイダーが利用できないときの有用なフォールバックとして CLI を使える場合は、CLI バックエンドを使用します。
上流サービスが通常の HTTP モデル API を公開している場合は、代わりに provider plugin を作成してください。上流ランタイムが完全なエージェントセッション、ツールイベント、Compaction、またはバックグラウンドタスクの状態を所有している場合は、agent harness を使用してください。

Plugin が所有するもの

CLI バックエンド Plugin には 3 つの契約があります。
契約ファイル目的
パッケージエントリpackage.jsonOpenClaw に Plugin ランタイムモジュールを示す
マニフェスト所有権openclaw.plugin.jsonランタイム読み込み前にバックエンド ID を宣言する
ランタイム登録index.tsコマンドのデフォルトで api.registerCliBackend(...) を呼び出す
マニフェストは検出メタデータです。CLI を実行せず、ランタイム動作も登録しません。ランタイム動作は、Plugin エントリが api.registerCliBackend(...) を呼び出したときに開始します。

最小バックエンド Plugin

1

パッケージメタデータを作成する

package.json
{
  "name": "@acme/openclaw-acme-cli",
  "version": "1.0.0",
  "type": "module",
  "openclaw": {
    "extensions": ["./index.ts"],
    "compat": {
      "pluginApi": ">=2026.3.24-beta.2",
      "minGatewayVersion": "2026.3.24-beta.2"
    },
    "build": {
      "openclawVersion": "2026.3.24-beta.2",
      "pluginSdkVersion": "2026.3.24-beta.2"
    }
  },
  "dependencies": {
    "openclaw": "^2026.3.24"
  },
  "devDependencies": {
    "typescript": "^5.9.0"
  }
}
公開パッケージには、ビルド済みの JavaScript ランタイムファイルを含める必要があります。ソースエントリが ./src/index.ts の場合は、ビルド済み JavaScript の対応ファイルを指す openclaw.runtimeExtensions を追加してください。Entry points を参照してください。
2

バックエンドの所有権を宣言する

openclaw.plugin.json
{
  "id": "acme-cli",
  "name": "Acme CLI",
  "description": "Run Acme's local AI CLI through OpenClaw",
  "cliBackends": ["acme-cli"],
  "setup": {
    "cliBackends": ["acme-cli"],
    "requiresRuntime": false
  },
  "activation": {
    "onStartup": false
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false
  }
}
cliBackends はランタイム所有権リストです。設定やモデル選択で acme-cli/... が指定されたときに、OpenClaw が Plugin を自動読み込みできるようにします。setup.cliBackends は記述子優先のセットアップサーフェスです。モデル検出、オンボーディング、またはステータスが Plugin ランタイムを読み込まずにバックエンドを認識するべき場合に追加してください。セットアップに静的記述子だけで十分な場合にのみ requiresRuntime: false を使用します。
3

バックエンドを登録する

index.ts
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import {
  CLI_FRESH_WATCHDOG_DEFAULTS,
  CLI_RESUME_WATCHDOG_DEFAULTS,
  type CliBackendPlugin,
} from "openclaw/plugin-sdk/cli-backend";

function buildAcmeCliBackend(): CliBackendPlugin {
  return {
    id: "acme-cli",
    liveTest: {
      defaultModelRef: "acme-cli/acme-large",
      defaultImageProbe: false,
      defaultMcpProbe: false,
      docker: {
        npmPackage: "@acme/acme-cli",
        binaryName: "acme",
      },
    },
    config: {
      command: "acme",
      args: ["chat", "--json"],
      output: "json",
      input: "stdin",
      modelArg: "--model",
      sessionArg: "--session",
      sessionMode: "existing",
      sessionIdFields: ["session_id", "conversation_id"],
      systemPromptFileArg: "--system-file",
      systemPromptWhen: "first",
      imageArg: "--image",
      imageMode: "repeat",
      reliability: {
        watchdog: {
          fresh: { ...CLI_FRESH_WATCHDOG_DEFAULTS },
          resume: { ...CLI_RESUME_WATCHDOG_DEFAULTS },
        },
      },
      serialize: true,
    },
  };
}

export default definePluginEntry({
  id: "acme-cli",
  name: "Acme CLI",
  description: "Run Acme's local AI CLI through OpenClaw",
  register(api) {
    api.registerCliBackend(buildAcmeCliBackend());
  },
});
バックエンド ID はマニフェストの cliBackends エントリと一致している必要があります。登録された config はデフォルトにすぎません。実行時には agents.defaults.cliBackends.acme-cli 配下のユーザー設定がその上にマージされます。

設定の形

CliBackendConfig は、OpenClaw が CLI をどのように起動し解析するべきかを記述します。
フィールド用途
commandバイナリ名または絶対コマンドパス
args新規実行用の基本 argv
resumeArgs再開セッション用の代替 argv。{sessionId} をサポート
output / resumeOutputパーサー: jsonjsonl、または text
inputプロンプト転送: arg または stdin
modelArgモデル ID の前に使用するフラグ
modelAliasesOpenClaw のモデル ID を CLI ネイティブ ID にマップする
sessionArg / sessionArgsセッション ID の渡し方
sessionModealwaysexisting、または none
sessionIdFieldsOpenClaw が CLI 出力から読み取る JSON フィールド
systemPromptArg / systemPromptFileArgシステムプロンプト転送
systemPromptWhenfirstalways、または never
imageArg / imageMode画像パスのサポート
serialize同一バックエンドの実行順序を維持する
reliability.watchdog出力なしタイムアウトの調整
CLI に一致する最小限の静的設定を優先してください。Plugin コールバックは、バックエンドが本当に所有するべき動作にのみ追加します。

高度なバックエンドフック

CliBackendPlugin では次も定義できます。
フック用途
normalizeConfig(config, context)マージ後にレガシーユーザー設定を書き換える
resolveExecutionArgs(ctx)思考の深さなど、リクエストスコープのフラグを追加する
prepareExecution(ctx)起動前に一時的な認証または設定ブリッジを作成する
transformSystemPrompt(ctx)最終的な CLI 固有のシステムプロンプト変換を適用する
textTransforms双方向のプロンプト/出力置換
defaultAuthProfileId特定の OpenClaw 認証プロファイルを優先する
authEpochMode認証変更が保存済み CLI セッションを無効化する方法を決める
nativeToolModeCLI に常時有効のネイティブツールがあるかを宣言する
bundleMcp / bundleMcpModeOpenClaw の loopback MCP ツールブリッジにオプトインする
これらのフックはプロバイダー所有のままにしてください。バックエンドフックで表現できる動作について、CLI 固有の分岐をコアに追加しないでください。

MCP ツールブリッジ

CLI バックエンドはデフォルトでは OpenClaw ツールを受け取りません。CLI が MCP 設定を利用できる場合は、明示的にオプトインします。
return {
  id: "acme-cli",
  bundleMcp: true,
  bundleMcpMode: "codex-config-overrides",
  config: {
    command: "acme",
    args: ["chat", "--json"],
    output: "json",
  },
};
サポートされているブリッジモードは次のとおりです。
モード用途
claude-config-fileMCP 設定ファイルを受け取る CLI
codex-config-overridesargv 上で設定オーバーライドを受け取る CLI
gemini-system-settingsシステム設定ディレクトリから MCP 設定を読み取る CLI
CLI が実際に利用できる場合にのみブリッジを有効にしてください。CLI に無効化できない組み込みツールレイヤーがある場合は、nativeToolMode: "always-on" を設定し、呼び出し元がネイティブツールなしを要求したときに OpenClaw がクローズドに失敗できるようにします。

ユーザー設定

ユーザーは任意のバックエンドデフォルトを上書きできます。
{
  agents: {
    defaults: {
      cliBackends: {
        "acme-cli": {
          command: "/opt/acme/bin/acme",
          args: ["chat", "--json", "--profile", "work"],
          modelAliases: {
            large: "acme-large-2026",
          },
        },
      },
      model: {
        primary: "openai/gpt-5.5",
        fallbacks: ["acme-cli/large"],
      },
    },
  },
}
ユーザーが必要としそうな最小限の上書きを文書化してください。通常は、バイナリが PATH の外にある場合の command だけです。

検証

バンドル済み Plugin では、ビルダーとセットアップ登録に焦点を当てたテストを追加し、その Plugin の対象テストレーンを実行します。
pnpm test extensions/acme-cli
ローカルまたはインストール済み Plugin では、検出と実際のモデル実行を 1 回検証します。
openclaw plugins inspect acme-cli --runtime --json
openclaw agent --message "reply exactly: backend ok" --model acme-cli/acme-large
バックエンドが画像または MCP をサポートしている場合は、実際の CLI でそれらのパスを証明するライブスモークを追加してください。プロンプト、画像、MCP、またはセッション再開の動作について、静的検査に依存しないでください。

チェックリスト

package.jsonopenclaw.extensions があり、公開パッケージ用のビルド済みランタイムエントリがある
openclaw.plugin.jsoncliBackends と意図した activation.onStartup を宣言している
セットアップ/モデル検出がバックエンドをコールド状態で見るべき場合、setup.cliBackends が存在する
api.registerCliBackend(...) がマニフェストと同じバックエンド ID を使用している
agents.defaults.cliBackends.<id> 配下のユーザー上書きが引き続き優先される
セッション、システムプロンプト、画像、出力パーサーの設定が実際の CLI 契約と一致している
対象テストと少なくとも 1 つのライブ CLI スモークがバックエンドパスを証明している

関連