Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Summary

OpenClaw plugin exposing 0 skills across yzj.

Install to Claude Code

openclaw plugin add JanonAI/openclaw-yzj

Run in Claude Code. Add the marketplace first with /plugin marketplace add JanonAI/openclaw-yzj if you haven't already.

README.md

YZJ Robot Channel Plugin for OpenClaw

云之家(YunZhiJia)群组对话机器人通道插件,通过 HTTP API + Webhook / WebSocket 实现双向消息通信。

> 📘 完整教程:查看 云之家集成教程 了解如何在公有云上部署 OpenClaw 并集成云之家机器人。

功能特性

  • HTTP API 集成:通过云之家 API 发送消息
  • Webhook 接收:接收云之家机器人的消息推送
  • WebSocket 接收:从 sendMsgUrl 自动推导 WebSocket 长连接地址并接收入站消息
  • 双入口去重:当 Webhook 和 WebSocket 同时收到同一条消息时,按 msgId 自动去重
  • 主动发消息:支持主动向指定用户发送消息(通过 OpenID 指定接收者)
  • OpenClaw HTTP 处理器:使用 OpenClaw 内置的 HTTP 处理器(Node.js 原生 http 模块)
  • 多账户支持:支持配置多个云之家机器人账户
  • 完整类型支持:TypeScript 类型安全
  • 双平台兼容:同时支持 OpenClaw 和 ClawDBot

前置要求

在安装插件前,你需要先获取云之家机器人。

个人机器人

1. 登录云之家

打开云之家官网:https://www.yunzhijia.com/

使用你的云之家账号完成登录。

2. 进入个人机器人页面

登录完成后,直接访问以下地址:

https://www.yunzhijia.com/im/personalRobotCreate

群组对话机器人

1. 创建群组中的对话机器人

参考 云之家集成教程

安装

方式 A:本地安装

上传 release中的openclaw-yzj.zip到服务器上,不需要解压

openclaw plugins install ./openclaw-yzj.zip
openclaw plugins enable yzj
openclaw gateway restart

方式 B:通过对话安装

如果你已经能在 OpenClaw 的 WebUI 或终端里正常和助手对话,直接告诉 OpenClaw 这几句话就行,OpenClaw 就会自己帮你配好:

1. 看一下这个地址:https://github.com/JanonAI/openclaw-yzj
2. 配置 yzj channel,使用 websocket 模式
3. webhook 地址是:https://www.yunzhijia.com/gateway/robot/webhook/send?yzjtype=0&yzjtoken=xxxxxxxxxxxxxxxxxx

如果希望它直接通过 ZIP 安装,也可以把第 1 句换成:

1. 看一下这个地址:https://github.com/JanonAI/openclaw-yzj/archive/refs/heads/main.zip

如果当前环境禁止助手执行命令或访问网络,请改用下面的命令行安装方式。

方式 C:从 GitHub 安装

方法 1:克隆仓库

# 克隆仓库
git clone https://github.com/JanonAI/openclaw-yzj.git

# 安装插件
openclaw plugins install ./openclaw-yzj
openclaw plugins enable yzj
openclaw gateway restart

方法 2:下载 ZIP 压缩包

# 下载压缩包
wget https://github.com/JanonAI/openclaw-yzj/archive/refs/heads/main.zip

# 安装插件(不需要解压)
openclaw plugins install ./main.zip
openclaw plugins enable yzj
openclaw gateway restart

或者使用 curl:

# 下载压缩包
curl -L https://github.com/JanonAI/openclaw-yzj/archive/refs/heads/main.zip -o main.zip

# 安装插件(不需要解压)
openclaw plugins install ./main.zip
openclaw plugins enable yzj
openclaw gateway restart

安装特定版本

# 下载特定分支
wget https://github.com/JanonAI/openclaw-yzj/archive/refs/heads/develop.zip

# 下载特定标签/版本
wget https://github.com/JanonAI/openclaw-yzj/archive/refs/tags/v2026.3.6.zip

# 安装
openclaw plugins install ./develop.zip  # 或 ./v2026.3.6.zip

方式 E:WorkBuddy 直接配置(推荐中国区用户)

如果你是通过腾讯 WorkBuddy (Claw) 使用本插件,可以直接在 WorkBuddy 设置中添加云之家通道,无需手动安装 ZIP 包或运行命令行。

配置步骤

