深度

OpenClaw 插件开发完全指南:从零构建自定义渠道和工具插件

OpenClaw 插件(Plugin)开发完整教程:插件类型(渠道插件/工具插件/Provider插件)、插件的目录结构和 package.json 规范、使用 Plugin SDK 开发自定义消息渠道(实现 onMessage/sendMessage 接口)、开发自定义工具(Tool)的函数签名和参数 Schema、本地插件安装与调试(openclaw plugins install ./local-plugin)、发布到 npm 的规范要求(@openclaw/ 命名空间)、插件的权限声明(capabilities)、社区插件列表(Plugin Bundles)获取,以及常见插件开发错误和调试技巧。

2026/3/254分钟 阅读ClaudeEagle

OpenClaw 的渠道和工具都是插件系统的一部分。 如果内置插件满足不了你的需求,你可以自己开发。

插件类型

渠道插件(Channel Plugin): → 让 OpenClaw 接入新的消息平台 → 例:为公司内部 IM 系统开发接入插件 → 实现:onMessage / sendMessage / start / stop 工具插件(Tool Plugin): → 给 AI 添加新的工具能力 → 例:调用公司 ERP 系统的工具 → 实现:一组 Tool 函数(带参数 Schema) Provider 插件(Model Provider): → 接入新的 AI 模型服务 → 例:私有部署的模型 API → 实现:OpenAI 兼容接口适配

快速开始:安装与管理

bash
# 从 npm 安装官方插件
openclaw plugins install @openclaw/mattermost
openclaw plugins install @openclaw/matrix

# 从本地目录安装(开发中的插件)
openclaw plugins install ./my-custom-plugin

# 列出已安装插件
openclaw plugins list

# 更新所有插件
openclaw plugins update

# 卸载插件
openclaw plugins uninstall @openclaw/mattermost

项目结构(渠道插件)

my-channel-plugin/ package.json ← 插件元数据 index.js ← 入口文件 src/ channel.js ← 渠道实现 config-schema.js ← 配置项 Schema README.md

package.json 规范

json
{
  "name": "@yourscope/openclaw-my-channel",
  "version": "1.0.0",
  "description": "OpenClaw plugin for MyChat",
  "main": "index.js",
  "openclaw": {
    "type": "plugin",
    "pluginType": "channel",
    "channelId": "mychat",
    "capabilities": ["messages", "groups", "reactions"],
    "configSchema": "./src/config-schema.js"
  },
  "peerDependencies": {
    "openclaw": ">=1.0.0"
  }
}

