插件
插件可为 OpenClaw 扩展新能力:渠道、模型提供商、工具、Skills、语音、实时转录、实时语音、媒体理解、图像生成、视频生成、网页抓取、网页搜索等。有些插件是核心插件(随 OpenClaw 一起提供),其他则是外部插件(由社区发布到 npm)。快速开始
如果你更喜欢原生聊天控制,请启用commands.plugins: true 并使用:
clawhub:<pkg>,或裸包规范(先 ClawHub,再回退到 npm)。
如果配置无效,安装通常会以关闭失败的方式终止,并提示你使用 openclaw doctor --fix。唯一的恢复例外是为选择加入 openclaw.install.allowInvalidConfigRecovery 的插件提供的一条范围很窄的内置插件重装路径。
插件类型
OpenClaw 可识别两种插件格式:| 格式 | 工作方式 | 示例 |
|---|---|---|
| 原生 | openclaw.plugin.json + 运行时模块;在进程内执行 | 官方插件、社区 npm 包 |
| Bundle | 兼容 Codex / Claude / Cursor 的布局;映射到 OpenClaw 功能 | .codex-plugin/、.claude-plugin/、.cursor-plugin/ |
openclaw plugins list 中。有关 bundle 详情,请参见 插件 Bundles。
如果你正在编写原生插件,请从 构建插件 和 插件 SDK 概览 开始。
官方插件
可安装(npm)
| 插件 | 包 | 文档 |
|---|---|---|
| Matrix | @openclaw/matrix | Matrix |
| Microsoft Teams | @openclaw/msteams | Microsoft Teams |
| Nostr | @openclaw/nostr | Nostr |
| Voice Call | @openclaw/voice-call | Voice Call |
| Zalo | @openclaw/zalo | Zalo |
| Zalo Personal | @openclaw/zalouser | Zalo Personal |
核心(随 OpenClaw 一起提供)
模型提供商(默认启用)
模型提供商(默认启用)
anthropic, byteplus, cloudflare-ai-gateway, github-copilot, google,
huggingface, kilocode, kimi-coding, minimax, mistral, qwen,
moonshot, nvidia, openai, opencode, opencode-go, openrouter,
qianfan, synthetic, together, venice,
vercel-ai-gateway, volcengine, xiaomi, zaiMemory 插件
Memory 插件
memory-core— 内置内存搜索(默认通过plugins.slots.memory)memory-lancedb— 按需安装的长期记忆,带自动召回 / 捕获(设置plugins.slots.memory = "memory-lancedb")
语音提供商(默认启用)
语音提供商(默认启用)
elevenlabs, microsoft其他
其他
browser— 用于 browser 工具、openclaw browserCLI、browser.requestGateway 网关方法、browser 运行时和默认 browser 控制服务的内置 browser 插件(默认启用;替换前请先禁用)copilot-proxy— VS Code Copilot Proxy 桥接(默认禁用)
配置
| 字段 | 说明 |
|---|---|
enabled | 主开关(默认:true) |
allow | 插件允许列表(可选) |
deny | 插件拒绝列表(可选;拒绝优先) |
load.paths | 额外的插件文件 / 目录 |
slots | 独占槽位选择器(例如 memory、contextEngine) |
entries.\<id\> | 每个插件的开关 + 配置 |
openclaw gateway 路径),则通常会在配置写入完成后稍等片刻自动执行该重启。
插件状态:已禁用 vs 缺失 vs 无效
插件状态:已禁用 vs 缺失 vs 无效
- 已禁用:插件存在,但启用规则将其关闭。配置会被保留。
- 缺失:配置引用了一个设备发现未找到的插件 id。
- 无效:插件存在,但其配置不符合声明的 schema。
设备发现与优先级
OpenClaw 按以下顺序扫描插件(先匹配者优先):工作区扩展
\<workspace\>/.openclaw/<plugin-root>/*.ts 和 \<workspace\>/.openclaw/<plugin-root>/*/index.ts。启用规则
plugins.enabled: false会禁用所有插件plugins.deny总是优先于 allowplugins.entries.\<id\>.enabled: false会禁用该插件- 来源于工作区的插件默认禁用(必须显式启用)
- 内置插件遵循内建的默认启用集合,除非被覆盖
- 独占槽位可强制启用该槽位中选定的插件
插件槽位(独占类别)
有些类别是独占的(同一时间只能激活一个):| 槽位 | 控制内容 | 默认值 |
|---|---|---|
memory | 活动 memory 插件 | memory-core |
contextEngine | 活动上下文引擎 | legacy(内建) |
CLI 参考
openclaw plugins enable <id>。
--force 会就地覆盖现有已安装插件或 hook pack。
它不支持与 --link 一起使用,因为 --link 会复用源路径,而不是复制到受管理的安装目标。
--pin 仅适用于 npm。它不支持与 --marketplace 一起使用,因为 marketplace 安装会持久化 marketplace 来源元数据,而不是 npm spec。
--dangerously-force-unsafe-install 是针对内置危险代码扫描器误报的紧急覆盖开关。它允许插件安装和插件更新在遇到内置 critical 发现后继续进行,但仍不会绕过插件 before_install 策略阻止或扫描失败阻止。
这个 CLI 标志仅适用于插件安装 / 更新流程。由 Gateway 网关驱动的 skill 依赖安装则使用对应的 dangerouslyForceUnsafeInstall 请求覆盖,而 openclaw skills install 仍然是独立的 ClawHub skill 下载 / 安装流程。
兼容 bundles 会参与相同的插件列表 / 检查 / 启用 / 禁用流程。当前运行时支持包括 bundle Skills、Claude command-skills、Claude settings.json 默认值、Claude .lsp.json 和清单声明的 lspServers 默认值、Cursor command-skills,以及兼容的 Codex hook 目录。
openclaw plugins inspect <id> 还会报告检测到的 bundle 能力,以及由 bundle 支持或不支持的 MCP 和 LSP server 条目。
Marketplace 来源可以是来自 ~/.claude/plugins/known_marketplaces.json 的 Claude 已知 marketplace 名称、本地 marketplace 根目录或 marketplace.json 路径、形如 owner/repo 的 GitHub 简写、GitHub 仓库 URL,或 git URL。对于远程 marketplaces,插件条目必须保留在克隆的 marketplace 仓库内,并且只能使用相对路径来源。
完整详情请参见 openclaw plugins CLI 参考。
插件 API 概览
原生插件会导出一个暴露register(api) 的入口对象。较旧的插件仍可能使用 activate(api) 作为旧版别名,但新插件应使用 register。
register(api)。加载器仍会为较旧插件回退到 activate(api),但内置插件和新的外部插件应将 register 视为公共契约。
常见注册方法:
| 方法 | 注册内容 |
|---|---|
registerProvider | 模型提供商(LLM) |
registerChannel | 聊天渠道 |
registerTool | 智能体工具 |
registerHook / on(...) | 生命周期 hooks |
registerSpeechProvider | 文本转语音 / STT |
registerRealtimeTranscriptionProvider | 流式 STT |
registerRealtimeVoiceProvider | 双工实时语音 |
registerMediaUnderstandingProvider | 图像 / 音频分析 |
registerImageGenerationProvider | 图像生成 |
registerMusicGenerationProvider | 音乐生成 |
registerVideoGenerationProvider | 视频生成 |
registerWebFetchProvider | 网页抓取 / scrape 提供商 |
registerWebSearchProvider | Web 搜索 |
registerHttpRoute | HTTP 端点 |
registerCommand / registerCli | CLI 命令 |
registerContextEngine | 上下文引擎 |
registerService | 后台服务 |
before_tool_call:{ block: true }是终止性的;较低优先级处理器会被跳过。before_tool_call:{ block: false }是空操作,不会清除更早的 block。before_install:{ block: true }是终止性的;较低优先级处理器会被跳过。before_install:{ block: false }是空操作,不会清除更早的 block。message_sending:{ cancel: true }是终止性的;较低优先级处理器会被跳过。message_sending:{ cancel: false }是空操作,不会清除更早的 cancel。