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