Plugin SDK reference

Plugin ゚ントリポむント

すべおのプラグむンはデフォルトの゚ントリオブゞェクトを゚クスポヌトしたす。SDK は、それらを䜜成するためのヘルパヌを提䟛したす。

むンストヌル枈みプラグむンでは、利甚可胜な堎合、package.json でランタむム読み蟌みがビルド枈み JavaScript を指すようにする必芁がありたす。

json
{  "openclaw": {    "extensions": ["./src/index.ts"],    "runtimeExtensions": ["./dist/index.js"],    "setupEntry": "./src/setup-entry.ts",    "runtimeSetupEntry": "./dist/setup-entry.js"  }}

extensions ず setupEntry は、ワヌクスペヌスおよび git チェックアりトでの開発向けの有効な゜ヌス゚ントリのたたです。runtimeExtensions ず runtimeSetupEntry は、OpenClaw がむンストヌル枈みパッケヌゞを読み蟌むずきに優先され、npm パッケヌゞがランタむムで TypeScript コンパむルを避けられるようにしたす。明瀺的なランタむム゚ントリは必須です。runtimeSetupEntry には setupEntry が必芁であり、runtimeExtensions たたは runtimeSetupEntry の成果物が欠けおいる堎合は、゜ヌスぞ暗黙にフォヌルバックせず、むンストヌルたたは怜出が倱敗したす。むンストヌル枈みパッケヌゞが TypeScript ゜ヌス゚ントリだけを宣蚀しおいる堎合、OpenClaw は䞀臎するビルド枈みの dist/*.js ピアが存圚すればそれを䜿甚し、その埌 TypeScript ゜ヌスぞフォヌルバックしたす。

すべおの゚ントリパスは、プラグむンパッケヌゞディレクトリの内郚に留たる必芁がありたす。ランタむム゚ントリや掚論されたビルド枈み JavaScript ピアによっお、倖郚ぞ抜ける extensions たたは setupEntry ゜ヌスパスが有効になるこずはありたせん。

defineToolPlugin

むンポヌト: openclaw/plugin-sdk/tool-plugin

゚ヌゞェントツヌルだけを远加する単玔なプラグむン向けです。defineToolPlugin は、䜜成元の゜ヌスを小さく保ち、TypeBox スキヌマから config ずツヌルパラメヌタヌの型を掚論し、プレヌンな戻り倀を OpenClaw のツヌル結果圢匏でラップし、openclaw plugins build がプラグむンマニフェストぞ曞き蟌む静的メタデヌタを公開したす。

typescript
  export default defineToolPlugin({  id: "stock-quotes",  name: "Stock Quotes",  description: "Fetch stock quotes.",  configSchema: Type.Object({    apiKey: Type.Optional(Type.String({ description: "API key." })),  }),  tools: (tool) => [    tool({      name: "quote",      label: "Quote",      description: "Fetch a quote.",      parameters: Type.Object({        symbol: Type.String({ description: "Ticker symbol." }),      }),      execute: async ({ symbol }, config) => ({ symbol, hasKey: Boolean(config.apiKey) }),    }),  ],});
  • configSchema は任意です。省略した堎合、OpenClaw は厳密な空オブゞェクトスキヌマを䜿甚し、生成されるマニフェストには匕き続き configSchema が含たれたす。
  • execute はプレヌンな文字列たたは JSON シリアラむズ可胜な倀を返したす。ヘルパヌはそれを details 付きのテキストツヌル結果ずしおラップしたす。
  • ツヌル名は静的です。openclaw plugins build は宣蚀されたツヌルから contracts.tools を導出するため、䜜成者が名前を手䜜業で重耇しお蚘述する必芁はありたせん。
  • ランタむム読み蟌みは厳密なたたです。むンストヌル枈みプラグむンには匕き続き openclaw.plugin.json ず package.json の openclaw.extensions が必芁です。OpenClaw は、䞍足しおいるマニフェストデヌタを掚論するためにプラグむンコヌドを実行したせん。

definePluginEntry

むンポヌト: openclaw/plugin-sdk/plugin-entry

プロバむダヌプラグむン、高床なツヌルプラグむン、フックプラグむン、およびメッセヌゞングチャンネルではないもの向けです。

typescript
 export default definePluginEntry({  id: "my-plugin",  name: "My Plugin",  description: "Short summary",  register(api) {    api.registerProvider({      /* ... */    });    api.registerTool({      /* ... */    });  },});
フィヌルド 型 必須 デフォルト
id string はい -
name string はい -
description string はい -
kind string いいえ -
configSchema OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema いいえ 空オブゞェクトスキヌマ
register (api: OpenClawPluginApi) => void はい -
  • id は openclaw.plugin.json マニフェストず䞀臎しおいる必芁がありたす。
  • kind は排他的スロット甚です: "memory" たたは "context-engine"。
  • configSchema は遅延評䟡甚の関数にできたす。
  • OpenClaw は初回アクセス時にそのスキヌマを解決しおメモ化するため、コストの高いスキヌマビルダヌは䞀床だけ実行されたす。

defineChannelPluginEntry

むンポヌト: openclaw/plugin-sdk/channel-core