1. 打开 WorkBuddy 设置 → 插件管理 2. 确认 yzj 插件已启用(如果没有请先安装) 3. 进入「通道」配置,添加云之家(YZJ)通道 4. 选择 WebSocket 作为入站模式(推荐,自动维持长连接) 5. 在「发送消息地址」中填入你的云之家机器人 Webhook 地址,格式为:

   https://www.yunzhijia.com/gateway/robot/webhook/send?yzjtype=0&yzjtoken=你的机器人Token

> 机器人 Token(yzjtoken 参数)请替换为你自己的,从云之家管理后台的机器人配置页面获取。 6. 保存配置,WorkBuddy 会自动重连

对应配置文件(供参考)

如果你需要手动编辑 WorkBuddy 的 settings.json,配置如下:

{
  "enabledPlugins": {
    "yzj@codebuddy-plugins-official": true
  },
  "channels": {
    "yzj": {
      "enabled": true,
      "inboundMode": "websocket",
      "sendMsgUrl": "https://www.yunzhijia.com/gateway/robot/webhook/send?yzjtype=0&yzjtoken=你的机器人Token",
      "webhookPath": "/yzj/webhook",
      "timeout": 10000
    }
  }
}

> 重要说明: > - sendMsgUrl 中的 Token 请务必替换为你自己的云之家机器人 Token,切勿使用他人的 Token。 > - WebSocket 模式下,WorkBuddy 会自动从 sendMsgUrl 推导长连接地址,无需额外配置 WebSocket URL。 > - 如果使用 Webhook 模式(公网可达时),需要额外配置公网可访问的 Webhook 接收地址。

获取云之家机器人 Token

1. 登录 云之家管理后台 2. 进入「应用管理」→「机器人」,创建或查看已有机器人的 Token 3. 复制机器人的 Webhook 地址,填入上面的配置中

方式 D:本地开发(link)

openclaw plugins install --link extensions/yzj
openclaw plugins enable yzj
openclaw gateway restart

配置

基本配置(单账户)

channels:
  yzj:
    enabled: true
    # 入站模式(可选:webhook | websocket,默认 webhook)
    inboundMode: "webhook"
    # 发送消息的 API URL(必需)
    sendMsgUrl: "https://www.yunzhijia.com/robot/send"
    # Webhook 路径(可选,默认 /yzj/webhook)
    webhookPath: "/yzj/webhook"
    # 超时时间,单位秒(可选,默认 10)
    timeout: 10

多账户配置

channels:
  yzj:
    enabled: true
    # 默认账户(可选)
    defaultAccount: "bot1"
    # 通道级默认入站模式(可被账户覆盖)
    inboundMode: "websocket"
    # 全局默认配置(可选)
    webhookPath: "/yzj/webhook"
    timeout: 10

    accounts:
      bot1:
        name: "生产环境机器人"
        enabled: true
        sendMsgUrl: "https://www.yunzhijia.com/robot/send"
        inboundMode: "websocket"
        webhookPath: "/yzj/bot1"
        timeout: 10

      bot2:
        name: "测试环境机器人"
        enabled: true
        sendMsgUrl: "https://test.yunzhijia.com/robot/send"
        inboundMode: "webhook"
        webhookPath: "/yzj/bot2"
        timeout: 5

网络绑定配置

由于需要接收云之家的 Webhook 推送,需要配置 OpenClaw Gateway 绑定到局域网:

gateway:
  bind: "lan"  # 或 "0.0.0.0"

配置向导会自动设置此项。

配置说明

通道级别配置

| 配置项 | 类型 | 必填 | 默认值 | 说明 | |--------|------|------|--------|------| | enabled | boolean | 否 | - | 是否启用该通道 | | name | string | 否 | - | 通道名称 | | sendMsgUrl | string | 是* | - | 发送消息的 API URL | | inboundMode | string | 否 | webhook | 入站模式:webhookwebsocket | | webhookPath | string | 否 | /yzj/webhook | Webhook 接收路径 | | timeout | number | 否 | 10 | 请求超时时间(秒) | | defaultAccount | string | 否 | - | 默认账户 ID | | accounts | object | 否 | - | 多账户配置对象 |

*注:使用 accounts 配置时,sendMsgUrl 在各账户中配置,通道级别不需要。

账户级别配置(accounts)

