← Back to Plugins
Channels

Wecom Aibot

StyXxxxxxx By StyXxxxxxx ⭐ 1 stars 👁 243 views ▲ 0 votes

OpenClaw 插件:企业微信智能机器人接入 OpenClaw 的 channel plugin,基于官方原生(2026.3) WebSocket 长连接模式,无需公网回调。

GitHub

Install

openclaw plugins install wecom-aibot@latest

Configuration Example

{
  "channels": {
    "wecom-aibot": {
      "enabled": true,
      "botId": "YOUR_BOT_ID",
      "secret": "YOUR_BOT_SECRET",
      "defaultTo": "DEFAULT_CHATID",
      "allowFrom": ["*"]
    }
  }
}

README

# OpenClaw 企业微信智能机器人插件(WeCom AI Bot Channel Plugin)

本项目是一个 **OpenClaw 插件(OpenClaw channel plugin)**,用于将 **企业微信智能机器人** 接入 OpenClaw。

基于官方原生SDK `@wecom/aibot-node-sdk`, 通过 WebSocket 长连接模式,实现:

企业微信 ⇄ OpenClaw Agent / LLM

无需公网回调(Webhook),适合内网部署的 OpenClaw 企业微信机器人方案。

## 能做到什么

- 接收企业微信机器人推送的 **文本消息**(单聊/群聊)。
- 将入站消息转换为 OpenClaw 的标准上下文,交由默认/绑定的 agent 处理。
- 将 OpenClaw 的回复以 **Markdown 文本**回发到企业微信(通过 WebSocket 回复通道)。
- 支持 **流式输出**:当 OpenClaw 对当前模型/路由产生 `block` 分段时,本插件会用同一个 `streamId` 持续刷新内容,并在本轮结束时 `finish=true` 完成流式消息。
- 支持多账号配置(`channels.wecom-aibot.accounts`)。
- 支持基础 allowlist(`allowFrom`)。

## 还没做到什么(已知限制)

- 受限于@wecom/[email protected]目前的能力,未实现理想的流式传输
- 实现了 **文本** 入站与文本/markdown 出站;图片/文件/语音/图文混排目前未接入。
- 未实现企业微信侧的模板卡片(Template Card)与交互事件回调。
- 群聊的更细粒度权限(比如群里 @ 提及才响应)未做专门适配,依赖 OpenClaw 的通用群策略/路由能力。

## 安装方式(OpenClaw)

### 方式 A:从 npm 安装(推荐用于部署/服务器)

```bash
openclaw plugins install wecom-aibot@latest --pin
openclaw plugins enable wecom-aibot
```

### 方式 B:从本地目录安装(会拷贝文件)

```bash
openclaw plugins install /path/to/wecom-aibot
openclaw plugins enable wecom-aibot
```

### 方式 C:开发模式(link,不拷贝,适合迭代)

```bash
openclaw plugins install -l /path/to/wecom-aibot
openclaw plugins enable wecom-aibot
```

修改代码后:

```bash
npm run build
```

然后重启 `openclaw gateway`。

## 配置(openclaw.json)

编辑 `~/.openclaw/openclaw.json`

### 单账号

```json
{
  "channels": {
    "wecom-aibot": {
      "enabled": true,
      "botId": "YOUR_BOT_ID",
      "secret": "YOUR_BOT_SECRET",
      "defaultTo": "DEFAULT_CHATID",
      "allowFrom": ["*"]
    }
  }
}
```

### 多账号

```json
{
  "channels": {
    "wecom-aibot": {
      "accounts": {
        "default": { "botId": "BOT1", "secret": "SECRET1", "allowFrom": ["*"] },
        "bot2": { "botId": "BOT2", "secret": "SECRET2", "defaultTo": "CHATID2" }
      }
    }
  }
}
```

字段说明:

- `botId` / `secret`:企业微信智能机器人凭据。
- `allowFrom`:允许的 `userid` 列表;包含 `"*"` 表示放行全部。
- `defaultTo`:当 OpenClaw 主动出站且未指定目标时使用的 `chatid`(仅用于主动发送)。

## 运行

```bash
openclaw gateway
```

如果看到 OpenClaw 提示 `plugins.allow is empty`,建议显式加白名单:

```json
{
  "plugins": {
    "allow": ["wecom-aibot"],
    "entries": { "wecom-aibot": { "enabled": true } }
  }
}
```

## 代码结构

- `src/wecom/channel.ts`:ChannelPlugin 定义、配置 schema、出站发送、streaming 能力声明
- `src/wecom/gateway.ts`:WebSocket 客户端管理、入站处理、会话与流式回复桥接
- `src/wecom/config.ts`:`channels.wecom-aibot` 配置解析与多账号解析
channels

Comments

Sign in to leave a comment

Loading comments...