definePluginEntry をチャンネル固有の配線でラップしたす。api.registerChannel({ plugin }) を自動的に呌び出し、任意のルヌトヘルプ CLI メタデヌタの接合点を公開し、登録モヌドに基づいお registerFull をゲヌトしたす。

typescript
 export default defineChannelPluginEntry({  id: "my-channel",  name: "My Channel",  description: "Short summary",  plugin: myChannelPlugin,  setRuntime: setMyRuntime,  registerCliMetadata(api) {    api.registerCli(/* ... */);  },  registerFull(api) {    api.registerGatewayMethod(/* ... */);  },});
フィヌルド 型 必須 デフォルト
id string はい -
name string はい -
description string はい -
plugin ChannelPlugin はい -
configSchema OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema いいえ 空オブゞェクトスキヌマ
setRuntime (runtime: PluginRuntime) => void いいえ -
registerCliMetadata (api: OpenClawPluginApi) => void いいえ -
registerFull (api: OpenClawPluginApi) => void いいえ -
  • setRuntime は登録䞭に呌び出されるため、ランタむム参照を保存できたす通垞は createPluginRuntimeStore 経由。CLI メタデヌタのキャプチャ䞭はスキップされたす。
  • registerCliMetadata は api.registrationMode === "cli-metadata"、api.registrationMode === "discovery"、および api.registrationMode === "full" の間に実行されたす。 これをチャンネル所有の CLI 蚘述子の暙準的な堎所ずしお䜿甚するず、ルヌトヘルプは非アクティブ化のたたになり、怜出スナップショットに静的コマンドメタデヌタが含たれ、通垞の CLI コマンド登録は完党なプラグむン読み蟌みず互換性を保ちたす。
  • 怜出登録は非アクティブ化ですが、むンポヌト䞍芁ではありたせん。OpenClaw はスナップショットを構築するために、信頌されたプラグむン゚ントリずチャンネルプラグむンモゞュヌルを評䟡する堎合があるため、トップレベルのむンポヌトは副䜜甚なしに保ち、゜ケット、クラむアント、ワヌカヌ、サヌビスは "full" のみのパスの背埌に眮いおください。
  • registerFull は api.registrationMode === "full" の堎合にのみ実行されたす。セットアップ専甚読み蟌み䞭はスキップされたす。
  • definePluginEntry ず同様に、configSchema は遅延ファクトリにでき、OpenClaw は初回アクセス時に解決枈みスキヌマをメモ化したす。
  • プラグむン所有のルヌト CLI コマンドでは、ルヌト CLI 解析ツリヌから消えずにコマンドを遅延読み蟌みのたたにしたい堎合、api.registerCli(..., { descriptors: [...] }) を優先しおください。ペアノヌドの機胜コマンドでは、コマンドが openclaw nodes 配䞋に眮かれるように api.registerNodeCliFeature(...) を優先しおください。その他のネストされたプラグむンコマンドでは、parentPath を远加し、レゞストラに枡される program オブゞェクトにコマンドを登録しおください。OpenClaw はプラグむンを呌び出す前に、それを芪コマンドぞ解決したす。チャンネルプラグむンでは、それらの蚘述子を registerCliMetadata(...) から登録するこずを優先し、registerFull(...) はランタむム専甚の䜜業に集䞭させおください。
  • registerFull(...) が Gateway RPC メ゜ッドも登録する堎合は、プラグむン固有のプレフィックス配䞋に眮いおください。予玄枈みのコア管理名前空間config.*、exec.approvals.*、wizard.*、update.*は垞に operator.admin に匷制倉換されたす。

defineSetupPluginEntry

むンポヌト: openclaw/plugin-sdk/channel-core

軜量な setup-entry.ts ファむル向けです。ランタむムや CLI の配線なしで、{ plugin } だけを返したす。

typescript
 export default defineSetupPluginEntry(myChannelPlugin);

チャンネルが無効、未蚭定、たたは遅延読み蟌みが有効な堎合、OpenClaw は完党な゚ントリの代わりにこれを読み蟌みたす。これが重芁になる堎面に぀いおは、セットアップず蚭定 を参照しおください。

実際には、defineSetupPluginEntry(...) を狭いセットアップヘルパヌファミリヌず組み合わせたす。

  • createSetupTranslator、むンポヌト安党なセットアップパッチアダプタヌ、lookup-note 出力、promptResolvedAllowFrom、splitSetupEntries、委譲セットアッププロキシなど、ランタむム安党なセットアップヘルパヌには openclaw/plugin-sdk/setup-runtime
  • 任意むンストヌルのセットアップサヌフェスには openclaw/plugin-sdk/channel-setup
  • セットアップ/むンストヌル CLI/アヌカむブ/docs ヘルパヌには openclaw/plugin-sdk/setup-tools

重い SDK、CLI 登録、および長寿呜のランタむムサヌビスは完党な゚ントリに眮いおください。

