Plugin SDK

一句话概括

Plugin SDK 是一个 543 行的再导出聚合层,为扩展作者提供稳定的公共 API 表面,抽象 OpenClaw 的内部实现细节。

职责

  • 再导出 150+ 类型和函数作为稳定的插件创作 API
  • 提供 HTTP 路由、webhooks、媒体 payload、OAuth、文件锁的辅助函数
  • 抽象内部模块边界,使插件不依赖内部路径
  • 支持跨扩展的渠道插件组合和复用

关键源码文件

文件行数角色
src/plugin-sdk/index.ts543单一入口:所有面向插件作者的再导出

关键导出(分类)

类别示例
插件契约ChannelPluginChannelConfigSchemaOpenClawPluginApi
适配器类型ChannelConfigAdapterChannelSecurityAdapterChannelOutboundAdapter
配置类型OpenClawConfigRuntimeEnv
Payload 类型OutboundReplyPayloadMediaPayloadAgentMediaPayload
HTTP 辅助registerPluginHttpRoute()normalizePluginHttpPath()
Webhook 辅助registerWebhookTarget()resolveWebhookTargets()
媒体辅助buildAgentMediaPayload()buildMediaPayload()
文件锁acquireFileLock()withFileLock()

与其他模块的关系

  • 依赖channels/plugins/plugins/gateway/config/agents/(从这些再导出)
  • 被依赖extensions/*/ 中的所有 38 个扩展

我的认知盲区

  • 版本稳定性保证 — SDK 是否有 semver 契约?
  • 哪些导出被视为稳定 vs 实验性
  • 内部模块的破坏性变更如何传播到 SDK

变更频率

  • index.ts:中 — 新功能上线时添加新导出;移除很少(向后兼容)