概述
Plugin SDK 是插件与 OpenClaw 核心之间的类型化契约层。通过 openclaw/plugin-sdk/* 子路径导入,每个子路径是独立的小模块,避免循环依赖并加快启动速度。
注意:本页面针对插件作者(内部插件开发)。外部应用(CI、IDE 扩展等)应使用 @openclaw/sdk 包。
核心 API
导入约定
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";能力注册方法(OpenClawPluginApi)
提供商类
api.registerProvider(...)— 文本推理(LLM)api.registerAgentHarness(...)— 实验性低级 Agent 执行器api.registerCliBackend(...)— 本地 CLI 推理后端api.registerChannel(...)— 消息渠道api.registerSpeechProvider(...)— TTS/STTapi.registerRealtimeTranscriptionProvider(...)— 流式实时转录api.registerRealtimeVoiceProvider(...)— 双工实时语音api.registerMediaUnderstandingProvider(...)— 图像/音频/视频分析api.registerImageGenerationProvider(...)— 图像生成api.registerMusicGenerationProvider(...)— 音乐生成api.registerVideoGenerationProvider(...)— 视频生成api.registerWebFetchProvider(...)— Web 抓取api.registerWebSearchProvider(...)— Web 搜索
工具与命令
api.registerTool(tool, opts?)— Agent 工具api.registerCommand(def)— 自定义命令(绕过 LLM)
基础设施
api.registerHook(events, handler, opts?)— 事件钩子api.registerHttpRoute(params)— Gateway HTTP 端点api.registerGatewayMethod(name, handler)— Gateway RPC 方法api.registerService(service)— 后台服务api.registerCli(registrar, opts?)— CLI 子命令
独占插槽
api.registerContextEngine(id, factory)— 上下文引擎(同时只有一个激活)api.registerMemoryCapability(capability)— 统一记忆能力api.registerMemoryEmbeddingProvider(adapter)— 记忆嵌入适配器
工作流宿主钩子
api.session.state.registerSessionExtension(...)— 会话状态扩展api.session.workflow.enqueueNextTurnInjection(...)— 下一轮上下文注入api.lifecycle.registerRuntimeLifecycle(...)— 运行时生命周期清理api.agent.events.registerAgentEventSubscription(...)— Agent 事件订阅
API 对象字段
| 字段 | 类型 | 说明 |
|---|---|---|
api.id | string | 插件 ID |
api.config | OpenClawConfig | 当前配置快照 |
api.pluginConfig | Record<string, unknown> | 插件专属配置 |
api.runtime | PluginRuntime | 运行时辅助工具 |
api.logger | PluginLogger | 作用域日志 |
api.registrationMode | PluginRegistrationMode | 当前加载模式 |
使用示例
// Gateway 发现服务注册
api.registerGatewayDiscoveryService({
id: "my-discovery",
async advertise(ctx) {
const handle = await startMyAdvertiser({
gatewayPort: ctx.gatewayPort,
tls: ctx.gatewayTlsEnabled,
});
return { stop: () => handle.stop() };
},
});
// CLI 注册(带懒加载描述符)
api.registerCli(
async ({ program }) => {
const { registerMatrixCli } = await import("./src/cli.js");
registerMatrixCli({ program });
},
{
descriptors: [{ name: "matrix", description: "Manage Matrix accounts", hasSubcommands: true }],
},
);相关页面
- concepts/plugin-sdk-entrypoints —
definePluginEntry和defineChannelPluginEntry选项 - concepts/plugin-sdk-runtime —
api.runtime命名空间完整参考 - concepts/plugin-sdk-setup — 打包、清单和配置 Schema
- concepts/plugin-sdk-subpaths — 子路径目录
- concepts/plugin-architecture — 插件架构与能力模型
- concepts/plugin-hooks — 钩子系统