プラグインマニフェスト(openclaw.plugin.json)

すべてのプラグインはプラグインルートopenclaw.plugin.json ファイルを配置する必要があります。 OpenClaw はこのマニフェストを使用して、プラグインコードを実行せずに設定を検証します。マニフェストが存在しないか無効な場合は、プラグインエラーとして扱われ、設定のバリデーションがブロックされます。

プラグインシステムの完全ガイド: プラグイン

必須フィールド

{
  "id": "voice-call",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {}
  }
}

必須キー:

  • id(文字列): プラグインの正式 ID。
  • configSchema(オブジェクト): プラグイン設定の JSON Schema(インライン)。

オプションキー:

  • kind(文字列): プラグインの種別(例: "memory""context-engine")。
  • channels(配列): このプラグインが登録するチャンネル ID(例: ["matrix"])。
  • providers(配列): このプラグインが登録するプロバイダ ID。
  • skills(配列): ロードするスキルディレクトリ(プラグインルートからの相対パス)。
  • name(文字列): プラグインの表示名。
  • description(文字列): プラグインの短い説明。
  • uiHints(オブジェクト): UI レンダリング用の設定フィールドラベル/プレースホルダー/機密フラグ。
  • version(文字列): プラグインバージョン(情報用)。

JSON Schema 要件

  • すべてのプラグインは JSON Schema を同梱する必要があります。設定を受け付けない場合でも同様です。
  • 空のスキーマでも構いません(例: { "type": "object", "additionalProperties": false })。
  • スキーマは設定の読み書き時に検証されます。ランタイムでは検証されません。

バリデーション動作

  • 未知の channels.* キーはエラーになります。ただし、プラグインマニフェストでそのチャンネル ID が宣言されている場合は除きます。
  • plugins.entries.<id>plugins.allowplugins.denyplugins.slots.*検出可能なプラグイン ID を参照する必要があります。未知の ID はエラーです。
  • プラグインがインストール済みだがマニフェストやスキーマが壊れている/不足している場合、 バリデーションは失敗し、Doctor がプラグインエラーを報告します。
  • プラグイン設定が存在するがプラグインが無効の場合、設定は保持され、 Doctor + ログに警告が表示されます。

補足

  • マニフェストはローカルファイルシステムからのロードを含むすべてのプラグインに必須です。
  • ランタイムは別途プラグインモジュールをロードします。マニフェストは検出 + バリデーション専用です。
  • 排他的なプラグイン種別は plugins.slots.* で選択します。
    • kind: "memory"plugins.slots.memory で選択。
    • kind: "context-engine"plugins.slots.contextEngine で選択 (デフォルト: ビルトインの legacy)。
  • プラグインがネイティブモジュールに依存する場合、ビルド手順とパッケージマネージャーの 許可リスト要件(例: pnpm の allow-build-scripts - pnpm rebuild <package>)をドキュメントに記載してください。