プラグインマニフェスト(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.allow、plugins.deny、plugins.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>)をドキュメントに記載してください。