Skip to content

本页是 OpenClaw Plugin SDK 的完整参考索引。涵盖导入约定(始终用 openclaw/plugin-sdk/<subpath> 子路径)、按用途分组的子路径速查表(渠道/Provider/认证安全/Runtime 存储/能力测试/内存),以及 OpenClawPluginApi 上所有注册方法的完整清单(能力/工具/命令/基础设施/独占槽位)和 hook 决策语义。养龙虾不可不看的 SDK 手册。

OpenClaw Plugin SDK 概览

Plugin SDK 是插件与 core 之间的类型化合约。本页是导入路径注册方法的完整参考。

需要实操指导?

导入约定

始终从特定子路径导入:

typescript
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";

每个子路径是一个小型、自包含的模块,这样可以保持启动速度快、避免循环依赖。渠道特定的入口/构建 helper 优先用 openclaw/plugin-sdk/channel-coreopenclaw/plugin-sdk/core 保留给更宽泛的伞形接口和共享 helper(如 buildChannelConfigSchema)。

不要依赖 Provider 名称的便利接缝(如 openclaw/plugin-sdk/slackopenclaw/plugin-sdk/discord 等)——这些只是内置插件维护用的兼容接缝,不是外部插件的稳定合约。

子路径速查表

插件入口

子路径关键导出
plugin-sdk/plugin-entrydefinePluginEntry
plugin-sdk/coredefineChannelPluginEntrycreateChatChannelPlugincreateChannelPluginBasedefineSetupPluginEntrybuildChannelConfigSchema
plugin-sdk/config-schemaOpenClawSchema
plugin-sdk/provider-entrydefineSingleProviderPluginEntry

渠道子路径

子路径关键导出
plugin-sdk/channel-coredefineChannelPluginEntrydefineSetupPluginEntrycreateChatChannelPlugincreateChannelPluginBase
plugin-sdk/channel-setupcreateOptionalChannelSetupSurfacecreateOptionalChannelSetupAdaptercreateOptionalChannelSetupWizardDEFAULT_ACCOUNT_IDcreateTopLevelChannelDmPolicysetSetupChannelEnabledsplitSetupEntries
plugin-sdk/setup共享 setup 向导 helper、白名单提示、setup 状态构建器
plugin-sdk/setup-runtimecreatePatchedAccountSetupAdaptercreateEnvPatchedAccountSetupAdaptercreateSetupInputPresenceValidatornoteChannelLookupFailurenoteChannelLookupSummarypromptResolvedAllowFromsplitSetupEntriescreateAllowlistSetupWizardProxycreateDelegatedSetupWizardProxy
plugin-sdk/setup-adapter-runtimecreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsformatCliCommanddetectBinaryextractArchiveresolveBrewExecutableformatDocsLinkCONFIG_DIR
plugin-sdk/account-core多账号配置/动作门控 helper、default 账号回退 helper
plugin-sdk/account-idDEFAULT_ACCOUNT_ID、账号 id 规范化 helper
plugin-sdk/account-resolution账号查找 + default 回退 helper
plugin-sdk/account-helpers窄型账号列表/账号动作 helper
plugin-sdk/channel-pairingcreateChannelPairingController
plugin-sdk/channel-reply-pipelinecreateChannelReplyPipeline
plugin-sdk/channel-config-helperscreateHybridChannelConfigAdapter
plugin-sdk/channel-lifecyclecreateAccountStatusSink
plugin-sdk/inbound-envelope共享入站路由 + 信封构建器 helper
plugin-sdk/inbound-reply-dispatch共享入站记录和调度 helper
plugin-sdk/messaging-targets目标解析/匹配 helper
plugin-sdk/outbound-media共享出站媒体加载 helper
plugin-sdk/outbound-runtime出站身份/发送委托 helper
plugin-sdk/thread-bindings-runtime线程绑定生命周期和适配器 helper
plugin-sdk/approval-runtimeexec/插件审批 helper、审批能力/配置文件构建器、原生路由/runtime helper

Provider 子路径