关键字段:

  • openclaw.type:固定为 "plugin"
  • openclaw.pluginType"channel" / "tool" / "provider"
  • openclaw.channelId:在配置文件中用的渠道名(channels.mychat
  • openclaw.capabilities:声明支持的能力

渠道插件实现

javascript
// src/channel.js
class MyChatChannel {
  constructor(config, gateway) {
    this.config = config;
    this.gateway = gateway;
    this.client = null;
  }

  // 启动渠道(连接到外部平台)
  async start() {
    this.client = new MyChatClient({
      token: this.config.botToken,
      baseUrl: this.config.baseUrl,
    });

    // 监听消息
    this.client.on('message', (msg) => {
      this.gateway.ingest({
        channel: 'mychat',
        chatId: msg.channelId,
        userId: msg.userId,
        text: msg.text,
        timestamp: msg.ts,
      });
    });

    await this.client.connect();
  }

  // 停止渠道
  async stop() {
    await this.client?.disconnect();
  }

  // 发送消息(Gateway 调用此方法回复用户)
  async sendMessage(target, content) {
    await this.client.send({
      channelId: target.chatId,
      text: content.text,
    });
  }
}

module.exports = { MyChatChannel };

工具插件实现

javascript
// src/tools.js

// 工具定义(AI 会根据 description 和 parameters 决定何时调用)
const myErpTool = {
  name: "query_erp",
  description: "查询公司 ERP 系统中的订单、库存或客户信息",
  parameters: {
    type: "object",
    properties: {
      queryType: {
        type: "string",
        enum: ["order", "inventory", "customer"],
        description: "查询类型"
      },
      id: {
        type: "string",
        description: "订单号/产品ID/客户ID"
      }
    },
    required: ["queryType", "id"]
  },

  // 实际执行逻辑
  async execute({ queryType, id }, context) {
    const response = await fetch(
      `https://erp.company.com/api/${queryType}/${id}`,
      { headers: { Authorization: `Bearer ${context.config.erpToken}` } }
    );
    const data = await response.json();
    return JSON.stringify(data, null, 2);
  }
};

module.exports = { tools: [myErpTool] };

配置 Schema

javascript
// src/config-schema.js
module.exports = {
  type: "object",
  properties: {
    botToken: {
      type: "string",
      description: "Bot Token from MyChat developer portal",
      secret: true   // 标记为密钥,不会出现在日志中
    },
    baseUrl: {
      type: "string",
      description: "MyChat server URL",
      default: "https://chat.example.com"
    },
    dmPolicy: {
      type: "string",
      enum: ["open", "pairing", "allowlist"],
      default: "pairing"
    }
  },
  required: ["botToken", "baseUrl"]
};

本地开发与调试

bash
# 安装本地插件(软链接,修改立即生效)
openclaw plugins install ./my-channel-plugin --link

# 带详细日志启动
OPENCLAW_LOG_LEVEL=debug openclaw gateway start

# 查看插件加载状态
openclaw plugins list --verbose

发布到 npm

bash
# 登录 npm
npm login

# 测试打包
npm pack --dry-run

# 发布(推荐遵循 @openclaw/ 命名规范)
npm publish --access public

发布后其他用户可以直接安装:

bash
openclaw plugins install @yourscope/openclaw-my-channel

Plugin Bundles(插件包)

多个插件打包分发:

bash
# 安装一个 Bundle(包含多个相关插件)
openclaw plugins install @openclaw/bundle-enterprise

社区插件列表:

docs.openclaw.ai/plugins/community

来源:OpenClaw 官方文档 - docs.openclaw.ai/tools/plugin

相关文章推荐

深度OpenClaw 开源生态全景:MIT 协议、插件系统、社区贡献与二次开发指南OpenClaw 开源生态完整介绍:MIT 开源协议含义、GitHub 仓库结构、Skills 插件市场(ClawHub)、社区贡献指南(提 PR/报 Issue)、自定义频道开发、自定义工具(Tool)扩展、本地开发环境搭建,以及如何基于 OpenClaw 打造自己的 AI 助手产品。2026/3/17深度OpenClaw 多 Gateway 架构完全指南:一台机器运行多个独立 AI 助手实例OpenClaw 多 Gateway(Multi-Gateway)架构完整教程:多实例的隔离优势、同一台机器运行多个 Gateway(不同端口/配置文件/workspace)、systemd 管理多个 Gateway 服务、Nginx 虚拟主机为每个实例分配独立域名、API Key 隔离与成本拆分、单机多实例 vs 多机方案对比,以及 Docker Compose 多容器隔离部署方案。2026/3/26深度OpenClaw Hooks 自动化进阶:消息前后的智能拦截、转换与触发机制OpenClaw Hooks(钩子)自动化系统进阶教程:Hooks 的触发时机(before-send/after-receive/on-tool-call)、用 Hooks 拦截消息并修改内容(自动翻译/过滤/格式化)、基于条件的 Hook 触发(渠道过滤/关键词匹配)、Hook 中调用外部 API(Notion 记录/Bark 通知/监控告警)、exec 工具二次确认 Hook,以及 Hooks 与 SOUL.md 和 Standing Orders 的优先级关系详解。2026/3/26深度OpenClaw 安全威胁模型深度解析:MITRE ATLAS 框架下的 AI 助手攻防分析OpenClaw 安全架构深度分析:个人助手信任模型(单用户/单 Gateway 边界)、形式化验证的认证逻辑、基于 MITRE ATLAS 框架的 AI 系统威胁分类(直接提示注入/间接提示注入/工具滥用/数据泄露/会话劫持)、多租户共享 Gateway 的风险与安全边界说明、exec/browser/文件工具的权限最小化配置、频道白名单与沙箱配置对应的威胁缓解措施,以及 `openclaw security audit` 命令的使用方法。2026/3/24深度OpenClaw 多模型路由完全指南:30+ 模型提供商接入、智能切换与故障转移OpenClaw 多模型路由系统完整教程:支持的 30+ 模型提供商全览(Anthropic/OpenAI/Gemini/Ollama/OpenRouter/DeepSeek/Qwen/GLM 等)、provider/model 格式的模型指定方式、按渠道/Agent/任务类型设置不同默认模型、Model Failover 故障转移配置(主模型失败自动切换备用模型)、Claude Max API Proxy 接入方式、本地模型(Ollama/vLLM)与云端模型混用策略,以及 Token 限制和费用控制实践。2026/3/24深度OpenClaw 多渠道路由完全指南:同时管理 Telegram、WhatsApp、Slack 的统一 AI 助手OpenClaw 多渠道路由(Channel Routing)完整教程:如何在一个 OpenClaw 实例上同时运行 Telegram、WhatsApp、Slack 等多个渠道、每个渠道使用独立 Agent(SOUL.md)的路由配置、基于渠道类型和群组 ID 的路由规则、同一消息跨渠道广播(Broadcast Groups)、根据渠道身份动态调整 AI 人格与语言风格,以及多渠道管理的最佳实践(避免消息混淆/保持上下文独立/渠道专属配置)。2026/3/23