Skip to main content

外掛程式進入點

每個外掛程式匯出預設進入物件。SDK 提供三個幫手來建立它們。
正在尋找逐步解說? 請參閱 Channel PluginsProvider Plugins 以取得逐步指南。

definePluginEntry

匯入: openclaw/plugin-sdk/plugin-entry 對於提供商外掛程式、工具外掛程式、掛鉤外掛程式和任何不是訊息頻道的東西。
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";

export default definePluginEntry({
  id: "my-plugin",
  name: "My Plugin",
  description: "Short summary",
  register(api) {
    api.registerProvider({
      /* ... */
    });
    api.registerTool({
      /* ... */
    });
  },
});
欄位型別必需預設
idstring
namestring
descriptionstring
kindstring
configSchemaOpenClawPluginConfigSchema | () => OpenClawPluginConfigSchema空物件結構描述
register(api: OpenClawPluginApi) => void
  • id 必須符合您的 openclaw.plugin.json 清單。
  • kind 用於獨佔插槽:"memory""context-engine"
  • configSchema 可以是用於延遲求值的函式。

defineChannelPluginEntry

匯入: openclaw/plugin-sdk/core 使用頻道特定連接包裝 definePluginEntry。自動呼叫 api.registerChannel({ plugin }) 並在註冊模式上閘制 registerFull
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/core";

export default defineChannelPluginEntry({
  id: "my-channel",
  name: "My Channel",
  description: "Short summary",
  plugin: myChannelPlugin,
  setRuntime: setMyRuntime,
  registerFull(api) {
    api.registerCli(/* ... */);
    api.registerGatewayMethod(/* ... */);
  },
});
欄位型別必需預設
idstring
namestring
descriptionstring
pluginChannelPlugin
configSchemaOpenClawPluginConfigSchema | () => 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 連接。
import { defineSetupPluginEntry } from "openclaw/plugin-sdk/core";

export default defineSetupPluginEntry(myChannelPlugin);
當頻道被停用、未設定或啟用延遲載入時,OpenClaw 會載入此代替完整進入點。請參閱 Setup and Config 以瞭解何時重要。

註冊模式

api.registrationMode 告訴您的外掛程式它是如何被載入的:
模式時機要註冊的內容
"full"一般 Gateway 啟動所有內容
"setup-only"停用/未設定頻道僅限頻道註冊
"setup-runtime"具有可用執行時的設定流程頻道 + 輕量級執行時
defineChannelPluginEntry 自動處理此分割。若您直接對頻道使用 definePluginEntry,自行檢查模式:
register(api) {
  api.registerChannel({ plugin: myPlugin });
  if (api.registrationMode !== "full") return;

  // 重型執行時專用註冊
  api.registerCli(/* ... */);
  api.registerService(/* ... */);
}

外掛程式形狀

OpenClaw 按其註冊行為分類已載入的外掛程式:
形狀描述
plain-capability一種功能型別(例如提供商專用)
hybrid-capability多種功能型別(例如提供商 + 語音)
hook-only僅掛鉤,無功能
non-capability工具/指令/服務但無功能
使用 openclaw plugins inspect <id> 查看外掛程式的形狀。

相關主題