Technical Guide
15. Plugins:OpenClaw 的扩展机制
理解 OpenClaw 插件系统:extensions、plugin-sdk、资源包和内置能力如何解耦。
这篇解决什么问题
OpenClaw 不把所有能力都塞进 core。
它有 extensions/、src/plugins/、src/plugin-sdk/,还在 package manifest 里支持声明 OpenClaw resources。
这说明 OpenClaw 的扩展机制是一等公民。
先看哪些目录
extensions/
src/plugins/
src/plugin-sdk/
src/plugin-state/
src/plugins/runtime/
package.json 的 files 里也能看到很多官方 extension,例如 discord、feishu、matrix、slack、whatsapp、qwen、deepseek、perplexity 等。
manifest 里能声明什么
官方 agent runtime architecture 文档给了资源包示例:
{
"openclaw": {
"extensions": ["extensions/index.ts"],
"skills": ["skills/*.md"],
"prompts": ["prompts/*.md"],
"themes": ["themes/*.json"]
}
}
也就是说,一个包不只可以提供代码扩展,还可以提供 skills、prompts、themes。
插件解决什么问题
插件适合:
新增 channel
新增 provider
新增工具能力
新增资源包
把某个外部系统接入 OpenClaw
把能力分发给其他用户
如果只是本地的一次性流程,写 Skill 可能更合适。
插件和 core 的边界
官方架构文档强调:插件使用 documented openclaw/plugin-sdk/* entrypoints,不应该 import src/** internals。
这点很重要。
src/** 是内部实现,可能变化。
plugin-sdk 才是插件稳定契约。
如果你要写插件
先问:
这个能力是否要复用/分发?
是否需要代码执行而不只是流程说明?
是否要接平台/API/provider?
是否需要保存插件状态?
是否应该通过 plugin-sdk 暴露?
如果答案是是,再走插件。
下一篇看什么
下一篇看 MCP。插件是 OpenClaw 自己的扩展体系,MCP 是外部工具协议。