外掛程式進入點
每個外掛程式匯出預設進入物件。SDK 提供三個幫手來建立它們。definePluginEntry
匯入: openclaw/plugin-sdk/plugin-entry
對於提供商外掛程式、工具外掛程式、掛鉤外掛程式和任何不是訊息頻道的東西。
| 欄位 | 型別 | 必需 | 預設 |
|---|---|---|---|
id | string | 是 | — |
name | string | 是 | — |
description | string | 是 | — |
kind | string | 否 | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | 否 | 空物件結構描述 |
register | (api: OpenClawPluginApi) => void | 是 | — |
id必須符合您的openclaw.plugin.json清單。kind用於獨佔插槽:"memory"或"context-engine"。configSchema可以是用於延遲求值的函式。
defineChannelPluginEntry
匯入: openclaw/plugin-sdk/core
使用頻道特定連接包裝 definePluginEntry。自動呼叫 api.registerChannel({ plugin }) 並在註冊模式上閘制 registerFull。
| 欄位 | 型別 | 必需 | 預設 |
|---|---|---|---|
id | string | 是 | — |
name | string | 是 | — |
description | string | 是 | — |
plugin | ChannelPlugin | 是 | — |
configSchema | OpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema | 否 | 空物件結構描述 |
setRuntime | (runtime: PluginRuntime) => void | 否 | — |
registerFull | (api: OpenClawPluginApi) => void | 否 | — |
setRuntime在註冊時被呼叫,所以您可以儲存執行時參考(通常透過createPluginRuntimeStore)。registerFull僅在api.registrationMode === "full"時執行。它在設定專用載入時被跳過。
defineSetupPluginEntry
匯入: openclaw/plugin-sdk/core
對於輕量級 setup-entry.ts 檔案。只傳回 { plugin },無執行時或 CLI 連接。
註冊模式
api.registrationMode 告訴您的外掛程式它是如何被載入的:
| 模式 | 時機 | 要註冊的內容 |
|---|---|---|
"full" | 一般 Gateway 啟動 | 所有內容 |
"setup-only" | 停用/未設定頻道 | 僅限頻道註冊 |
"setup-runtime" | 具有可用執行時的設定流程 | 頻道 + 輕量級執行時 |
defineChannelPluginEntry 自動處理此分割。若您直接對頻道使用 definePluginEntry,自行檢查模式:
外掛程式形狀
OpenClaw 按其註冊行為分類已載入的外掛程式:| 形狀 | 描述 |
|---|---|
| plain-capability | 一種功能型別(例如提供商專用) |
| hybrid-capability | 多種功能型別(例如提供商 + 語音) |
| hook-only | 僅掛鉤,無功能 |
| non-capability | 工具/指令/服務但無功能 |
openclaw plugins inspect <id> 查看外掛程式的形狀。
相關主題
- SDK Overview — 註冊 API 和 subpath 參考
- Runtime Helpers —
api.runtime和createPluginRuntimeStore - Setup and Config — 清單、設定進入點、延遲載入
- Channel Plugins — 建構
ChannelPlugin物件 - Provider Plugins — 提供商註冊和掛鉤