プラグインSDK概要
プラグインSDKは、プラグインとcoreの間にある型付き契約です。このページは、 何をインポートするかと何を登録できるかのリファレンスです。インポート規約
必ず特定のサブパスからインポートしてください。openclaw/plugin-sdk/channel-coreを優先し、より広い包括的サーフェスと
buildChannelConfigSchemaのような共有ヘルパーには
openclaw/plugin-sdk/coreを使用してください。
openclaw/plugin-sdk/slack、openclaw/plugin-sdk/discord、
openclaw/plugin-sdk/signal、openclaw/plugin-sdk/whatsappのような
プロバイダー名付きの便宜的なサーフェスや、
チャネルブランド付きのヘルパーサーフェスを追加したり依存したりしないでください。バンドルプラグインは、
汎用的なSDKサブパスを自分自身のapi.tsまたはruntime-api.tsバレル内で
組み合わせるべきであり、coreは、それらのプラグインローカルバレルを使うか、
本当にチャネル横断のニーズである場合にのみ、狭く汎用的なSDK
契約を追加するべきです。
生成されたエクスポートマップには、依然として少数のバンドルプラグイン向けヘルパー
サーフェスが含まれています。たとえばplugin-sdk/feishu、plugin-sdk/feishu-setup、
plugin-sdk/zalo、plugin-sdk/zalo-setup、plugin-sdk/matrix*などです。これらの
サブパスは、バンドルプラグインの保守と互換性のためだけに存在しており、
意図的に以下の共通テーブルからは除外されています。新しいサードパーティ
プラグインに推奨されるインポートパスではありません。
サブパスリファレンス
用途別にまとめた、最もよく使われるサブパスです。200以上のサブパスからなる 生成済みの完全一覧はscripts/lib/plugin-sdk-entrypoints.jsonにあります。
予約されたバンドルプラグイン向けヘルパーサブパスは、その生成一覧にも引き続き表示されます。
ドキュメントページが明示的に公開として案内していない限り、それらは
実装詳細 / 互換性サーフェスとして扱ってください。
プラグインエントリ
| サブパス | 主なエクスポート |
|---|---|
plugin-sdk/plugin-entry | definePluginEntry |
plugin-sdk/core | defineChannelPluginEntry, createChatChannelPlugin, createChannelPluginBase, defineSetupPluginEntry, buildChannelConfigSchema |
plugin-sdk/config-schema | OpenClawSchema |
plugin-sdk/provider-entry | defineSingleProviderPluginEntry |
チャネルサブパス
チャネルサブパス
プロバイダーサブパス
プロバイダーサブパス
認証およびセキュリティサブパス
認証およびセキュリティサブパス
| サブパス | 主なエクスポート |
|---|---|
plugin-sdk/command-auth | resolveControlCommandGate、コマンドレジストリヘルパー、送信者認可ヘルパー |
plugin-sdk/command-status | buildCommandsMessagePaginatedやbuildHelpMessageなどのコマンド / ヘルプメッセージビルダー |
plugin-sdk/approval-auth-runtime | 承認者解決および同一チャットaction-authヘルパー |
plugin-sdk/approval-client-runtime | ネイティブexec承認プロファイル / フィルターヘルパー |
plugin-sdk/approval-delivery-runtime | ネイティブ承認capability / deliveryアダプター |
plugin-sdk/approval-gateway-runtime | 共有承認Gateway解決ヘルパー |
plugin-sdk/approval-handler-adapter-runtime | ホットチャネルエントリポイント向けの軽量ネイティブ承認アダプター読み込みヘルパー |
plugin-sdk/approval-handler-runtime | より広い承認ハンドラーランタイムヘルパー。狭いadapter / gatewayサーフェスで十分な場合はそちらを優先してください |
plugin-sdk/approval-native-runtime | ネイティブ承認ターゲット + account-bindingヘルパー |
plugin-sdk/approval-reply-runtime | exec / プラグイン承認返信payloadヘルパー |
plugin-sdk/command-auth-native | ネイティブコマンド認証 + ネイティブsession-targetヘルパー |
plugin-sdk/command-detection | 共有コマンド検出ヘルパー |
plugin-sdk/command-surface | コマンド本文正規化およびコマンドサーフェスヘルパー |
plugin-sdk/allow-from | formatAllowFromLowercase |
plugin-sdk/channel-secret-runtime | チャネル / プラグインsecretサーフェス向けの狭いsecret-contract収集ヘルパー |
plugin-sdk/secret-ref-runtime | secret-contract / 設定解析向けの狭いcoerceSecretRefおよびSecretRef型ヘルパー |
plugin-sdk/security-runtime | 共有trust、DMゲーティング、外部コンテンツ、secret収集ヘルパー |
plugin-sdk/ssrf-policy | ホスト許可リストおよびプライベートネットワークSSRFポリシーヘルパー |
plugin-sdk/ssrf-runtime | pinned-dispatcher、SSRFガード付きfetch、およびSSRFポリシーヘルパー |
plugin-sdk/secret-input | secret入力解析ヘルパー |
plugin-sdk/webhook-ingress | Webhookリクエスト / ターゲットヘルパー |
plugin-sdk/webhook-request-guards | リクエスト本文サイズ / タイムアウトヘルパー |
ランタイムおよびストレージサブパス
ランタイムおよびストレージサブパス
ケイパビリティおよびテストサブパス
ケイパビリティおよびテストサブパス
| サブパス | 主なエクスポート |
|---|---|
plugin-sdk/media-runtime | 共有メディアfetch / transform / storeヘルパーに加え、media payloadビルダー |
plugin-sdk/media-generation-runtime | 共有メディア生成failoverヘルパー、候補選択、およびモデル欠落メッセージング |
plugin-sdk/media-understanding | メディア理解プロバイダー型と、プロバイダー向け画像 / 音声ヘルパーエクスポート |
plugin-sdk/text-runtime | assistant-visible-text除去、markdown render / chunking / tableヘルパー、マスキングヘルパー、directive-tagヘルパー、安全なテキストユーティリティなどの共有text / markdown / loggingヘルパー |
plugin-sdk/text-chunking | 送信text chunkingヘルパー |
plugin-sdk/speech | 音声プロバイダー型と、プロバイダー向けdirective、registry、validationヘルパー |
plugin-sdk/speech-core | 共有音声プロバイダー型、registry、directive、normalizationヘルパー |
plugin-sdk/realtime-transcription | リアルタイム文字起こしプロバイダー型およびregistryヘルパー |
plugin-sdk/realtime-voice | リアルタイム音声プロバイダー型およびregistryヘルパー |
plugin-sdk/image-generation | 画像生成プロバイダー型 |
plugin-sdk/image-generation-core | 共有画像生成型、failover、auth、およびregistryヘルパー |
plugin-sdk/music-generation | 音楽生成プロバイダー / リクエスト / 結果型 |
plugin-sdk/music-generation-core | 共有音楽生成型、failoverヘルパー、プロバイダー参照、およびmodel-ref解析 |
plugin-sdk/video-generation | 動画生成プロバイダー / リクエスト / 結果型 |
plugin-sdk/video-generation-core | 共有動画生成型、failoverヘルパー、プロバイダー参照、およびmodel-ref解析 |
plugin-sdk/webhook-targets | Webhookターゲットレジストリおよびルートインストールヘルパー |
plugin-sdk/webhook-path | Webhookパス正規化ヘルパー |
plugin-sdk/web-media | 共有リモート / ローカルメディア読み込みヘルパー |
plugin-sdk/zod | プラグインSDK利用者向けに再エクスポートされたzod |
plugin-sdk/testing | installCommonResolveTargetErrorCases, shouldAckReaction |
メモリサブパス
メモリサブパス
| サブパス | 主なエクスポート |
|---|---|
plugin-sdk/memory-core | manager / config / file / CLIヘルパー向けのバンドルmemory-coreヘルパーサーフェス |
plugin-sdk/memory-core-engine-runtime | メモリindex / searchランタイムファサード |
plugin-sdk/memory-core-host-engine-foundation | メモリhost foundation engineエクスポート |
plugin-sdk/memory-core-host-engine-embeddings | メモリhost embedding engineエクスポート |
plugin-sdk/memory-core-host-engine-qmd | メモリhost QMD engineエクスポート |
plugin-sdk/memory-core-host-engine-storage | メモリhost storage engineエクスポート |
plugin-sdk/memory-core-host-multimodal | メモリhostマルチモーダルヘルパー |
plugin-sdk/memory-core-host-query | メモリhost queryヘルパー |
plugin-sdk/memory-core-host-secret | メモリhost secretヘルパー |
plugin-sdk/memory-core-host-events | メモリhostイベントジャーナルヘルパー |
plugin-sdk/memory-core-host-status | メモリhostステータスヘルパー |
plugin-sdk/memory-core-host-runtime-cli | メモリhost CLIランタイムヘルパー |
plugin-sdk/memory-core-host-runtime-core | メモリhost coreランタイムヘルパー |
plugin-sdk/memory-core-host-runtime-files | メモリhost file / ランタイムヘルパー |
plugin-sdk/memory-host-core | メモリhost coreランタイムヘルパー向けのベンダー中立エイリアス |
plugin-sdk/memory-host-events | メモリhostイベントジャーナルヘルパー向けのベンダー中立エイリアス |
plugin-sdk/memory-host-files | メモリhost file / ランタイムヘルパー向けのベンダー中立エイリアス |
plugin-sdk/memory-host-markdown | メモリ隣接プラグイン向け共有managed-markdownヘルパー |
plugin-sdk/memory-host-search | search-managerアクセス向けのアクティブメモリランタイムファサード |
plugin-sdk/memory-host-status | メモリhostステータスヘルパー向けのベンダー中立エイリアス |
plugin-sdk/memory-lancedb | バンドルmemory-lancedbヘルパーサーフェス |
予約済みバンドルヘルパーサブパス
予約済みバンドルヘルパーサブパス
登録API
register(api)コールバックは、以下のメソッドを持つOpenClawPluginApiオブジェクトを受け取ります。
ケイパビリティ登録
| メソッド | 登録するもの |
|---|---|
api.registerProvider(...) | テキスト推論(LLM) |
api.registerCliBackend(...) | ローカルCLI推論バックエンド |
api.registerChannel(...) | メッセージングチャネル |
api.registerSpeechProvider(...) | テキスト読み上げ / STT合成 |
api.registerRealtimeTranscriptionProvider(...) | ストリーミングのリアルタイム文字起こし |
api.registerRealtimeVoiceProvider(...) | 双方向リアルタイム音声セッション |
api.registerMediaUnderstandingProvider(...) | 画像 / 音声 / 動画解析 |
api.registerImageGenerationProvider(...) | 画像生成 |
api.registerMusicGenerationProvider(...) | 音楽生成 |
api.registerVideoGenerationProvider(...) | 動画生成 |
api.registerWebFetchProvider(...) | Web fetch / スクレイププロバイダー |
api.registerWebSearchProvider(...) | Web検索 |
ツールとコマンド
| メソッド | 登録するもの |
|---|---|
api.registerTool(tool, opts?) | agentツール(必須、または{ optional: true }) |
api.registerCommand(def) | カスタムコマンド(LLMをバイパスする) |
インフラストラクチャ
| メソッド | 登録するもの |
|---|---|
api.registerHook(events, handler, opts?) | イベントhook |
api.registerHttpRoute(params) | Gateway HTTPエンドポイント |
api.registerGatewayMethod(name, handler) | Gateway RPCメソッド |
api.registerCli(registrar, opts?) | CLIサブコマンド |
api.registerService(service) | バックグラウンドサービス |
api.registerInteractiveHandler(registration) | interactive handler |
api.registerMemoryPromptSupplement(builder) | 加算的なメモリ隣接プロンプトセクション |
api.registerMemoryCorpusSupplement(adapter) | 加算的なメモリ検索 / 読み取りコーパス |
config.*, exec.approvals.*, wizard.*,
update.*)は、プラグインがより狭いGatewayメソッドスコープを割り当てようとしても、
常にoperator.adminのままです。
プラグイン所有メソッドには、プラグイン固有の接頭辞を優先してください。
CLI登録メタデータ
api.registerCli(registrar, opts?)は、2種類のトップレベルメタデータを受け取ります。
commands: registrarが所有する明示的なコマンドルートdescriptors: ルートCLIヘルプ、 ルーティング、および遅延プラグインCLI登録で使われる解析時コマンド記述子
descriptorsを提供してください。
commandsを単独で使用してください。
この即時互換パスは引き続きサポートされていますが、解析時の遅延読み込みのための
descriptorバックのプレースホルダーはインストールしません。
CLIバックエンド登録
api.registerCliBackend(...)を使うと、codex-cliのようなローカル
AI CLIバックエンドのデフォルト設定をプラグインが所有できます。
- バックエンドの
idは、codex-cli/gpt-5のようなmodel ref内のプロバイダー接頭辞になります。 - バックエンド
configは、agents.defaults.cliBackends.<id>と同じ形状を使用します。 - ユーザー設定が常に優先されます。OpenClawはCLI実行前に、プラグインのデフォルトの上へ
agents.defaults.cliBackends.<id>をマージします。 - マージ後にバックエンドが互換性書き換えを必要とする場合は
normalizeConfigを使用してください (たとえば古いフラグ形状の正規化など)。
排他的スロット
| メソッド | 登録するもの |
|---|---|
api.registerContextEngine(id, factory) | コンテキストエンジン(一度に1つだけアクティブ)。assemble()コールバックはavailableToolsとcitationsModeを受け取るため、エンジンはそれに応じてプロンプト追加を調整できます。 |
api.registerMemoryCapability(capability) | 統合メモリケイパビリティ |
api.registerMemoryPromptSection(builder) | メモリプロンプトセクションビルダー |
api.registerMemoryFlushPlan(resolver) | メモリflush planリゾルバー |
api.registerMemoryRuntime(runtime) | メモリランタイムアダプター |
メモリ埋め込みアダプター
| メソッド | 登録するもの |
|---|---|
api.registerMemoryEmbeddingProvider(adapter) | アクティブなプラグイン向けのメモリ埋め込みアダプター |
registerMemoryCapabilityは、推奨される排他的メモリプラグインAPIです。registerMemoryCapabilityはpublicArtifacts.listArtifacts(...)も公開できるため、 コンパニオンプラグインは特定のメモリプラグインの非公開レイアウトに入り込むのではなく、openclaw/plugin-sdk/memory-host-core経由でエクスポートされたメモリアーティファクトを利用できます。registerMemoryPromptSection、registerMemoryFlushPlan、およびregisterMemoryRuntimeは、古い互換性のある排他的メモリプラグインAPIです。registerMemoryEmbeddingProviderを使うと、アクティブなメモリプラグインは1つ以上の 埋め込みアダプターID(たとえばopenai、gemini、またはカスタムの プラグイン定義ID)を登録できます。agents.defaults.memorySearch.providerやagents.defaults.memorySearch.fallbackのようなユーザー設定は、 それらの登録済みアダプターIDに対して解決されます。
イベントとライフサイクル
| メソッド | 役割 |
|---|---|
api.on(hookName, handler, opts?) | 型付きライフサイクルhook |
api.onConversationBindingResolved(handler) | 会話バインディングコールバック |
Hook判定セマンティクス
before_tool_call:{ block: true }を返すと終端です。いずれかのハンドラーがこれを設定すると、より低優先度のハンドラーはスキップされます。before_tool_call:{ block: false }を返しても判定なしとして扱われます(blockを省略した場合と同じ)であり、上書きではありません。before_install:{ block: true }を返すと終端です。いずれかのハンドラーがこれを設定すると、より低優先度のハンドラーはスキップされます。before_install:{ block: false }を返しても判定なしとして扱われます(blockを省略した場合と同じ)であり、上書きではありません。reply_dispatch:{ handled: true, ... }を返すと終端です。いずれかのハンドラーがdispatchを引き受けると、より低優先度のハンドラーとデフォルトのモデルdispatchパスはスキップされます。message_sending:{ cancel: true }を返すと終端です。いずれかのハンドラーがこれを設定すると、より低優先度のハンドラーはスキップされます。message_sending:{ cancel: false }を返しても判定なしとして扱われます(cancelを省略した場合と同じ)であり、上書きではありません。
APIオブジェクトのフィールド
| フィールド | 型 | 説明 |
|---|---|---|
api.id | string | プラグインID |
api.name | string | 表示名 |
api.version | string? | プラグインバージョン(任意) |
api.description | string? | プラグイン説明(任意) |
api.source | string | プラグインソースパス |
api.rootDir | string? | プラグインルートディレクトリ(任意) |
api.config | OpenClawConfig | 現在の設定スナップショット(利用可能な場合はアクティブなインメモリランタイムスナップショット) |
api.pluginConfig | Record<string, unknown> | plugins.entries.<id>.configからのプラグイン固有設定 |
api.runtime | PluginRuntime | ランタイムヘルパー |
api.logger | PluginLogger | スコープ付きlogger(debug, info, warn, error) |
api.registrationMode | PluginRegistrationMode | 現在の読み込みモード。"setup-runtime"は、完全なエントリ起動 / セットアップ前の軽量ウィンドウです |
api.resolvePath(input) | (string) => string | プラグインルート相対でパスを解決する |
内部モジュール規約
プラグイン内部では、内部インポートにローカルバレルファイルを使用してください。api.ts、runtime-api.ts、
index.ts、setup-entry.ts、および類似の公開エントリファイル)は、現在、
OpenClawがすでに実行中であればアクティブなランタイム設定スナップショットを優先します。
まだランタイムスナップショットが存在しない場合は、ディスク上の解決済み設定ファイルへフォールバックします。
プロバイダープラグインは、ヘルパーが意図的にプロバイダー固有で、
まだ汎用SDKサブパスに属さない場合に、狭いプラグインローカル契約バレルを公開することもできます。
現在のバンドル例: Anthropicプロバイダーは、Anthropicのbeta-headerと
service_tierロジックを汎用plugin-sdk/*契約へ昇格させる代わりに、
Claude streamヘルパーを独自の公開api.ts / contract-api.tsサーフェスに保持しています。
現在のその他のバンドル例:
@openclaw/openai-provider:api.tsはプロバイダービルダー、 default-modelヘルパー、およびリアルタイムプロバイダービルダーをエクスポートします@openclaw/openrouter-provider:api.tsはプロバイダービルダーに加えて オンボーディング / 設定ヘルパーをエクスポートします
関連
- Entry Points —
definePluginEntryとdefineChannelPluginEntryのオプション - Runtime Helpers —
api.runtime名前空間の完全リファレンス - Setup and Config — パッケージング、マニフェスト、設定スキーマ
- Testing — テストユーティリティとlintルール
- SDK Migration — 非推奨サーフェスからの移行
- Plugin Internals — 詳細なアーキテクチャとケイパビリティモデル