| 配置项 | 类型 | 必填 | 默认值 | 说明 | |--------|------|------|--------|------| | name | string | 否 | - | 账户名称 | | enabled | boolean | 否 | - | 是否启用该账户 | | sendMsgUrl | string | | - | 发送消息的 API URL | | inboundMode | string | 否 | 继承通道级配置 | 入站模式:webhookwebsocket | | webhookPath | string | 否 | - | Webhook 接收路径(继承通道级别配置) | | timeout | number | 否 | - | 请求超时时间(秒,继承通道级别配置) | | secret | string | 否 | - | 签名验证密钥(配置后自动启用签名验证) |

注:配置 secret 后会自动启用签名验证,不配置则不进行签名验证。

WebSocket 模式

inboundMode: websocket 时:

  • 插件仍然使用 sendMsgUrl 发送回复
  • 插件会从 sendMsgUrl 中提取 yzjtoken 和 host,自动推导 WebSocket 地址
  • webhookPath 仍然保留,作为并行兜底入口
  • 两个入口若收到相同 msgId,插件只处理一次

示例:

sendMsgUrl:
https://dev.kdweibo.cn/gateway/robot/webhook/send?yzjtype=12&yzjtoken=abc

推导得到:
wss://dev.kdweibo.cn/xuntong/websocket?yzjtoken=abc

签名验证

概述

为了确保请求来自云之家,避免仿冒请求,插件支持签名验证功能。当启用签名验证时,插件会验证每个 Webhook 请求的签名。

签名算法

云之家使用 HmacSHA1 算法进行签名:

1. 构建签名字符串:将消息字段按顺序用逗号拼接

   robotId,robotName,operatorOpenid,operatorName,time,msgId,content

2. 计算签名:使用 secret 作为密钥,对签名字符串进行 HmacSHA1 签名

3. Base64 编码:将签名结果进行 Base64 编码得到最终签名值

配置签名验证

配置 secret 后会自动启用签名验证:

channels:
  yzj:
    enabled: true
    sendMsgUrl: "https://www.yunzhijia.com/robot/send"
    webhookPath: "/yzj/webhook"

    # 多账户配置
    accounts:
      bot1:
        name: "生产环境机器人"
        enabled: true
        sendMsgUrl: "https://www.yunzhijia.com/robot/send"
        webhookPath: "/yzj/bot1"
        # 签名验证密钥(配置后自动启用验证)
        secret: "your-app-secret-here"

禁用签名验证

如果仅在受信任的内网环境部署,不配置 secret 即可禁用签名验证:

channels:
  yzj:
    enabled: true
    sendMsgUrl: "https://www.yunzhijia.com/robot/send"
    accounts:
      bot1:
        name: "内网机器人"
        enabled: true
        sendMsgUrl: "https://intranet.yunzhijia.com/robot/send"
        # 不配置 secret,不进行签名验证

签名验证流程

1. 云之家发起请求
   ↓
2. 插件接收请求,读取 body
   ↓
3. 检查是否配置了 secret
   ↓
4. 从请求头中提取 sign
   ↓
5. 使用相同的算法计算期望签名
   ↓
6. 比较签名是否一致
   ↓
7. 验证通过:处理消息 | 验证失败:返回 401 错误

测试签名验证

使用以下命令测试 Webhook(需要正确的签名):

# 示例:使用正确的签名
curl -X POST http://localhost:3000/yzj/webhook \
  -H "Content-Type: application/json" \
  -H "sign: <computed-signature>" \
  -d '{
    "type": 2,
    "robotId": "test_bot",
    "robotName": "测试",
    "operatorOpenid": "test_user",
    "operatorName": "测试用户",
    "time": 1678901234567,
    "msgId": "test_msg",
    "content": "测试消息"
  }'

签名验证错误处理

| 错误情况 | HTTP 状态码 | 说明 | |----------|-------------|------| | 缺少 sign 头 | 401 | 请求头中缺少签名信息 | | 签名不匹配 | 401 | 签名值与计算结果不一致 | | 未配置 secret | 500 | 启用了签名验证但未配置密钥 |

消息格式

接收消息(Webhook)

云之家通过 Webhook 推送消息到 OpenClaw:

{
  "type": 2,                    // 消息类型(2=文本)
  "robotId": "bot_001",         // 机器人ID
  "robotName": "助手",           // 机器人名称
  "operatorOpenid": "user_123", // 发送者OpenID
  "operatorName": "张三",        // 发送者姓名
  "time": 1678901234567,        // 时间戳
  "msgId": "msg_456",           // 消息ID
  "content": "你好"             // 消息内容
}

