Plugins 导读

三种入口函数,决定你的插件怎么被加载

插件必须导出一个默认入口对象,SDK 提供了三个构造器:`definePluginEntry` 给非消息通道类插件用,`defineChannelPluginEntry` 给消息通道用并自动处理注册模式,`defineSetupPluginEntry` 只返回 `{ plugin }` 用于禁用或延迟加载场景。最容易搞错的是 `kind` 字段只接受 `"memory"` 或 `"context-engine"`,以及 `registerFull` 只在 `registrationMode === "full"` 时执行。

先讲这一页到底在解决什么

三种入口函数,决定你的插件怎么被加载

插件必须导出一个默认入口对象,SDK 提供了三个构造器:`definePluginEntry` 给非消息通道类插件用,`defineChannelPluginEntry` 给消息通道用并自动处理注册模式,`defineSetupPluginEntry` 只返回 `{ plugin }` 用于禁用或延迟加载场景。最容易搞错的是 `kind` 字段只接受 `"memory"` 或 `"context-engine"`,以及 `registerFull` 只在 `registrationMode === "full"` 时执行。

原文共 8 节,先看 Start Here 路径:/plugins/sdk-entrypoints 查看官方原文

第一站

🚪 入口不是装饰,是“从哪里开始读”

官方讲 entry points 的目的,是让你别把代码写好了,却忘了告诉系统先看哪一页。

📦

package.json

像包裹外面的总标签,告诉系统入口在哪。

🪪

manifest

像身份证,写明你是谁、能干嘛、该从哪开始认你。

🧭

subpath

像门牌里的楼层号,入口不一定只有一个。

第二站

🛠 入口相关的配置,像“先把正门、侧门、后门都标好”

这页的代码示例,核心是在告诉系统:我的插件在哪个文件起步,哪些导出可以被读到。

`exports` / `imports`

像在地图上画箭头,告诉系统该往哪条小路走。

`openclaw.plugin.json`

像在门口贴上“从这儿进”的说明牌。

`definePluginEntry`

像正式登记门牌,让系统把这扇门收进清单里。

最后记住

🎈 Entry points 不是细节,它是“先从哪里开始看你”

入口一旦不清楚,后面再漂亮的插件也会像没有门牌的房子,别人找不到。