Plugin セットアップと設定
Plugin パッケージング(package.json メタデータ)、マニフェスト
(openclaw.plugin.json)、セットアップ エントリ、設定スキーマのリファレンスです。
パッケージ メタデータ
package.json には、Plugin システムにこの Plugin が何を提供するかを伝える
openclaw フィールドが必要です。
Channel Plugin:
openclaw-clawhub-package.json
compat フィールドと build
フィールドは必須です。正式な公開用スニペットは
docs/snippets/plugin-publish/ にあります。
openclaw フィールド
| フィールド | 型 | 説明 |
|---|---|---|
extensions | string[] | エントリ ポイント ファイル(パッケージ ルートからの相対パス) |
setupEntry | string | 軽量なセットアップ専用エントリ(任意) |
channel | object | セットアップ、ピッカー、クイックスタート、ステータス画面向けの Channel カタログ メタデータ |
providers | string[] | この Plugin によって登録される Provider ID |
install | object | インストール ヒント: npmSpec, localPath, defaultChoice, minHostVersion, allowInvalidConfigRecovery |
startup | object | 起動時の動作フラグ |
openclaw.channel
openclaw.channel は、ランタイムが読み込まれる前に Channel の検出とセットアップ画面で使われる、
低コストなパッケージ メタデータです。
| フィールド | 型 | 意味 |
|---|---|---|
id | string | 正式な Channel ID。 |
label | string | 主要な Channel ラベル。 |
selectionLabel | string | label と異なる必要がある場合の、ピッカー/セットアップ用ラベル。 |
detailLabel | string | より充実した Channel カタログやステータス画面向けの補助ラベル。 |
docsPath | string | セットアップや選択リンク用のドキュメント パス。 |
docsLabel | string | Channel ID と異なる必要がある場合に、ドキュメント リンクで使う上書きラベル。 |
blurb | string | 短いオンボーディング/カタログ説明。 |
order | number | Channel カタログでの並び順。 |
aliases | string[] | Channel 選択用の追加の検索別名。 |
preferOver | string[] | この Channel が優先されるべき、より優先度の低い Plugin/Channel ID。 |
systemImage | string | Channel UI カタログ用の任意のアイコン/system-image 名。 |
selectionDocsPrefix | string | 選択画面でドキュメント リンクの前に付ける接頭辞テキスト。 |
selectionDocsOmitLabel | boolean | ラベル付きのドキュメント リンクではなく、ドキュメント パスを直接表示します。 |
selectionExtras | string[] | 選択テキストに追加される短い追加文字列。 |
markdownCapable | boolean | 送信時の書式設定判断のため、この Channel が Markdown 対応であることを示します。 |
exposure | object | セットアップ、設定済み一覧、ドキュメント画面向けの Channel 表示制御。 |
quickstartAllowFrom | boolean | この Channel を標準のクイックスタート allowFrom セットアップ フローに含めます。 |
forceAccountBinding | boolean | アカウントが 1 つしかない場合でも、明示的なアカウント バインディングを必須にします。 |
preferSessionLookupForAnnounceTarget | boolean | この Channel の告知先解決時に、セッション検索を優先します。 |
exposure では以下をサポートします。
configured: 設定済み/ステータス形式の一覧画面に Channel を含めるsetup: 対話型のセットアップ/設定ピッカーに Channel を含めるdocs: ドキュメント/ナビゲーション画面で Channel を公開対象として扱う
showConfigured と showInSetup もレガシー エイリアスとして引き続きサポートされます。exposure を優先してください。
openclaw.install
openclaw.install はマニフェスト メタデータではなく、パッケージ メタデータです。
| フィールド | 型 | 意味 |
|---|---|---|
npmSpec | string | インストール/更新フローで使う正式な npm spec。 |
localPath | string | ローカル開発用またはバンドル済みインストール パス。 |
defaultChoice | "npm" | "local" | 両方利用可能な場合の推奨インストール元。 |
minHostVersion | string | >=x.y.z 形式で表す、サポートされる最小 OpenClaw バージョン。 |
allowInvalidConfigRecovery | boolean | バンドル済み Plugin の再インストール フローで、特定の古い設定不整合からの回復を許可します。 |
minHostVersion が設定されている場合、インストール時とマニフェスト レジストリ読み込み時の両方で
それが適用されます。古いホストはその Plugin をスキップし、不正なバージョン文字列は拒否されます。
allowInvalidConfigRecovery は、壊れた設定全般に対する一般的なバイパスではありません。これは、同じ Plugin に対応するバンドル済み Plugin パスの欠落や古い
channels.<id>
エントリのような、既知のアップグレード残骸を再インストール/セットアップで修復できるようにする、
限定的なバンドル済み Plugin 回復専用です。無関係な理由で設定が壊れている場合、
インストールは引き続き安全側で失敗し、オペレーターに openclaw doctor --fix の実行を案内します。
完全ロードの遅延
Channel Plugin は、以下のように遅延読み込みを有効にできます。setupEntry のみを読み込みます。完全なエントリは
Gateway がリッスンを開始した後に読み込まれます。
セットアップ エントリまたは完全エントリで Gateway RPC メソッドを登録する場合は、
Plugin 固有の接頭辞を付けてください。予約済みのコア管理名前空間(config.*、
exec.approvals.*, wizard.*, update.*)はコア側の所有のままであり、常に
operator.admin に解決されます。
Plugin マニフェスト
すべてのネイティブ Plugin は、パッケージ ルートにopenclaw.plugin.json を含める必要があります。OpenClaw はこれを使って、Plugin コードを実行せずに設定を検証します。
kind と channels を追加します。
ClawHub 公開
Plugin パッケージでは、パッケージ専用の ClawHub コマンドを使用します。clawhub package publish を使用してください。
セットアップ エントリ
setup-entry.ts ファイルは index.ts の軽量な代替で、OpenClaw がセットアップ画面
(オンボーディング、設定修復、無効化された Channel の確認)だけを必要とする場合に
読み込まれます。
defineSetupPluginEntry(...) の代わりに
openclaw/plugin-sdk/channel-entry-contract の
defineBundledChannelSetupEntry(...) を使えます。このバンドル済みコントラクトは、
任意の runtime エクスポートもサポートしており、セットアップ時のランタイム配線を
軽量かつ明示的に保てます。
OpenClaw が完全なエントリではなく setupEntry を使う場合:
- Channel は無効化されているが、セットアップ/オンボーディング画面が必要な場合
- Channel は有効だが未設定の場合
- 遅延読み込みが有効な場合(
deferConfiguredChannelFullLoadUntilAfterListen)
setupEntry が登録しなければならないもの:
- Channel Plugin オブジェクト(
defineSetupPluginEntry経由) - Gateway のリッスン前に必要な HTTP ルート
- 起動時に必要な Gateway メソッド
config.* や update.* のような
予約済みコア管理名前空間は引き続き避ける必要があります。
setupEntry に含めるべきではないもの:
- CLI 登録
- バックグラウンド サービス
- 重いランタイム import(crypto、SDK)
- 起動後にのみ必要な Gateway メソッド
狭いセットアップ ヘルパー import
セットアップ専用のホット パスでは、セットアップ画面の一部だけが必要な場合、 より広いplugin-sdk/setup アンブレラではなく、より狭いセットアップ ヘルパーの境界を優先してください。
| import パス | 用途 | 主な export |
|---|---|---|
plugin-sdk/setup-runtime | setupEntry / 遅延 Channel 起動でも利用可能な、セットアップ時ランタイム ヘルパー | createPatchedAccountSetupAdapter, createEnvPatchedAccountSetupAdapter, createSetupInputPresenceValidator, noteChannelLookupFailure, noteChannelLookupSummary, promptResolvedAllowFrom, splitSetupEntries, createAllowlistSetupWizardProxy, createDelegatedSetupWizardProxy |
plugin-sdk/setup-adapter-runtime | 環境対応のアカウント セットアップ アダプター | createEnvPatchedAccountSetupAdapter |
plugin-sdk/setup-tools | セットアップ/インストール用 CLI/アーカイブ/ドキュメント ヘルパー | formatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR |
moveSingleAccountChannelSectionToDefaultAccount(...))を含む共有セットアップ ツールボックス全体が必要な場合は、
より広い plugin-sdk/setup 境界を使用してください。
セットアップ パッチ アダプターは import 時もホット パスで安全なままです。これらのバンドル済み
単一アカウント昇格コントラクト画面ルックアップは遅延されるため、
plugin-sdk/setup-runtime を import しても、アダプターが実際に使われる前に
バンドル済みコントラクト画面検出が即座に読み込まれることはありません。
Channel 所有の単一アカウント昇格
Channel が単一アカウントのトップレベル設定からchannels.<id>.accounts.* にアップグレードする場合、共有のデフォルト動作では、
昇格されたアカウント スコープ値を accounts.default に移動します。
バンドル済み Channel は、セットアップ コントラクト画面を通じてその昇格を
絞り込んだり上書きしたりできます。
singleAccountKeysToMove: 昇格されたアカウントに移動すべき追加のトップレベル キーnamedAccountPromotionKeys: 名前付きアカウントがすでに存在する場合、これらの キーだけが昇格されたアカウントに移動されます。共有のポリシー/配信キーは Channel ルートに残りますresolveSingleAccountPromotionTarget(...): どの既存アカウントが昇格された値を 受け取るかを選択します
defaultAccount が Ops のような既存の非標準キーを
指している場合、昇格では新しい accounts.default エントリを作成せず、
そのアカウントを維持します。
設定スキーマ
Plugin 設定は、マニフェスト内の JSON Schema に対して検証されます。ユーザーは 次のように Plugin を設定します。api.pluginConfig として受け取ります。
Channel 固有の設定では、代わりに Channel 設定セクションを使います。
Channel 設定スキーマの構築
openclaw/plugin-sdk/core の buildChannelConfigSchema を使うと、
Zod スキーマを OpenClaw が検証する ChannelConfigSchema ラッパーに変換できます。
セットアップ ウィザード
Channel Plugin はopenclaw onboard 向けに対話型セットアップ ウィザードを提供できます。
ウィザードは ChannelPlugin 上の ChannelSetupWizard オブジェクトです。
ChannelSetupWizard 型は、credentials、textInputs、
dmPolicy、allowFrom、groupAccess、prepare、finalize などをサポートします。
完全な例については、バンドル済み Plugin パッケージ
(たとえば Discord Plugin の src/channel.setup.ts)を参照してください。
標準の
note -> prompt -> parse -> merge -> patch フローだけが必要な DM 許可リスト プロンプトでは、
openclaw/plugin-sdk/setup の共有セットアップ ヘルパー
createPromptParsedAllowFromForAccount(...)、
createTopLevelChannelParsedAllowFromPrompt(...)、
createNestedChannelParsedAllowFromPrompt(...) を優先してください。
ラベル、スコア、任意の追加行だけが異なる Channel セットアップ ステータス ブロックでは、
各 Plugin で同じ status オブジェクトを手書きする代わりに、
openclaw/plugin-sdk/setup の
createStandardChannelSetupStatus(...) を優先してください。
特定の文脈でのみ表示されるべき任意のセットアップ画面では、
openclaw/plugin-sdk/channel-setup の
createOptionalChannelSetupSurface を使います。
plugin-sdk/channel-setup は、下位レベルの
createOptionalChannelSetupAdapter(...) と
createOptionalChannelSetupWizard(...) ビルダーも公開しており、
その任意インストール画面の片方だけが必要な場合に使えます。
生成された任意アダプター/ウィザードは、実際の設定書き込み時には安全側で失敗します。
これらは validateInput、applyAccountConfig、finalize の間で
1 つのインストール必須メッセージを再利用し、docsPath が設定されている場合は
ドキュメント リンクを追加します。
バイナリ ベースのセットアップ UI では、同じバイナリ/ステータス用の接着コードを
各 Channel に複製するのではなく、共有の委譲ヘルパーを優先してください。
createDetectedBinaryStatus(...): ラベル、ヒント、スコア、バイナリ検出だけが異なる ステータス ブロック向けcreateCliPathTextInput(...): パス ベースのテキスト入力向けcreateDelegatedSetupWizardStatusResolvers(...)、createDelegatedPrepare(...)、createDelegatedFinalize(...)、createDelegatedResolveConfigured(...):setupEntryが、より重い完全ウィザードへ遅延的に転送する必要がある場合createDelegatedTextInputShouldPrompt(...):setupEntryがtextInputs[*].shouldPromptの判断だけを委譲する必要がある場合
公開とインストール
外部 Plugin: ClawHub または npm に公開し、その後インストールします。npm: 上書きはありません。ClawHub フォールバック後に npm 経路を使いたい場合は、
通常の npm パッケージ spec を使ってください。
npm 由来のインストールでは、
openclaw plugins install は
npm install --ignore-scripts(ライフサイクル スクリプトなし)を実行します。
Plugin 依存ツリーは純粋な JS/TS に保ち、postinstall ビルドが必要な
パッケージは避けてください。関連
- SDK Entry Points —
definePluginEntryとdefineChannelPluginEntry - Plugin Manifest — 完全なマニフェスト スキーマ リファレンス
- Building Plugins — ステップごとの はじめに ガイド