发送消息(API)

OpenClaw 通过云之家 API 发送消息:

基本格式

{
  "msgtype": 2,     // 消息类型(2=文本)
  "content": "您好!有什么可以帮助您的吗?"
}

带指定接收者(主动发消息):

{
  "msgtype": 2,
  "content": "这是一条主动推送的消息",
  "notifyParams": [{
    "type": "openIds",
    "values": ["user_openid_123"]  // 指定接收者的 OpenID
  }]
}

响应格式

{
  "success": true,
  "data": {
    "type": 2,
    "content": "消息已发送"
  }
}

使用向导

运行配置向导自动设置:

openclaw onboard yzj

向导会引导你完成:

1. 配置云之家机器人(登录云之家管理后台) 2. 设置 Webhook URL 3. 获取发送消息的 URL 4. 配置 OpenClaw 通道

云之家后台配置

1. 在群组中创建对话机器人

前提条件:需要群组管理员权限

1. 打开云之家客户端,进入需要添加机器人的群组 2. 点击群组设置,进入「群管理」 3. 找到「智能机器人」或「对话机器人」选项 4. 点击「新建对话机器人」或「添加机器人」 5. 填写机器人基本信息:

  • 机器人名称:如"智能助手"
  • 机器人描述:根据需要填写
  • 机器人头像:上传或选择默认头像

6. 保存创建

2. 配置消息接收地址(Webhook)

1. 创建完成后,进入机器人详情页 2. 找到「消息接收地址」或「回调地址」配置项 3. 填写 OpenClaw YZJ Robot 的 Webhook 地址:

格式http://your-server:port/yzj/webhook

示例

  • 本地开发:http://localhost:3000/yzj/webhook
  • 局域网:http://192.168.1.100:3000/yzj/webhook
  • 公网:https://your-domain.com/yzj/webhook

4. 保存配置

3. 获取发送消息的 URL(sendMsgUrl)