子路径关键导出
plugin-sdk/provider-entrydefineSingleProviderPluginEntry
plugin-sdk/provider-authcreateProviderApiKeyAuthMethodensureApiKeyFromOptionEnvOrPromptupsertAuthProfile
plugin-sdk/provider-model-sharedProviderReplayFamilybuildProviderReplayFamilyHooksnormalizeModelCompat、共享回放策略构建器
plugin-sdk/provider-catalog-sharedfindCatalogTemplatebuildSingleProviderApiKeyCatalogsupportsNativeStreamingUsageCompatapplyProviderNativeStreamingUsageCompat
plugin-sdk/provider-http通用 Provider HTTP/端点能力 helper
plugin-sdk/provider-streamProviderStreamFamilybuildProviderStreamFamilyHookscomposeProviderStreamWrappers、流式包装器类型
plugin-sdk/provider-toolsProviderToolCompatFamilybuildProviderToolCompatFamilyHooks、Gemini schema 清理和诊断、xAI 兼容 helper
plugin-sdk/provider-usagefetchClaudeUsage 及类似 helper
plugin-sdk/provider-web-fetch网页抓取 Provider 注册/缓存 helper
plugin-sdk/provider-web-search网页搜索 Provider 注册/缓存/配置 helper
plugin-sdk/provider-onboard引导配置 patch helper

认证与安全子路径

子路径关键导出
plugin-sdk/command-authresolveControlCommandGate、命令注册表 helper、发送者授权 helper
plugin-sdk/approval-auth-runtime审批者解析和同聊天动作认证 helper
plugin-sdk/approval-client-runtime原生 exec 审批配置文件/过滤器 helper
plugin-sdk/approval-delivery-runtime原生审批能力/交付适配器
plugin-sdk/approval-native-runtime原生审批目标 + 账号绑定 helper
plugin-sdk/security-runtime共享信任/DM 门控/外部内容/密钥收集 helper
plugin-sdk/ssrf-policy主机白名单和私有网络 SSRF 策略 helper
plugin-sdk/ssrf-runtime固定调度器、SSRF 保护的 fetch、SSRF 策略 helper
plugin-sdk/webhook-ingressWebhook 请求/目标 helper

Runtime 与存储子路径

子路径关键导出
plugin-sdk/runtime-storecreatePluginRuntimeStore
plugin-sdk/runtime宽泛 runtime/日志/备份/插件安装 helper
plugin-sdk/runtime-env窄型 runtime 环境/日志/超时/重试/退避 helper
plugin-sdk/lazy-runtimecreateLazyRuntimeModulecreateLazyRuntimeMethodcreateLazyRuntimeSurface
plugin-sdk/process-runtime进程 exec helper
plugin-sdk/config-runtime配置加载/写入 helper
plugin-sdk/gateway-runtime网关客户端和渠道状态 patch helper
plugin-sdk/reply-runtime共享入站/回复 runtime helper、分块、调度、心跳
plugin-sdk/reply-history共享短窗口回复历史 helper
plugin-sdk/state-paths状态/OAuth 目录路径 helper
plugin-sdk/routing路由/session-key/账号绑定 helper
plugin-sdk/status-helpers共享渠道/账号状态摘要 helper

能力与测试子路径

子路径关键导出
plugin-sdk/media-runtime共享媒体加载/变换/存储 helper
plugin-sdk/media-understanding媒体理解 Provider 类型及 Provider 端图像/音频 helper
plugin-sdk/speech语音 Provider 类型及指令/注册表/验证 helper
plugin-sdk/image-generation-core图像生成类型、失败转移、认证和注册表 helper
plugin-sdk/video-generation-core视频生成类型、失败转移 helper、Provider 查找
plugin-sdk/text-runtime共享文本/markdown/日志 helper
plugin-sdk/zod为 SDK 消费者重新导出的 zod
plugin-sdk/testinginstallCommonResolveTargetErrorCasesshouldAckReaction

内存子路径

子路径关键导出
plugin-sdk/memory-core内置 memory-core helper(管理器/配置/文件/CLI)
plugin-sdk/memory-core-engine-runtime内存索引/搜索 runtime 门面
plugin-sdk/memory-host-core内存宿主 core runtime helper(厂商中立别名)
plugin-sdk/memory-host-search主动内存搜索管理器 runtime 门面
plugin-sdk/memory-lancedb内置 memory-lancedb helper

注册 API

register(api) 回调接收 OpenClawPluginApi 对象,包含以下方法:

能力注册

方法注册内容
api.registerProvider(...)文本推理(LLM)
api.registerChannel(...)消息渠道
api.registerSpeechProvider(...)TTS / STT 合成
api.registerRealtimeTranscriptionProvider(...)流式实时转录
api.registerRealtimeVoiceProvider(...)双工实时语音会话
api.registerMediaUnderstandingProvider(...)图像/音频/视频分析
api.registerImageGenerationProvider(...)图像生成
api.registerMusicGenerationProvider(...)音乐生成
api.registerVideoGenerationProvider(...)视频生成
api.registerWebFetchProvider(...)网页抓取/爬取 Provider
api.registerWebSearchProvider(...)网页搜索

