Просмотр исходного кода

vault backup: 2026-07-08 10:56:58

zhensolid 2 недель назад
Родитель
Сommit
a144c52029
1 измененных файлов с 443 добавлено и 0 удалено
  1. 443 0
      OpenClaw/OpenClaw 企业微信机器人部署与Skills指南.md

+ 443 - 0
OpenClaw/OpenClaw 企业微信机器人部署与Skills指南.md

@@ -0,0 +1,443 @@
+---
+tags:
+  - openclaw
+  - 企业微信
+  - wecom
+  - 机器人
+  - skill
+created: 2026-07-04
+---
+
+# OpenClaw 企业微信机器人部署与 Skills 指南
+
+## 一、概述
+
+OpenClaw 企业微信插件(`@wecom/wecom-openclaw-plugin`)由腾讯企业微信团队官方维护,支持两种模式:
+
+| 模式 | 连接方式 | 消息格式 | 适用场景 |
+|------|----------|----------|----------|
+| **Bot 模式**(智能机器人) | WebSocket 长连接 | JSON | 快速接入,流式回复 |
+| Agent 模式(自建应用) | HTTP Webhook 回调 | XML 加密 | 企业应用,API 驱动 |
+
+> 本文档聚焦 Bot 模式(WebSocket),这也是最常用的方式。
+
+---
+
+## 二、前提条件
+
+- OpenClaw >= 2026.3.28
+- 企业微信管理后台创建「长连接方式」智能机器人,获取 **Bot ID** 和 **Secret**
+  - 创建入口:https://open.work.weixin.qq.com/help2/pc/cat?doc_id=21657#2.1
+
+---
+
+## 三、部署步骤
+
+### 3.1 安装插件
+
+```bash
+# 一键安装(推荐)
+npx -y @wecom/wecom-openclaw-cli install
+
+# 强制重装
+npx -y @wecom/wecom-openclaw-cli install --force
+```
+
+### 3.2 启用插件
+
+安装后插件默认处于 **disabled** 状态,需两步启用:
+
+```bash
+# 1. 将插件加入白名单
+openclaw config set plugins.allow '["deepseek","searxng","memory-core","wecom-openclaw-plugin"]'
+
+# 2. 重启 gateway
+openclaw daemon restart
+```
+
+> 验证:`openclaw plugins list | grep wecom` 应显示 `enabled`
+
+### 3.3 配置 Bot 凭证
+
+```bash
+openclaw config set channels.wecom.botId "你的BotID"
+openclaw config set channels.wecom.secret "你的Secret"
+openclaw config set channels.wecom.enabled true
+openclaw daemon restart
+```
+
+### 3.4 配置 wecom_mcp 工具白名单
+
+Skills 依赖 `wecom_mcp` MCP 工具,需确保在 `tools.alsoAllow` 中:
+
+```bash
+openclaw config set tools.alsoAllow '["wecom_mcp"]'
+```
+
+### 3.5 验证
+
+```bash
+openclaw status
+# 应看到:WeCom | ON | OK | configured
+```
+
+---
+
+## 四、配置参考
+
+### Bot 模式核心配置
+
+| 配置项 | 说明 | 默认值 |
+|--------|------|--------|
+| `channels.wecom.enabled` | 启用通道 | `false` |
+| `channels.wecom.botId` | 机器人 Bot ID | — |
+| `channels.wecom.secret` | 机器人 Secret | — |
+| `channels.wecom.connectionMode` | 连接模式 | `websocket` |
+| `channels.wecom.websocketUrl` | WebSocket 端点 | `wss://openws.work.weixin.qq.com` |
+| `channels.wecom.sendThinkingMessage` | 发送"思考中"占位 | `true` |
+
+### 访问控制
+
+| 配置项 | 说明 | 可选值 | 默认值 |
+|--------|------|--------|--------|
+| `channels.wecom.dmPolicy` | 私聊策略 | `pairing`/`open`/`allowlist`/`disabled` | `open` |
+| `channels.wecom.groupPolicy` | 群聊策略 | `open`/`allowlist`/`disabled` | `open` |
+| `channels.wecom.allowFrom` | 私聊白名单 | userid 数组 | `[]` |
+| `channels.wecom.groupAllowFrom` | 群聊白名单 | chatid 数组 | `[]` |
+
+---
+
+## 五、内置 Skills 详解(12个)
+
+> 所有 Skill 通过 `wecom_mcp` MCP 工具调用,格式:`wecom_mcp call <品类> <接口> '<JSON入参>'`
+
+### 5.1 wecom-contact — 通讯录查询
+
+**触发词**:查同事、找某人、通讯录
+
+| 接口 | 用途 |
+|------|------|
+| `get_userlist` | 获取可见范围内全部成员(userid、姓名、别名) |
+
+```
+wecom_mcp call contact get_userlist '{}'
+```
+
+### 5.2 wecom-msg — 消息管理 💬
+
+**触发词**:查看消息、看聊天记录、发消息、最近有什么消息
+
+| 接口 | 用途 | chat_type |
+|------|------|-----------|
+| `get_msg_chat_list` | 按时间范围查会话列表 | — |
+| `get_message` | 拉取会话消息(7天内) | 1=单聊 2=群聊 |
+| `get_msg_media` | 下载图片/文件/语音/视频 | — |
+| `send_message` | 发送文本消息 | 1=单聊 2=群聊 |
+
+```
+# 获取会话列表
+wecom_mcp call msg get_msg_chat_list '{"begin_time":"2026-07-01 00:00:00","end_time":"2026-07-04 23:59:59"}'
+
+# 拉取群消息
+wecom_mcp call msg get_message '{"chat_type":2,"chatid":"群ID","begin_time":"2026-07-01 00:00:00","end_time":"2026-07-04 23:59:59"}'
+
+# 发送消息
+wecom_mcp call msg send_message '{"chat_type":2,"chatid":"群ID","msgtype":"text","text":{"content":"你好"}}'
+```
+
+> **限制**:消息拉取仅支持最近 7 天,时间格式 `YYYY-MM-DD HH:mm:ss`
+
+### 5.3 wecom-doc — 文档管理
+
+**触发词**:企业微信文档、创建文档、写个文档、改写文档
+
+| 接口 | 用途 |
+|------|------|
+| `create_doc` | 新建空白文档 |
+| `get_doc_content` | 以 Markdown 读取文档内容 |
+| `edit_doc_content` | 用 Markdown 覆写文档内容 |
+
+```
+wecom_mcp call doc create_doc '{"doc_name":"会议纪要"}'
+wecom_mcp call doc get_doc_content '{"docid":"xxx"}'
+wecom_mcp call doc edit_doc_content '{"docid":"xxx","content":"# 新内容"}'
+```
+
+> 支持通过 `docid` 或文档 URL 定位。URL 格式:`https://doc.weixin.qq.com/doc/xxx`
+
+### 5.4 wecom-sheet — 在线表格
+
+**触发词**:企业微信表格、在线表格、Excel
+
+| 接口 | 用途 |
+|------|------|
+| `create_doc` | 新建在线表格(doc_type=3) |
+| `get_doc_content` | 读取为 Markdown |
+| `sheet_get_info` | 获取子表列表和基础信息 |
+
+```
+wecom_mcp call doc create_doc '{"doc_type":3,"doc_name":"数据统计"}'
+```
+
+> URL 格式:`https://doc.weixin.qq.com/sheet/xxx`
+
+### 5.5 wecom-smartsheet — 智能表格
+
+**触发词**:智能表格、smartsheet
+
+| 接口 | 用途 |
+|------|------|
+| `create_doc` | 新建智能表格(doc_type=10) |
+| `smartsheet_get_sheet` | 查询子表 |
+| `smartsheet_add_sheet` | 添加子表 |
+| `smartsheet_get_fields` | 查询字段 |
+| `smartsheet_add_fields` | 添加字段 |
+| `smartsheet_get_records` | 查询记录 |
+
+```
+wecom_mcp call doc create_doc '{"doc_type":10,"doc_name":"项目管理"}'
+```
+
+> URL 格式:`https://doc.weixin.qq.com/smartsheet/xxx`
+
+### 5.6 wecom-smartpage — 智能文档
+
+**触发词**:智能文档、智能主页
+
+| 接口 | 用途 |
+|------|------|
+| `smartpage_create` | 将 Markdown 发布为智能文档 |
+| `smartpage_export_task` | 提交导出任务(异步) |
+| `smartpage_get_export_result` | 查询导出结果 |
+
+```
+wecom_mcp call doc smartpage_create '{"doc_name":"周报","content":"# 本周工作总结"}'
+```
+
+> URL 格式:`https://doc.weixin.qq.com/smartpage/xxx`
+
+### 5.7 wecom-meeting — 会议管理
+
+**触发词**:创建会议、预约会议、查看会议、取消会议
+
+| 接口 | 用途 |
+|------|------|
+| `create_meeting` | 创建预约会议 |
+| `list_user_meetings` | 查询会议列表(±30天) |
+| `get_meeting_info` | 获取会议详情 |
+| `cancel_meeting` | 取消会议 |
+| `set_invite_meeting_members` | 更新参与人 |
+
+```
+wecom_mcp call meeting create_meeting '{"title":"项目评审","start_time":1719993600,"end_time":1719997200}'
+```
+
+### 5.8 wecom-schedule — 日程管理 📅
+
+**触发词**:创建日程、安排日程、查看日程、闲忙查询
+
+| 接口 | 用途 |
+|------|------|
+| `get_schedule_list_by_range` | 查询日程列表 |
+| `get_schedule_detail` | 获取日程详情 |
+| `create_schedule` | 创建日程 |
+| `update_schedule` | 修改日程 |
+| `cancel_schedule` | 取消日程 |
+| `check_availability` | 查询成员闲忙状态 |
+
+```
+wecom_mcp call schedule create_schedule '{"subject":"团队周会","start_time":"2026-07-05 10:00:00","end_time":"2026-07-05 11:00:00"}'
+```
+
+### 5.9 wecom-todo — 待办事项
+
+**触发词**:创建待办、分派任务、标记完成、查看待办
+
+| 接口 | 用途 |
+|------|------|
+| `search_todo_userid` | 按姓名搜索 userid |
+| `create_todo` | 创建待办 |
+| `update_todo` | 更新待办内容/时间 |
+| `change_todo_user_status` | 更改用户状态(接受/拒绝/完成) |
+| `get_todo_list` | 获取待办列表 |
+| `get_todo_detail` | 批量获取待办详情 |
+| `delete_todo` | 删除待办 |
+
+```
+wecom_mcp call todo create_todo '{"content":"完成Q3报告","follower":[{"userid":"zhangsan"}]}'
+```
+
+### 5.10 wecom-send-media — 发送文件
+
+**触发词**:发送文件、分享图片、传个文件
+
+在回复中使用 `MEDIA:` 指令发送本地文件:
+
+```
+MEDIA:/path/to/image.png
+MEDIA:/path/to/document.pdf
+```
+
+> 大小限制:图片 10MB、视频 10MB、语音 2MB(AMR)、文件 20MB。超限自动降级。
+
+### 5.11 wecom-send-template-card — 模板卡片
+
+**触发词**:发通知、投票、方案选择、多维度选择
+
+| 卡片类型 | 用途 |
+|----------|------|
+| `text_notice` | 文本通知 |
+| `news_notice` | 图文通知 |
+| `button_interaction` | 按钮交互 |
+| `vote_interaction` | 投票表决 |
+| `multiple_interaction` | 多维度选择 |
+
+```
+# 投票
+wecom_mcp call msg send_template_card '{"chat_type":2,"chatid":"群ID","template_card_type":"vote_interaction",...}'
+```
+
+### 5.12 wecom-preflight — 前置检查
+
+**用途**:首次使用前检查 `wecom_mcp` 是否已加入工具白名单。其他 Skill 会自动触发此检查。
+
+---
+
+## 六、文档品类 URL 识别速查
+
+| URL 模式 | 品类 | 对应 Skill |
+|----------|------|------------|
+| `doc.weixin.qq.com/doc/*` | 普通文档 | `wecom-doc` |
+| `doc.weixin.qq.com/sheet/*` | 在线表格 | `wecom-sheet` |
+| `doc.weixin.qq.com/smartsheet/*` | 智能表格 | `wecom-smartsheet` |
+| `doc.weixin.qq.com/smartpage/*` | 智能文档 | `wecom-smartpage` |
+
+---
+
+## 七、群消息获取
+
+### 方式一:被动接收(默认)
+
+把机器人加入群聊即可。群策略默认 `open`,所有群都能 @机器人 对话。
+
+```bash
+# 查看/设置群策略
+openclaw config get channels.wecom.groupPolicy
+openclaw config set channels.wecom.groupPolicy open
+```
+
+### 方式二:主动拉取历史消息
+
+通过 `wecom-msg` Skill 的 `get_message`(chat_type=2)拉取 7 天内的群消息:
+
+```bash
+# 先获取会话列表找到群 chatid
+wecom_mcp call msg get_msg_chat_list '{"begin_time":"2026-07-01 00:00:00","end_time":"2026-07-04 23:59:59"}'
+
+# 拉取该群消息
+wecom_mcp call msg get_message '{"chat_type":2,"chatid":"群的chatid","begin_time":"2026-07-01 00:00:00","end_time":"2026-07-04 23:59:59"}'
+```
+
+### 群消息处理流程
+
+1. `get_msg_chat_list` → 查找目标群的 chatid
+2. `get_message(chat_type=2)` → 拉取消息
+3. `wecom-contact get_userlist` → userid 转姓名
+4. 展示消息(文本 / 图片 / 文件 / 语音 / 视频)
+5. 非文本消息需调用 `get_msg_media` 下载
+
+---
+
+## 八、调试与维护
+
+### 查看状态
+
+```bash
+openclaw status                    # 快速状态
+openclaw plugins list              # 插件列表
+openclaw config get channels       # 通道配置
+openclaw doctor                    # 诊断修复
+```
+
+### 查看日志
+
+```bash
+openclaw logs --follow             # 实时日志
+openclaw logs --follow | grep wecom  # 只看 WeCom 相关
+```
+
+### 更新插件
+
+```bash
+openclaw plugins update wecom-openclaw-plugin
+```
+
+### 更新安装工具
+
+```bash
+npx -y @wecom/wecom-openclaw-cli install --force
+```
+
+### 重启 Gateway
+
+```bash
+openclaw daemon restart
+```
+
+---
+
+## 九、常见问题
+
+### Q1: 安装后机器人没反应?
+
+按以下顺序排查:
+
+1. `openclaw plugins list` — 确认 wecom-openclaw-plugin 状态为 `enabled`
+2. `openclaw config get channels.wecom` — 确认 botId/secret/enabled 已配置
+3. `openclaw status` — 确认 WeCom 通道 State=OK
+4. `openclaw logs --follow` — 查看实时日志
+
+> 常见根因:插件 installed 但 disabled,需要两步:加入 `plugins.allow` + 重启 gateway。
+
+### Q2: 插件 enabled 但仍无法使用 Skills?
+
+检查 `tools.alsoAllow` 是否包含 `wecom_mcp`:
+
+```bash
+openclaw config get tools.alsoAllow
+# 应包含 "wecom_mcp"
+```
+
+### Q3: 消息拉取不到?
+
+- 仅支持最近 **7 天** 内的消息
+- 时间格式必须为 `YYYY-MM-DD HH:mm:ss`
+- chat_type: 1=单聊, 2=群聊
+
+### Q4: Skills 调用报错?
+
+所有 Skill 需先通过 `wecom-preflight` 检查。确保 `tools.allow` 或 `tools.alsoAllow` 中包含 `wecom_mcp`。
+
+### Q5: 群消息不想所有人都能用?
+
+```bash
+# 白名单模式(仅指定群可用)
+openclaw config set channels.wecom.groupPolicy allowlist
+openclaw config set channels.wecom.groupAllowFrom '["群chatid1","群chatid2"]'
+```
+
+---
+
+## 十、参考链接
+
+- [企业微信 AI Bot 官方文档](https://open.work.weixin.qq.com/help?doc_id=21657)
+- [企业微信 CLI 开源项目](https://open.work.weixin.qq.com/help2/pc/21676)
+- [OpenClaw 文档](https://docs.openclaw.ai/)
+- [插件完整 README](https://github.com/WeCom/wecom-openclaw-plugin)
+- [WeCom 插件配置指引(腾讯文档)](https://doc.weixin.qq.com/doc/w3_AFYA1wY6ACoCNRxfnyGRJQaSa6jjJ?scode=AJEAIQdfAAo0RJmzxLAFYA1wY6ACo)
+
+## 相关笔记
+
+- [[Openclaw 手册]] — OpenClaw 基础操作
+- [[Openclaw Skill]] — 插件与技能生态
+- [[Openclaw 技巧]] — 使用技巧与提示词