1. 保存 Webhook 配置后,刷新页面或重新进入机器人详情页 2. 在机器人信息中查看完整信息,会显示该机器人的 发送消息接口地址 3. 复制该地址(格式类似:https://www.yunzhijia.com/robot/send 或自定义域名) 4. 将该地址填写到 OpenClaw YZJ Robot 配置中的 sendMsgUrl 字段

配置示例

channels:
  yzj:
    enabled: true
    # 步骤 3 中复制的发送消息接口地址
    sendMsgUrl: "https://www.yunzhijia.com/robot/send"
    # 步骤 2 中配置的 Webhook 地址路径
    webhookPath: "/yzj/webhook"
    timeout: 10

4. 配置注意事项

  • Webhook 地址必须可访问:确保云之家服务器能够访问到你的 OpenClaw Gateway
  • 本地开发需要内网穿透:使用 ngrok、frp 等工具将本地服务暴露到公网
  • 生产环境建议使用 HTTPS:更安全,且某些企业环境可能要求
  • 测试配置:在群组中 @机器人 发送测试消息,查看 OpenClaw 日志确认是否收到

消息类型支持

目前支持的消息类型:

| 类型 | 值 | 说明 | |------|-----|------| | 文本 | 2 | 纯文本消息 |

更多消息类型支持开发中...

核心功能实现

1. 账户管理(accounts.ts)

支持灵活的多账户配置:

  • 单账户模式:直接在通道级别配置 sendMsgUrl
  • 多账户模式:通过 accounts 对象配置多个机器人
  • 配置合并:账户配置继承全局默认配置
  • 账户解析:自动解析默认账户和指定账户

关键函数:

  • listYZJAccountIds() - 列出所有账户 ID
  • resolveDefaultYZJAccountId() - 解析默认账户
  • resolveYZJAccount() - 解析完整账户信息
  • mergeYZJAccountConfig() - 合并账户配置
  • listEnabledYZJAccounts() - 列出已启用账户

2. 消息处理流程

┌─────────────┐
│ 云之家用户  │
└──────┬──────┘
       │ 发送消息
       ▼
┌─────────────────────┐
│ Webhook 推送        │
│ (POST /yzj/webhook) │
└──────┬──────────────┘
       │
       ▼
┌─────────────────────────┐
│ monitor.ts              │
│ handleYZJWebhookRequest │
└──────┬──────────────────┘
       │
       ▼
┌─────────────────────────┐
│ 解析消息                │
│ - 验证消息格式          │
│ - 提取元数据            │
└──────┬──────────────────┘
       │
       ▼
┌─────────────────────────┐
│ startAgentForInbound    │
│ - 构建 Agent Envelope   │
│ - 分发到 Agent 处理     │
└──────┬──────────────────┘
       │
       ▼
┌─────────────────────────┐
│ Agent 处理响应          │
│ - 生成回复消息          │
└──────┬──────────────────┘
       │
       ▼
┌─────────────────────────┐
│ sendYZJMessage          │
│ - 调用云之家 API        │
│ - 发送回复消息          │
└──────┬──────────────────┘
       │
       ▼
┌─────────────┐
│ 云之家用户  │
└─────────────┘

3. 通道能力配置

通过 src/channel.ts 实现的 Channel 接口支持:

支持的功能:

  • ✅ 私聊消息(DM)
  • ✅ 群聊消息
  • ✅ 文本消息发送
  • ✅ 主动消息推送(通过 OpenID 指定接收者)
  • ✅ 多账户管理

不支持的功能:

  • ❌ 媒体消息(图片、文件等)
  • ❌ 表情符号
  • ❌ 线程回复
  • ❌ 投票功能
  • ❌ 原生命令
  • ❌ 流式响应(云之家 API 限制)

安全策略:

  • 私聊消息策略:pairing(配对模式)
  • 不支持 allowFrom 配置

故障排查

Webhook 无法接收消息

症状:在云之家发送消息,OpenClaw 没有响应。

解决方法

1. 检查通道是否启用:

   openclaw config get channels.yzj.enabled

2. 确认 Gateway 绑定配置:

   openclaw config get gateway.bind
   # 应该是 "lan" 或 "0.0.0.0"

3. 检查 Webhook 路径是否正确:

   openclaw config get channels.yzj.webhookPath

4. 确认云之家后台 Webhook URL 配置正确

5. 查看 Gateway 日志:

   openclaw logs --follow

API 发送失败

症状:OpenClaw 无法发送消息到云之家。

解决方法

1. 检查 sendMsgUrl 是否配置:

   openclaw config get channels.yzj.sendMsgUrl

2. 验证 URL 是否可访问:

   curl -X POST https://api.yunzhijia.com/robot/send \
     -H "Content-Type: application/json" \
     -d '{"msgtype":2,"content":"测试"}'

3. 检查网络连接和防火墙设置

4. 查看错误日志:

   openclaw logs --follow | grep yzj

配置多账户后无法工作

症状:配置了多个账户后,消息无法发送。

解决方法

1. 确认 defaultAccount 配置正确:

   openclaw config get channels.yzj.defaultAccount

2. 检查各账户配置是否完整:

   openclaw config get channels.yzj.accounts

3. 查看启用的账户:

   openclaw channels list

架构说明

yzj/
├── src/
│   ├── types.ts          # 类型定义(119 行)- 消息格式、配置结构、接口定义
│   ├── config-schema.ts  # JSON Schema 配置验证(54 行)- 配置规则和默认值
│   ├── compat.ts         # OpenClaw/ClawDBot 兼容层(44 行)- 双平台动态导入
│   ├── runtime.ts        # 运行时状态管理(27 行)- 插件生命周期管理
│   ├── accounts.ts       # 账户配置解析(102 行)- 多账户配置管理
│   ├── onboarding.ts     # 配置向导(194 行)- 交互式配置引导
│   ├── monitor.ts        # Webhook 处理器(315 行)- 消息接收和发送
│   └── channel.ts        # 通道插件实现(272 行)- 核心 Channel 接口
├── index.ts              # 插件入口(20 行)- 插件注册和初始化
├── package.json          # 包配置(ESM 模块)
├── openclaw.plugin.json  # OpenClaw 插件元数据
├── clawdbot.plugin.json  # ClawDBot 插件元数据
└── README.md             # 本文档

模块依赖关系

index.ts (入口)
  ├── channel.ts (通道插件实现)
  │     ├── accounts.ts (账户管理)
  │     ├── config-schema.ts (配置验证)
  │     ├── onboarding.ts (配置向导)
  │     └── monitor.ts (Webhook 处理)
  │           └── types.ts (类型定义)
  ├── compat.ts (平台兼容)
  ├── runtime.ts (运行时)
  └── types.ts (类型定义)

技术栈

  • 运行时: Node.js (ESM 模块系统)
  • 开发语言: TypeScript
  • HTTP 处理: Node.js 原生 http 模块(IncomingMessage, ServerResponse
  • 类型验证: Zod v4.3.6 + JSON Schema
  • 平台支持: OpenClaw / ClawDBot(双平台兼容)
  • 依赖管理: npm

核心依赖

{
  "dependencies": {},
  "peerDependencies": {
    "openclaw": "*",
    "clawdbot": "*"
  }
}

版本信息

  • 当前版本: 2026.3.8
  • 包名: @openclaw/yzj
  • 发布日期: 2026-03-06

开发

本地测试

1. Link 插件到本地:

   openclaw plugins install --link /path/to/yzj

2. 启用并重启:

   openclaw plugins enable yzj
   openclaw gateway restart

3. 查看 Webhook 日志:

   openclaw logs --follow

调试 Webhook

使用 curl 测试 Webhook 接收:

curl -X POST http://localhost:3000/yzj/webhook \
  -H "Content-Type: application/json" \
  -d '{
    "type": 2,
    "robotId": "test_bot",
    "robotName": "测试",
    "operatorOpenid": "test_user",
    "operatorName": "测试用户",
    "time": 1678901234567,
    "msgId": "test_msg",
    "content": "测试消息"
  }'

代码结构要点

类型系统(src/types.ts)

// 消息类型枚举
enum MessageType {
  TEXT = 2
}

// 接收消息接口(Webhook)
interface YZJIncomingMessage {
  type: MessageType;           // 消息类型
  robotId: string;             // 机器人ID
  robotName: string;           // 机器人名称
  operatorOpenid: string;      // 发送者OpenID
  operatorName: string;        // 发送者姓名
  time: number;                // 时间戳
  msgId: string;               // 消息ID
  content: string;             // 消息内容
}

// 发送消息接口(API)
interface YZJOutgoingMessage {
  msgtype: MessageType;        // 消息类型
  content: string;             // 消息内容
}

配置验证(src/config-schema.ts)

使用 JSON Schema 进行配置验证:

  • 支持条件验证:有 accountssendMsgUrl 可选
  • 默认值自动设置:webhookPathtimeout
  • 类型安全:通过 Zod 进行运行时验证

平台兼容(src/compat.ts)

动态导入策略: 1. 优先尝试导入 openclaw/sdk 2. 回退到 clawdbot/sdk 3. 重新导出通用类型和工具函数

确保插件在两个平台都能无缝运行。

限制说明

  • 需要有效的云之家机器人 sendMsgUrl
  • Webhook 需要可被云之家访问(公网或内网穿透)
  • 目前仅支持文本消息
  • 不支持流式响应(云之家 API 限制)
  • 消息大小限制:1MB
  • 主动发消息需要获取用户的 OpenID

与 WeCom 插件的对比

| 特性 | YZJ | WeCom | |------|-----|-------| | 消息加密 | 无 | AES 加密 | | 签名验证 | 无 | Token 签名 | | 主动发送 | ✅ 支持 | ❌ 仅回调回复 | | 流式响应 | ❌ 不支持 | ✅ 支持 | | Webhook 验证 | 无需验证 | 需验证签名 | | 配置复杂度 | 简单 | 中等 |

项目元数据

包信息

  • 包名: @openclaw/yzj
  • 版本: 2026.3.8
  • 描述: OpenClaw YZJ (Yunzhijia) intelligent bot channel plugin
  • 模块类型: ESM
  • 插件 ID: yzj
  • 通道标签: YZJ Robot

插件配置

  • OpenClaw 插件元数据: openclaw.plugin.json
  • ClawDBot 插件元数据: clawdbot.plugin.json
  • 文档路径: /channels/yzj
  • 支持的扩展: ./index.ts

统计信息

  • 总代码行数: ~1,247 行(不含配置和文档)
  • 核心模块数: 8 个
  • 支持的消息类型: 1 种(文本)
  • 平台兼容性: OpenClaw + ClawDBot

许可证

MIT

贡献

欢迎提交 Issue 和 Pull Request!

开发规范

1. 代码风格: 遵循 TypeScript 最佳实践 2. 提交信息: 使用清晰的提交描述 3. 测试: 确保功能正常后再提交 4. 文档: 更新相关文档和注释

相关链接

Related plugins

Browse all →