适用版本:OpenClaw v2026.3.8+ 核心理念:插件是扩展 OpenClaw 能力的安全、模块化方式,用于添加命令、工具、渠道、模型认证、HTTP 接口等。
插件是一个小型代码模块,用于在不修改 OpenClaw 核心代码的前提下,动态扩展其功能。典型用途包括:
# 查看已加载插件
openclaw plugins list
# 安装官方插件(例如语音通话)
openclaw plugins install @openclaw/voice-call
# 启用插件(部分插件默认启用)
openclaw plugins enable voice-call
# 重启 Gateway 使配置生效⚠️ 安装规则:
@beta)openclaw plugins install ./dir 外)、语义化版本范围(如 ^1.0.0)@latest 或无版本号默认使用稳定版;若解析到预发布版,需显式指定 @beta 等标签OpenClaw 插件系统采用 “声明式发现 + 运行时注册” 的两阶段模型:
阶段 | 目标 | 是否执行插件代码 |
|---|---|---|
发现与验证 | 读取 openclaw.plugin.json,校验配置合法性,生成 UI 提示 | ❌ 否 |
运行时加载 | 调用 register(api),注册工具、渠道、HTTP 路由等行为 | ✅ 是 |
这种分离确保了:
OpenClaw 按以下顺序扫描插件(高优先级在前):
plugins.load.paths(显式指定的文件或目录)<workspace>/.openclaw/extensions/~/.openclaw/extensions/extensions/ 目录📌 覆盖规则:同 ID 插件,高优先级路径覆盖低优先级。 例如:工作区中的
voice-call会覆盖内置版本,便于本地开发调试。
非内置插件需通过以下安全审查,否则被拒绝加载:
openclaw.json){
"plugins": {
"enabled": true,
"allow": ["voice-call"],
"deny": ["untrusted-plugin"],
"load": {
"paths": ["~/Projects/my-plugin"]
},
"slots": {
"memory": "memory-lancedb",
"contextEngine": "lossless-claw"
},
"entries": {
"voice-call": {
"enabled": true,
"config": { "provider": "twilio" }
}
}
}
}字段 | 作用 |
|---|---|
enabled | 全局开关(默认 true) |
allow / deny | ID 白名单/黑名单(deny 优先级更高) |
load.paths | 额外插件加载路径 |
slots | 独占插槽选择(如内存引擎、上下文引擎) |
entries.<id> | 单个插件的启用状态与专属配置 |
🔁 注意:修改插件配置后必须重启 Gateway 才能生效。
插件通过 register(api) 函数向核心注册能力。常见注册项包括:
api.registerTool({
name: "voice_call",
description: "Initiate a voice call",
handler: async (args) => { /* ... */ }
});api.registerHttpRoute({
path: "/acme/webhook",
auth: "plugin", // 或 "gateway"
handler: async (_req, res) => {
res.end("OK");
return true;
}
});api.registerCli(({ program }) => {
program.command("mystatus").action(() => console.log("OK"));
}, { commands: ["mystatus"] });api.registerCommand({
name: "mystatus",
handler: () => ({ text: "Plugin is running!" })
});用于实现 WhatsApp、Teams 等新消息平台集成(详见下文)。
实现 OAuth、API Key 等认证流程,支持 openclaw onboard 集成。
替换默认的对话上下文组装逻辑,适用于高级会话管理。
某些功能类别仅允许一个插件激活:
memory:长期记忆实现(如 memory-core、memory-lancedb)contextEngine:上下文编排引擎配置示例:
{
"plugins": {
"slots": {
"memory": "memory-lancedb",
"contextEngine": "none" // 禁用
}
}
}用于添加新的消息平台(如 Microsoft Teams、Zalo)。
channels.<id>,而非 plugins.entriesresolveAccount、sendText 等基础适配器💡 提示:Microsoft Teams 自 2026.1.15 起仅通过插件提供,需手动安装
@openclaw/msteams。
用于集成自定义 LLM 服务,支持:
插件可附带技能(放在 skills/ 目录),通过 plugins.entries.<id>.enabled 控制是否加载。
allow 白名单openclaw plugins install -l ./my-plugin 软链接开发@openclaw/<name>package.json 必须包含 openclaw.extensions 字段openclaw/plugin-sdk 子路径导入(如 openclaw/plugin-sdk/telegram)openclaw.extensions 指向正确入口八、高级功能
// 在 prompt 构建前注入上下文
api.on("before_prompt_build", (event) => ({
prependSystemContext: "Follow company style guide."
}));api.runtime.tts.textToSpeechTelephony()api.runtime.stt.transcribeAudioFile()在 openclaw.plugin.json 中提供 uiHints,提升配置表单体验:
{
"configSchema": { "properties": { "apiKey": { "type": "string" } } },
"uiHints": { "apiKey": { "label": "API Key", "sensitive": true } }
}九、故障排查
问题 | 诊断方法 |
|---|---|
插件未加载 | 检查 openclaw plugins list;确认路径权限与安全策略 |
配置无效 | 查看启动日志;确保 configSchema 匹配 |
命令冲突 | 插件命令不能覆盖 help、reset 等保留字 |
HTTP 403 | 确认路由 auth 策略("gateway" 需令牌,"plugin" 自行验证) |
十、总结
OpenClaw 插件系统为开发者提供了强大而安全的扩展机制。通过遵循本文指南,您可以:
记住:插件虽强,安全第一。始终将插件视为受信任代码,并通过
allow列表、私有仓库、代码审计等方式保障生产环境安全。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。