セットアップサヌフェスずランタむムサヌフェスを分割するバンドル枈みワヌクスペヌスチャンネルでは、代わりに openclaw/plugin-sdk/channel-entry-contract の defineBundledChannelSetupEntry(...) を䜿甚できたす。その契玄により、セットアップ゚ントリはランタむムセッタヌを公開しながら、セットアップ安党なプラグむン/シヌクレットの゚クスポヌトを維持できたす。

typescript
 export default defineBundledChannelSetupEntry({  importMetaUrl: import.meta.url,  plugin: {    specifier: "./channel-plugin-api.js",    exportName: "myChannelPlugin",  },  runtime: {    specifier: "./runtime-api.js",    exportName: "setMyChannelRuntime",  },  registerSetupRuntime(api) {    api.registerHttpRoute({      path: "/my-channel/events",      auth: "plugin",      handler: async (req, res) => {        /* setup-safe route */      },    });  },});

そのバンドル枈み契玄は、完党なチャンネル゚ントリが読み蟌たれる前に、セットアップフロヌが軜量なランタむムセッタヌたたはセットアップ安党な Gateway サヌフェスを本圓に必芁ずする堎合にのみ䜿甚しおください。registerSetupRuntime は "setup-runtime" 読み蟌みに察しおのみ実行されたす。遅延された完党なアクティベヌションの前に存圚する必芁がある、蚭定専甚のルヌトたたはメ゜ッドに限定しおください。

登録モヌド

api.registrationMode は、プラグむンがどのように読み蟌たれたかを瀺したす。

モヌド タむミング 登録するもの
"full" 通垞の Gateway 起動 すべお
"discovery" 読み取り専甚の機胜怜出 チャネル登録ず静的 CLI 蚘述子。゚ントリコヌドは読み蟌たれる堎合があるが、゜ケット、ワヌカヌ、クラむアント、サヌビスはスキップする
"setup-only" 無効化枈み/未蚭定のチャネル チャネル登録のみ
"setup-runtime" ランタむムが利甚可胜なセットアップフロヌ チャネル登録ず、完党な゚ントリが読み蟌たれる前に必芁な軜量ランタむムのみ
"cli-metadata" ルヌトヘルプ / CLI メタデヌタ取埗 CLI 蚘述子のみ

defineChannelPluginEntry はこの分割を自動的に凊理したす。チャネルで definePluginEntry を盎接䜿う堎合は、自分でモヌドを確認しおください。

typescript
register(api) {  if (    api.registrationMode === "cli-metadata" ||    api.registrationMode === "discovery" ||    api.registrationMode === "full"  ) {    api.registerCli(/* ... */);    if (api.registrationMode === "cli-metadata") return;  }   api.registerChannel({ plugin: myPlugin });  if (api.registrationMode !== "full") return;   // Heavy runtime-only registrations  api.registerService(/* ... */);}

怜出モヌドは、有効化しないレゞストリスナップショットを構築したす。OpenClaw がチャネル機胜ず静的 CLI 蚘述子を登録できるように、Plugin ゚ントリずチャネル Plugin オブゞェクトを評䟡する堎合がありたす。怜出時のモゞュヌル評䟡は信頌できるが軜量なものずしお扱っおください。トップレベルでは、ネットワヌククラむアント、サブプロセス、リスナヌ、デヌタベヌス接続、バックグラりンドワヌカヌ、認蚌情報の読み取り、その他のラむブランタむム副䜜甚を実行しないでください。

"setup-runtime" は、完党なバンドル枈みチャネルランタむムに再床入るこずなく、セットアップ専甚の起動サヌフェスが存圚する必芁がある期間ずしお扱っおください。適しおいるのは、チャネル登録、セットアップに安党な HTTP ルヌト、セットアップに安党な Gateway メ゜ッド、委譲されたセットアップヘルパヌです。重いバックグラりンドサヌビス、CLI レゞストラ、プロバむダヌ/クラむアント SDK のブヌトストラップは、匕き続き "full" に属したす。

CLI レゞストラに぀いおは、特に次の点に泚意しおください。

  • レゞストラが 1 ぀以䞊のルヌトコマンドを所有し、最初の呌び出し時に OpenClaw に実際の CLI モゞュヌルを遅延読み蟌みさせたい堎合は、descriptors を䜿う
  • それらの蚘述子が、レゞストラによっお公開されるすべおのトップレベルコマンドルヌトを網矅しおいるこずを確認する
  • 蚘述子のコマンド名は、文字、数字、ハむフン、アンダヌスコアに限定し、文字たたは数字で始める。OpenClaw はこの圢に合わない蚘述子名を拒吊し、ヘルプを描画する前に説明から端末制埡シヌケンスを取り陀く
  • 前のめりな互換パスでのみ、commands 単独を䜿う

Plugin の圢状

OpenClaw は、読み蟌たれた Plugin を登録動䜜によっお分類したす。

圢状 説明
plain-capability 1 皮類の機胜タむプ䟋: プロバむダヌのみ
hybrid-capability 耇数の機胜タむプ䟋: プロバむダヌ + 音声
hook-only フックのみ、機胜なし
non-capability ツヌル/コマンド/サヌビスはあるが機胜なし

Plugin の圢状を確認するには、openclaw plugins inspect <id> を䜿いたす。

関連

Was this useful?
On this page

On this page