pi-wecombot
企业微信智能机器人 WebSocket 长连接扩展 for pi
Package details
Install pi-wecombot from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-wecombot- Package
pi-wecombot- Version
1.1.9- Published
- Apr 30, 2026
- Downloads
- 915/mo · 153/wk
- Author
- huang.xinghui
- License
- MIT
- Types
- extension
- Size
- 48.6 KB
- Dependencies
- 1 dependency · 3 peers
Pi manifest JSON
{
"extensions": [
"./index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-wecombot
企业微信智能机器人 WebSocket 长连接扩展 for pi
使用官方 aibot-node-sdk 实现。
功能特性
- 🔗 WebSocket 长连接 - 自动重连,断线无忧
- 🤖 多机器人支持 - 支持配置多个机器人,快速切换
- 🏠 全局配置共享 - 机器人列表全局共享,所有会话可见
- 🎯 会话独立选择 - 每个会话独立选择启用哪个机器人
- 👥 多人会话管理 - 按 req_id 区分不同用户
- 🔄 消息自动转发 - 收到 @机器人 的消息自动处理
- 📤 回复自动发送 - AI 回复自动发送到企业微信
安装
通过 npm(推荐)
pi install npm:pi-wecombot
通过 Git
pi install git:github.com/huang-x-h/pi-wecombot
架构设计
配置分层
┌─────────────────────────────────────────┐
│ 全局配置(共享) │
│ ~/.pi/agent/wecom-bot.json │
│ { │
│ "bots": [ │
│ {"botId": "...", "secret": "..."}, │
│ {"botId": "...", "secret": "..."} │
│ ] │
│ } │
└─────────────────────────────────────────┘
▲
│ 所有会话共享
┌───────────┼───────────┐
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ Session │ │ Session │ │ Session │
│ A │ │ B │ │ C │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
本会话配置 本会话配置 本会话配置
wecom-bot- wecom-bot- wecom-bot-
session-A session-B session-C
.json .json .json
{ { {
activeBotId activeBotId activeBotId
enabled enabled enabled
} } }
命令分类
| 命令 | 操作目标 | 说明 |
|---|---|---|
wecombot-add |
全局配置 | 添加机器人到全局列表,所有会话可见 |
wecombot-remove |
全局配置 | 从全局列表删除机器人,影响所有会话 |
wecombot-list |
全局配置 | 显示全局机器人列表(带本会话启用标记) |
wecombot-use |
会话配置 | 选择本会话使用哪个机器人(仅本会话) |
wecombot-enable |
会话配置 | 启用本会话的机器人连接(仅本会话) |
wecombot-disable |
会话配置 | 禁用本会话的机器人连接(仅本会话) |
wecombot-status |
混合 | 显示全局列表 + 本会话状态 |
wecombot-session-info |
会话配置 | 显示本会话配置信息 |
快速开始
1. 添加机器人(全局配置)
/wecombot-add
# 机器人名称(可选): 我的助手
# BotID: wwxxxxxxxxxxxxx
# Secret: xxxxxxxxxxxxxxx
添加后所有会话都能看到这个机器人
2. 查看机器人列表(全局)
/wecombot-list
输出示例:
全局机器人列表(共 2 个):
▶ ✅ 助手A (ww111...) ← ▶ 表示本会话正在使用
○ 助手B (ww222...)
本会话启用: 助手A
3. 选择本会话使用的机器人
/wecombot-use
# 选择机器人(仅本会话): 助手B
✅ 本会话已切换到 助手B
完整命令说明
全局配置命令
/wecombot-add - 添加机器人(全局)
添加机器人到全局配置,所有会话都能使用。
/wecombot-add
名称: 工作助手
BotID: wwxxxxxxxxxxxxx
Secret: xxxxxxxxxxxxxxx
✅ 已添加 工作助手(全局配置)
/wecombot-list - 列出机器人(全局)
显示全局机器人列表,带本会话启用标记:
▶- 本会话正在使用的机器人○- 其他机器人✅- 当前已连接
/wecombot-list
全局机器人列表(共 3 个):
▶ ✅ 工作助手
○ 测试助手
○ 个人助手
本会话启用: 工作助手
/wecombot-remove - 删除机器人(全局)
从全局配置删除机器人,所有会话都将失去该机器人。
/wecombot-remove
输入要删除的BotID或名称: 工作助手
✅ 已删除 工作助手
会话配置命令
/wecombot-use - 切换机器人(本会话)
选择本会话使用哪个机器人,不影响其他会话。
/wecombot-use
选择机器人(仅本会话):
○ 工作助手
▶ 测试助手 ← 当前选择
○ 个人助手
✅ 本会话已切换到 测试助手
/wecombot-enable - 启用机器人(本会话)
启用本会话的机器人连接。
/wecombot-enable
✅ 本会话已启用并连接 工作助手
/wecombot-disable - 禁用机器人(本会话)
禁用本会话的机器人连接,不影响其他会话。
/wecombot-disable
🔌 本会话已禁用机器人并断开连接
/wecombot-status - 查看状态
显示混合信息:全局机器人数量 + 本会话详细状态。
/wecombot-status
✅ 工作助手
状态: 已连接
全局机器人: 3 个
本会话活跃会话: 2 个
会话ID: abc12345
/wecombot-session-info - 会话信息
显示本会话的配置详情。
/wecombot-session-info
会话ID: pid-1234
全局配置: ~/.pi/agent/wecom-bot.json
会话配置: ~/.pi/agent/wecom-bot-session-pid-1234.json
临时目录: ~/.pi/agent/tmp/wecom-bot/pid-1234
【全局】机器人数量: 3
【会话】启用机器人: wwxxxxxxxxxxxxx
【会话】启用状态: ✅
【会话】连接状态: 🟢 已连接
【会话】活跃消息会话: 2 个
使用场景示例
场景1:团队协作,共享机器人池
全局配置: 3 个机器人
├─ 工作助手 (BotID-A)
├─ 测试助手 (BotID-B)
└─ 个人助手 (BotID-C)
Session A (张三) Session B (李四)
├─ 选择: 工作助手 ├─ 选择: 测试助手
├─ 状态: ✅ 已连接 ├─ 状态: ✅ 已连接
└─ 独立运行 └─ 独立运行
Session C (王五)
├─ 选择: 个人助手
├─ 状态: ✅ 已连接
└─ 独立运行
特点:
- ✅ 机器人配置一次,团队共享
- ✅ 每个人独立选择使用哪个机器人
- ✅ 互不干扰
场景2:多项目并行
Terminal 1 (项目A) Terminal 2 (项目B)
├─ /wecombot-use ├─ /wecombot-use
│ 选择: 项目A机器人 │ 选择: 项目B机器人
├─ 状态: 🤖[1234] ✅ ├─ 状态: 🤖[5678] ✅
└─ 连接 BotID-A └─ 连接 BotID-B
场景3:工作/生活分离
Session 1 (工作) Session 2 (生活)
├─ 机器人: 工作助手 ├─ 机器人: 个人助手
├─ 配置: 公司企业微信 ├─ 配置: 个人企业微信
└─ 消息: 工作群 └─ 消息: 家庭群
⚠️ 重要限制
同一机器人(BotID)只能在一个会话中连接
企业微信官方限制:同一个 BotID 同时只能有一个 WebSocket 连接。
冲突场景
Session A (已连接工作助手) Session B
├─ 状态: ✅ 工作助手 ├─ 执行 /wecombot-use 工作助手
├─ 运行中 ├─ 连接成功
│ │
│ ◄──── 被踢掉 ──────────────┤
│
└─ 状态: ❌ 被其他会话连接 └─ 状态: ✅ 工作助手
解决方式
不同会话使用不同机器人(推荐)
- Session A: 工作助手 (BotID-A)
- Session B: 个人助手 (BotID-B)
手动切换
- 在 Session A 执行
/wecombot-disable断开 - 在 Session B 执行
/wecombot-enable连接
- 在 Session A 执行
配置存储
| 类型 | 路径 | 内容 | 共享方式 |
|---|---|---|---|
| 全局配置 | ~/.pi/agent/wecom-bot.json |
机器人列表 (botId, secret, name) | 所有会话共享 |
| 会话配置 | ~/.pi/agent/wecom-bot-session-{id}.json |
activeBotId, enabled | 仅本会话 |
| 临时文件 | ~/.pi/agent/tmp/wecom-bot/{id}/ |
上传文件等 | 仅本会话 |
工作原理
┌─────────────────────────────────────────────────────────────┐
│ pi 会话 A │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ 全局配置加载 │◄───────│ ~/.pi/agent/wecom-bot.json │ │
│ │ bots: [...] │ │ 机器人列表(共享) │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ 会话配置加载 │◄───────│ wecom-bot-session-A.json │ │
│ │ activeBotId │ │ activeBotId, enabled │ │
│ │ enabled │ │ (本会话独立) │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ WSClient │◄──────────────┐ │
│ │ 连接机器人 │ │ │
│ └─────────────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────┐ │ │
│ │ 企业微信 │◄──────────────┘ │
│ │ 智能机器人 │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
参考
License
MIT