工具和命令

方法注册内容
api.registerTool(tool, opts?)Agent 工具(必选或 { optional: true }
api.registerCommand(def)自定义命令(绕过 LLM)

基础设施

方法注册内容
api.registerHook(events, handler, opts?)事件 hook
api.registerHttpRoute(params)网关 HTTP 端点
api.registerGatewayMethod(name, handler)网关 RPC 方法
api.registerCli(registrar, opts?)CLI 子命令
api.registerService(service)后台服务
api.registerInteractiveHandler(registration)交互式处理器
api.registerMemoryPromptSupplement(builder)附加的内存相邻 prompt 节
api.registerMemoryCorpusSupplement(adapter)附加的内存搜索/读取语料库

独占槽位

方法注册内容
api.registerContextEngine(id, factory)上下文引擎(同时只能激活一个)
api.registerMemoryPromptSection(builder)内存 prompt 节构建器(memory 插件独占)
api.registerMemoryFlushPlan(resolver)内存刷写计划解析器(memory 插件独占)
api.registerMemoryRuntime(runtime)内存 runtime 适配器(memory 插件独占)
api.registerMemoryEmbeddingProvider(adapter)内存嵌入适配器

registerMemoryEmbeddingProvider 允许激活的 memory 插件注册一个或多个嵌入适配器 id(如 openaigemini 或自定义 id)。用户配置中的 agents.defaults.memorySearch.provideragents.defaults.memorySearch.fallback 会解析至这些已注册的适配器 id。

事件与生命周期

方法作用
api.on(hookName, handler, opts?)类型化生命周期 hook
api.onConversationBindingResolved(handler)会话绑定回调

Hook 决策语义

  • before_tool_call:返回 { block: true } 是终止决策,后续低优先级处理器会被跳过;{ block: false } 视为无决策(不覆盖)
  • before_install{ block: true } 终止,{ block: false } 无决策
  • reply_dispatch{ handled: true, ... } 终止,后续处理器和默认模型调度路径被跳过
  • message_sending{ cancel: true } 终止,{ cancel: false } 无决策

API 对象字段

字段类型说明
api.idstring插件 id
api.namestring显示名称
api.versionstring?插件版本(可选)
api.descriptionstring?插件描述(可选)
api.sourcestring插件源路径
api.rootDirstring?插件根目录(可选)
api.configOpenClawConfig当前配置快照
api.pluginConfigRecord<string, unknown>插件特定配置(来自 plugins.entries.<id>.config
api.runtimePluginRuntime运行时辅助工具
api.loggerPluginLogger作用域日志器(debug/info/warn/error
api.registrationModePluginRegistrationMode当前加载模式
api.resolvePath(input)(string) => string解析相对于插件根的路径

插件内部模块约定

在插件内部,用本地 barrel 文件管理内部导入:

my-plugin/
  api.ts            # 给外部消费者的公开导出
  runtime-api.ts    # 仅内部使用的 runtime 导出
  index.ts          # 插件入口点
  setup-entry.ts    # 轻量 setup 专用入口(可选)

警告: 永远不要在生产代码中通过 openclaw/plugin-sdk/<your-plugin> 导入自己的插件。内部导入通过 ./api.ts./runtime-api.ts 路由,SDK 路径是给外部的合约。

相关文档

常见问题

Q: plugin-sdk/coreplugin-sdk/channel-core 有什么区别?

A: plugin-sdk/channel-core 是聚焦版本,包含 defineChannelPluginEntrydefineSetupPluginEntrycreateChatChannelPlugincreateChannelPluginBaseplugin-sdk/core 是更宽泛的伞形接口,包含上述所有内容以及 buildChannelConfigSchema 等共享 helper。新代码优先用 channel-core,需要 buildChannelConfigSchema 才用 core

Q: 注册工具时什么情况下用 optional: true

A: 有副作用(发消息、执行命令)、依赖外部二进制、或功能较窄的工具用 optional: true。必选工具始终对 Agent 可用;可选工具需用户在配置 tools.allow 中主动开启。如有疑问,宁可设为 optional,让用户自主决策。

Q: registerGatewayMethod 注册的 RPC 方法名有什么限制?

A: 方法名必须使用插件特定前缀,不能占用保留的 core 管理员命名空间(config.*exec.approvals.*wizard.*update.*)——这些总是解析到 operator.admin,即使插件尝试分配更窄的作用域也无效。