@vrs-soft/wecom-aibot-mcp 1.0.8 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -343
- package/dist/bin.d.ts +4 -8
- package/dist/bin.js +192 -64
- package/dist/client-pool.js +1 -1
- package/dist/client.d.ts +6 -3
- package/dist/client.js +96 -21
- package/dist/config-wizard.d.ts +1 -1
- package/dist/config-wizard.js +103 -68
- package/dist/connection-manager.d.ts +32 -25
- package/dist/connection-manager.js +93 -95
- package/dist/daemon.d.ts +10 -0
- package/dist/daemon.js +371 -0
- package/dist/http-server.d.ts +31 -2
- package/dist/http-server.js +479 -178
- package/dist/index.d.ts +6 -7
- package/dist/index.js +8 -7
- package/dist/keepalive-monitor.d.ts +3 -1
- package/dist/keepalive-monitor.js +10 -20
- package/dist/message-bus.d.ts +33 -0
- package/dist/message-bus.js +37 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.js +121 -177
- package/package.json +12 -5
- package/skills/headless-mode/SKILL.md +65 -102
package/README.md
CHANGED
|
@@ -6,18 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
## 功能特性
|
|
8
8
|
|
|
9
|
-
- 🔐 **远程审批**:敏感操作通过微信卡片审批,支持"
|
|
10
|
-
- 💬
|
|
11
|
-
- 📱 **Headless
|
|
9
|
+
- 🔐 **远程审批**:敏感操作通过微信卡片审批,支持"允许一次/拒绝"
|
|
10
|
+
- 💬 **双向通信**:任务进度、完成通知实时推送到微信
|
|
11
|
+
- 📱 **Headless 模式**:离开电脑时切换到微信交互,长轮询实时接收消息
|
|
12
12
|
- 🔄 **智能代批**:超时自动审批,项目内操作允许,删除操作拒绝
|
|
13
|
-
-
|
|
13
|
+
- 🤖 **多机器人支持**:支持配置多个机器人,团队场景下多人独立使用
|
|
14
|
+
- 🌐 **HTTP Transport**:使用 HTTP 传输,支持多实例共享服务
|
|
14
15
|
|
|
15
16
|
## 架构
|
|
16
17
|
|
|
17
18
|
```
|
|
18
19
|
┌─────────────────┐ MCP (HTTP) ┌──────────────────┐
|
|
19
20
|
│ Claude Code │ ──────────────────▶ │ wecom-aibot-mcp │
|
|
20
|
-
│ (MCP Client) │
|
|
21
|
+
│ (MCP Client) │ ◀────────────────── │ MCP Server │
|
|
21
22
|
└─────────────────┘ └──────────────────┘
|
|
22
23
|
│
|
|
23
24
|
WebSocket 长连接
|
|
@@ -43,6 +44,7 @@ PermissionRequest Hook 拦截
|
|
|
43
44
|
↓
|
|
44
45
|
┌────────────────────────┐
|
|
45
46
|
│ 检查 headless 模式状态 │
|
|
47
|
+
│ (检查 .claude/headless.json)
|
|
46
48
|
└────────────────────────┘
|
|
47
49
|
│
|
|
48
50
|
┌───────┴───────┐
|
|
@@ -50,76 +52,52 @@ PermissionRequest Hook 拦截
|
|
|
50
52
|
非 headless headless
|
|
51
53
|
↓ ↓
|
|
52
54
|
终端确认框 发送微信审批卡片
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
│
|
|
56
|
+
用户点击按钮
|
|
57
|
+
│
|
|
58
|
+
通过 HTTP /approval_status
|
|
59
|
+
↓
|
|
60
|
+
执行或拒绝操作
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Headless 模式
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
用户:现在开始通过微信联系
|
|
67
|
+
↓
|
|
68
|
+
Claude → enter_headless_mode()
|
|
69
|
+
↓
|
|
70
|
+
├─ 连接 WebSocket
|
|
71
|
+
├─ 写入 .claude/settings.json (PermissionRequest hook)
|
|
72
|
+
├─ 发送微信确认消息
|
|
73
|
+
└─ 返回 { status: 'entered', headless: true }
|
|
74
|
+
↓
|
|
75
|
+
Claude 开始长轮询 get_pending_messages(timeout_ms=30000)
|
|
76
|
+
↓
|
|
77
|
+
┌─────────────────────────────────────────┐
|
|
78
|
+
│ loop: │
|
|
79
|
+
│ 1. 等待用户消息(30秒超时) │
|
|
80
|
+
│ 2. 收到消息 → 理解意图 → 执行操作 │
|
|
81
|
+
│ 3. Hook 自动拦截审批 → 发送微信卡片 │
|
|
82
|
+
│ 4. 用户审批 → 操作完成 → 汇报结果 │
|
|
83
|
+
│ 5. 继续轮询 │
|
|
84
|
+
└─────────────────────────────────────────┘
|
|
85
|
+
↓
|
|
86
|
+
用户:我回来了
|
|
87
|
+
↓
|
|
88
|
+
Claude → exit_headless_mode()
|
|
89
|
+
├─ 断开 WebSocket
|
|
90
|
+
├─ 删除 .claude/settings.json hook
|
|
91
|
+
└─ 发送微信确认消息
|
|
59
92
|
```
|
|
60
93
|
|
|
61
|
-
### 智能代批
|
|
62
|
-
|
|
63
|
-
开启「自动审批」后,审批请求超时(10分钟)会自动决策:
|
|
64
|
-
|
|
65
|
-
| 操作类型 | 条件 | 自动决策 |
|
|
66
|
-
|---------|------|---------|
|
|
67
|
-
| Bash | 包含 rm/rmdir/unlink | ❌ 拒绝 |
|
|
68
|
-
| Bash | 项目内操作或常见命令 | ✅ 允许 |
|
|
69
|
-
| Bash | 无法判断范围 | ❌ 拒绝 |
|
|
70
|
-
| Write/Edit | 项目内文件 | ✅ 允许 |
|
|
71
|
-
| Write/Edit | 项目外文件 | ❌ 拒绝 |
|
|
72
|
-
|
|
73
94
|
## 安装
|
|
74
95
|
|
|
75
96
|
### 前置要求
|
|
76
97
|
|
|
77
|
-
- **Node.js >= 18
|
|
98
|
+
- **Node.js >= 18**
|
|
78
99
|
- 企业微信账号(有创建机器人权限)
|
|
79
|
-
- Claude Code
|
|
80
|
-
|
|
81
|
-
### 安装 Node.js
|
|
82
|
-
|
|
83
|
-
**检查版本**:
|
|
84
|
-
```bash
|
|
85
|
-
node --version
|
|
86
|
-
# 输出应 >= v18.0.0
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**安装方式**:
|
|
90
|
-
|
|
91
|
-
**macOS**:
|
|
92
|
-
```bash
|
|
93
|
-
# 使用 Homebrew
|
|
94
|
-
brew install node
|
|
95
|
-
|
|
96
|
-
# 或使用 nvm(推荐,可管理多版本)
|
|
97
|
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
98
|
-
nvm install 18
|
|
99
|
-
nvm use 18
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Windows**:
|
|
103
|
-
```bash
|
|
104
|
-
# 使用 winget
|
|
105
|
-
winget install OpenJS.NodeJS.LTS
|
|
106
|
-
|
|
107
|
-
# 或下载安装包:https://nodejs.org/
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
**Linux**:
|
|
111
|
-
```bash
|
|
112
|
-
# Ubuntu/Debian
|
|
113
|
-
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
|
114
|
-
sudo apt-get install -y nodejs
|
|
115
|
-
|
|
116
|
-
# 或使用 nvm
|
|
117
|
-
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
|
118
|
-
nvm install 18
|
|
119
|
-
nvm use 18
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## 快速开始
|
|
100
|
+
- Claude Code
|
|
123
101
|
|
|
124
102
|
### 第一步:创建企业微信机器人
|
|
125
103
|
|
|
@@ -130,9 +108,7 @@ nvm use 18
|
|
|
130
108
|
5. 在「API 配置」区域:
|
|
131
109
|
- 连接方式选择「**使用长连接**」
|
|
132
110
|
- 点击「获取 Secret」
|
|
133
|
-
6.
|
|
134
|
-
- **Bot ID**:机器人唯一标识
|
|
135
|
-
- **Secret**:长连接密钥
|
|
111
|
+
6. 记录 **Bot ID** 和 **Secret**
|
|
136
112
|
|
|
137
113
|
> ⚠️ 每个机器人同时只能保持一个 WebSocket 长连接
|
|
138
114
|
|
|
@@ -142,79 +118,48 @@ nvm use 18
|
|
|
142
118
|
npx @vrs-soft/wecom-aibot-mcp
|
|
143
119
|
```
|
|
144
120
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
121
|
+
配置向导会引导您:
|
|
122
|
+
1. 输入**机器人名称**(用于识别,如"工作机器人")
|
|
123
|
+
2. 输入 **Bot ID**
|
|
124
|
+
3. 输入 **Secret**
|
|
125
|
+
4. 在企业微信中给机器人发送消息,自动识别用户 ID
|
|
150
126
|
|
|
151
|
-
|
|
127
|
+
配置完成后会自动:
|
|
128
|
+
- 写入机器人配置到 `~/.wecom-aibot-mcp/config.json`
|
|
129
|
+
- 写入 MCP 配置到 `~/.claude.json`
|
|
130
|
+
- 注册 PermissionRequest hook 到 `~/.claude/settings.local.json`
|
|
131
|
+
- 安装 headless-mode skill 到 `~/.claude/skills/`
|
|
132
|
+
- 后台启动 MCP 服务
|
|
152
133
|
|
|
153
|
-
|
|
134
|
+
## 常用命令
|
|
154
135
|
|
|
155
136
|
| 命令 | 说明 |
|
|
156
137
|
|------|------|
|
|
157
138
|
| `npx @vrs-soft/wecom-aibot-mcp` | 首次配置向导 |
|
|
158
|
-
| `npx @vrs-soft/wecom-aibot-mcp --
|
|
139
|
+
| `npx @vrs-soft/wecom-aibot-mcp --start` | 后台启动 MCP 服务 |
|
|
140
|
+
| `npx @vrs-soft/wecom-aibot-mcp --stop` | 停止 MCP 服务 |
|
|
141
|
+
| `npx @vrs-soft/wecom-aibot-mcp --status` | 查看状态 |
|
|
142
|
+
| `npx @vrs-soft/wecom-aibot-mcp --config` | 修改配置 |
|
|
159
143
|
| `npx @vrs-soft/wecom-aibot-mcp --add` | 添加新机器人 |
|
|
160
144
|
| `npx @vrs-soft/wecom-aibot-mcp --delete` | 删除机器人配置 |
|
|
161
145
|
| `npx @vrs-soft/wecom-aibot-mcp --uninstall` | 完全卸载 |
|
|
162
|
-
| `npx @vrs-soft/wecom-aibot-mcp --server` | 启动 HTTP 服务模式 |
|
|
163
|
-
| `npx @vrs-soft/wecom-aibot-mcp --status` | 查看当前状态 |
|
|
164
146
|
|
|
165
|
-
###
|
|
147
|
+
### 添加新机器人
|
|
166
148
|
|
|
167
|
-
|
|
149
|
+
适用于团队多人场景:
|
|
168
150
|
|
|
169
151
|
```bash
|
|
170
152
|
npx @vrs-soft/wecom-aibot-mcp --add
|
|
153
|
+
# 输入机器人名称(如"张三的机器人")
|
|
154
|
+
# 输入 Bot ID 和 Secret
|
|
155
|
+
# 发送消息识别用户
|
|
171
156
|
```
|
|
172
157
|
|
|
173
|
-
|
|
174
|
-
1. 输入机器人名称(如"张三的审批助手")
|
|
175
|
-
2. 输入 Bot ID
|
|
176
|
-
3. 输入 Secret
|
|
177
|
-
4. 发送消息识别用户 ID
|
|
178
|
-
5. 选择添加到 MCP 配置的位置
|
|
179
|
-
|
|
180
|
-
### 删除机器人配置(--delete)
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
npx @vrs-soft/wecom-aibot-mcp --delete
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
交互流程:
|
|
187
|
-
1. 显示已配置的机器人列表
|
|
188
|
-
2. 选择要删除的机器人
|
|
189
|
-
3. 确认删除
|
|
190
|
-
|
|
191
|
-
也可以直接指定机器人名称:
|
|
192
|
-
```bash
|
|
193
|
-
npx @vrs-soft/wecom-aibot-mcp --delete "张三的审批助手"
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### 完全卸载(--uninstall)
|
|
197
|
-
|
|
198
|
-
删除所有配置和文件:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
npx @vrs-soft/wecom-aibot-mcp --uninstall
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
这会删除:
|
|
205
|
-
- 配置目录:`~/.wecom-aibot-mcp/`
|
|
206
|
-
- MCP 配置:`~/.claude.json` 中的所有 `wecom-aibot-*` 条目
|
|
207
|
-
- 全局 Hook 配置:`~/.claude/settings.local.json` 中的 PermissionRequest hook
|
|
208
|
-
- Skill 文件:`~/.claude/skills/headless-mode/`
|
|
209
|
-
|
|
210
|
-
卸载后如需重新安装:
|
|
211
|
-
```bash
|
|
212
|
-
npx @vrs-soft/wecom-aibot-mcp --config
|
|
213
|
-
```
|
|
158
|
+
## 快速开始
|
|
214
159
|
|
|
215
|
-
###
|
|
160
|
+
### 配置 Claude Code
|
|
216
161
|
|
|
217
|
-
|
|
162
|
+
配置向导会自动写入 `~/.claude.json`:
|
|
218
163
|
|
|
219
164
|
```json
|
|
220
165
|
{
|
|
@@ -227,215 +172,121 @@ npx @vrs-soft/wecom-aibot-mcp --config
|
|
|
227
172
|
}
|
|
228
173
|
```
|
|
229
174
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
### 第四步:启动 MCP 服务
|
|
175
|
+
### 启动服务
|
|
233
176
|
|
|
234
177
|
```bash
|
|
235
|
-
npx @vrs-soft/wecom-aibot-mcp --
|
|
178
|
+
npx @vrs-soft/wecom-aibot-mcp --start
|
|
236
179
|
```
|
|
237
180
|
|
|
238
|
-
|
|
181
|
+
输出:
|
|
239
182
|
```
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
[mcp] MCP Server 已启动: http://127.0.0.1:18963
|
|
246
|
-
[mcp] MCP endpoint: http://127.0.0.1:18963/mcp
|
|
247
|
-
[mcp] 健康检查: http://127.0.0.1:18963/health
|
|
183
|
+
[mcp] MCP Server 已在后台启动
|
|
184
|
+
[mcp] HTTP endpoint: http://127.0.0.1:18963/mcp
|
|
185
|
+
[mcp] 健康检查: curl http://127.0.0.1:18963/health
|
|
186
|
+
[mcp] 停止服务: npx @vrs-soft/wecom-aibot-mcp --stop
|
|
248
187
|
```
|
|
249
188
|
|
|
250
|
-
###
|
|
251
|
-
|
|
252
|
-
1. 运行 `/mcp` 命令
|
|
253
|
-
2. 选择「Reconnect」重新连接 MCP 服务
|
|
189
|
+
### 重启 Claude Code
|
|
254
190
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
你:检查微信连接状态
|
|
259
|
-
Claude:(调用 check_connection)
|
|
260
|
-
返回:{"connected":true,"defaultTargetUser":"zhangsan"}
|
|
261
|
-
```
|
|
191
|
+
运行 `/mcp` 命令,选择「Reconnect」重新连接 MCP 服务。
|
|
262
192
|
|
|
263
193
|
## 使用示例
|
|
264
194
|
|
|
265
|
-
###
|
|
195
|
+
### Headless 模式(远程审批)
|
|
266
196
|
|
|
267
197
|
```
|
|
268
|
-
|
|
198
|
+
你:现在开始通过微信联系
|
|
269
199
|
|
|
270
|
-
Claude
|
|
271
|
-
|
|
272
|
-
Claude:(调用 send_message)
|
|
273
|
-
微信收到:
|
|
274
|
-
┌─────────────────────────┐
|
|
275
|
-
│ 【完成】函数重构完成 │
|
|
276
|
-
│ │
|
|
277
|
-
│ 已将 parseData 函数拆分 │
|
|
278
|
-
│ 为 3 个独立函数,提高可读性│
|
|
279
|
-
└─────────────────────────┘
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
### 场景 2:远程审批(Headless 模式)
|
|
283
|
-
|
|
284
|
-
```
|
|
285
|
-
你:我要离开电脑前了,现在开始通过微信联系
|
|
286
|
-
|
|
287
|
-
Claude:(调用 enter_headless_mode)
|
|
288
|
-
微信收到:【进度】已进入微信模式,所有交互将通过企业微信进行。
|
|
200
|
+
Claude:已进入微信模式,所有交互将通过企业微信进行。
|
|
201
|
+
微信收到:【cc-1】已进入微信模式,使用机器人「工作机器人」。
|
|
289
202
|
|
|
290
203
|
[你离开电脑,Claude 需要执行删除文件操作]
|
|
291
204
|
|
|
292
205
|
微信收到审批卡片:
|
|
293
206
|
┌─────────────────────────┐
|
|
294
207
|
│ 【待审批】Bash │
|
|
295
|
-
│ │
|
|
296
208
|
│ 执行命令: rm -rf dist │
|
|
297
|
-
│
|
|
298
|
-
│ [允许一次] [永久允许] [拒绝]│
|
|
209
|
+
│ [允许一次] [拒绝] │
|
|
299
210
|
└─────────────────────────┘
|
|
300
211
|
|
|
301
212
|
[你在手机点击"允许一次"]
|
|
302
213
|
|
|
303
|
-
Claude
|
|
214
|
+
Claude 继续执行,发送结果到微信。
|
|
304
215
|
|
|
305
216
|
你:我回来了
|
|
306
217
|
|
|
307
|
-
Claude
|
|
308
|
-
微信收到:【进度】已退出微信模式,恢复终端交互。
|
|
218
|
+
Claude:已退出微信模式,恢复终端交互。
|
|
309
219
|
```
|
|
310
220
|
|
|
311
|
-
###
|
|
221
|
+
### 发送任务通知
|
|
312
222
|
|
|
313
223
|
```
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
Claude:(调用 set_auto_approve)
|
|
317
|
-
微信收到:【系统】自动审批已开启,超时 10 分钟后将自动处理审批请求。
|
|
318
|
-
|
|
319
|
-
[你离开电脑去开会,超过 10 分钟未响应]
|
|
224
|
+
你:帮我重构这个函数,完成后微信通知我
|
|
320
225
|
|
|
321
|
-
Claude
|
|
322
|
-
|
|
323
|
-
┌─────────────────────────┐
|
|
324
|
-
│ 【自动审批简报】 │
|
|
325
|
-
│ │
|
|
326
|
-
│ 由于您长时间未响应,系统 │
|
|
327
|
-
│ 已代为处理: │
|
|
328
|
-
│ │
|
|
329
|
-
│ ✅ npm run build │
|
|
330
|
-
│ ✅ 修改 src/index.ts │
|
|
331
|
-
│ ❌ rm -rf dist (删除操作)│
|
|
332
|
-
└─────────────────────────┘
|
|
226
|
+
Claude:[执行重构...]
|
|
227
|
+
微信收到:【完成】函数重构完成!
|
|
333
228
|
```
|
|
334
229
|
|
|
335
|
-
###
|
|
230
|
+
### 群聊机器人
|
|
336
231
|
|
|
337
|
-
|
|
232
|
+
将机器人拉入群聊:
|
|
338
233
|
|
|
339
234
|
```
|
|
340
235
|
群聊中:
|
|
341
|
-
张三:@Claude助手
|
|
236
|
+
张三:@Claude助手 查看服务器日志
|
|
342
237
|
|
|
343
|
-
Claude
|
|
344
|
-
微信收到:
|
|
345
|
-
┌─────────────────────────┐
|
|
346
|
-
│ 📋 服务器日志摘要 │
|
|
347
|
-
│ │
|
|
348
|
-
│ 最近 10 条错误日志... │
|
|
349
|
-
└─────────────────────────┘
|
|
238
|
+
Claude:执行命令,发送结果到群聊
|
|
350
239
|
```
|
|
351
240
|
|
|
352
241
|
## MCP 工具
|
|
353
242
|
|
|
354
|
-
### 消息类
|
|
355
|
-
|
|
356
243
|
| 工具 | 说明 | 参数 |
|
|
357
244
|
|------|------|------|
|
|
358
|
-
| `send_message` | 发送消息到微信 | `content
|
|
359
|
-
| `get_pending_messages` |
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
|
364
|
-
|
|
365
|
-
| `
|
|
366
|
-
| `
|
|
367
|
-
| `set_auto_approve` | 设置自动审批开关 | `enabled`(布尔值) |
|
|
368
|
-
|
|
369
|
-
### 模式控制
|
|
370
|
-
|
|
371
|
-
| 工具 | 说明 |
|
|
372
|
-
|------|------|
|
|
373
|
-
| `enter_headless_mode` | 进入微信审批模式 |
|
|
374
|
-
| `exit_headless_mode` | 退出微信审批模式 |
|
|
375
|
-
| `check_connection` | 检查连接状态 |
|
|
376
|
-
|
|
377
|
-
### 辅助类
|
|
245
|
+
| `send_message` | 发送消息到微信 | `content`, `target_user` |
|
|
246
|
+
| `get_pending_messages` | 获取待处理消息(长轮询) | `clear`, `timeout_ms` |
|
|
247
|
+
| `enter_headless_mode` | 进入微信模式 | `agent_name`, `robot_id` |
|
|
248
|
+
| `exit_headless_mode` | 退出微信模式 | `agent_name` |
|
|
249
|
+
| `check_connection` | 检查连接状态 | - |
|
|
250
|
+
| `list_robots` | 列出所有机器人 | - |
|
|
251
|
+
| `get_connection_stats` | 获取连接统计 | `recent_logs` |
|
|
252
|
+
| `detect_user_from_message` | 从消息识别用户 | `timeout` |
|
|
253
|
+
| `get_setup_guide` | 获取安装指南 | - |
|
|
378
254
|
|
|
379
|
-
|
|
380
|
-
|------|------|
|
|
381
|
-
| `get_setup_guide` | 获取安装指南 |
|
|
382
|
-
| `list_robots` | 列出所有机器人及状态 |
|
|
383
|
-
| `get_robot_status` | 查看机器人详细状态 |
|
|
384
|
-
|
|
385
|
-
## 多机器人配置
|
|
255
|
+
## 配置说明
|
|
386
256
|
|
|
387
|
-
###
|
|
257
|
+
### 多机器人配置
|
|
388
258
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
# 添加张三的机器人
|
|
393
|
-
npx @vrs-soft/wecom-aibot-mcp --add
|
|
394
|
-
# 输入名称:张三的审批助手
|
|
395
|
-
# 输入 Bot ID 和 Secret
|
|
396
|
-
# 发送消息识别用户
|
|
397
|
-
|
|
398
|
-
# 添加李四的机器人
|
|
399
|
-
npx @vrs-soft/wecom-aibot-mcp --add
|
|
400
|
-
# 输入名称:李四的审批助手
|
|
401
|
-
# ...
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
配置完成后,`~/.claude.json` 会包含多个实例:
|
|
259
|
+
支持多个机器人独立使用:
|
|
405
260
|
|
|
406
261
|
```json
|
|
262
|
+
// ~/.wecom-aibot-mcp/config.json
|
|
407
263
|
{
|
|
408
|
-
"
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
},
|
|
413
|
-
"wecom-aibot-lisi": {
|
|
414
|
-
"type": "http",
|
|
415
|
-
"url": "http://127.0.0.1:18963/mcp"
|
|
416
|
-
}
|
|
417
|
-
}
|
|
264
|
+
"botId": "bot-xxx",
|
|
265
|
+
"secret": "sec-yyy",
|
|
266
|
+
"targetUserId": "user1",
|
|
267
|
+
"nameTag": "机器人1"
|
|
418
268
|
}
|
|
419
|
-
```
|
|
420
269
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
270
|
+
// ~/.wecom-aibot-mcp/robot-1234567890.json
|
|
271
|
+
{
|
|
272
|
+
"botId": "bot-zzz",
|
|
273
|
+
"secret": "sec-www",
|
|
274
|
+
"targetUserId": "user2",
|
|
275
|
+
"nameTag": "机器人2"
|
|
276
|
+
}
|
|
425
277
|
```
|
|
426
278
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
Claude:(调用 list_robots)
|
|
431
|
-
返回:
|
|
279
|
+
使用 `list_robots` 查看所有机器人状态:
|
|
280
|
+
|
|
281
|
+
```json
|
|
432
282
|
{
|
|
433
283
|
"robots": [
|
|
434
|
-
{"
|
|
435
|
-
{"
|
|
284
|
+
{"name": "机器人1", "status": "connected"},
|
|
285
|
+
{"name": "机器人2", "status": "available"}
|
|
436
286
|
],
|
|
437
287
|
"total": 2,
|
|
438
|
-
"
|
|
288
|
+
"connected": 1,
|
|
289
|
+
"occupied": 0
|
|
439
290
|
}
|
|
440
291
|
```
|
|
441
292
|
|
|
@@ -443,83 +294,35 @@ Claude:(调用 list_robots)
|
|
|
443
294
|
|
|
444
295
|
### 认证失败(错误码 40058)
|
|
445
296
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
- 新建机器人需要等待同步时间
|
|
450
|
-
|
|
451
|
-
**解决方法**:
|
|
452
|
-
```
|
|
453
|
-
1. 新建机器人需要等待约 2 分钟同步时间,请稍后再试
|
|
454
|
-
|
|
455
|
-
2. 完成机器人授权(任选其一):
|
|
456
|
-
• 在电脑端企业微信APP中打开:机器人详情 → 可使用权限 → 授权
|
|
457
|
-
• 打开浏览器访问授权页面,使用手机企业微信扫码:
|
|
458
|
-
https://work.weixin.qq.com/ai/aiHelper/authorizationPage?str_aibotid={BotID}&type=6&from=chat&forceInnerBrowser=1
|
|
459
|
-
|
|
460
|
-
3. 确认 Bot ID 和 Secret 是否正确:
|
|
461
|
-
npx @vrs-soft/wecom-aibot-mcp --status
|
|
297
|
+
1. 新建机器人需等待约 2 分钟同步
|
|
298
|
+
2. 完成授权:机器人详情 → 可使用权限 → 授权
|
|
299
|
+
3. 检查 Bot ID 和 Secret 是否正确
|
|
462
300
|
|
|
463
|
-
|
|
464
|
-
npx @vrs-soft/wecom-aibot-mcp --config
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
### 无法收到消息
|
|
468
|
-
|
|
469
|
-
**可能原因**:
|
|
470
|
-
- 机器人未添加到通讯录
|
|
471
|
-
- 群聊中未 @机器人
|
|
472
|
-
- WebSocket 连接断开
|
|
473
|
-
|
|
474
|
-
**解决方法**:
|
|
475
|
-
```
|
|
476
|
-
1. 在企业微信中搜索机器人名称,添加到通讯录
|
|
477
|
-
2. 群聊中必须 @机器人 才能触发消息
|
|
478
|
-
3. 运行 check_connection 检查连接状态
|
|
479
|
-
```
|
|
301
|
+
### 连接问题
|
|
480
302
|
|
|
481
|
-
### 连接失败
|
|
482
|
-
|
|
483
|
-
**检查项**:
|
|
484
303
|
```bash
|
|
485
|
-
#
|
|
486
|
-
curl -v wss://openws.work.weixin.qq.com
|
|
487
|
-
|
|
488
|
-
# 2. 检查 HTTP 服务状态
|
|
304
|
+
# 检查服务状态
|
|
489
305
|
curl http://127.0.0.1:18963/health
|
|
490
306
|
|
|
491
|
-
#
|
|
492
|
-
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
### 审批没发到微信
|
|
496
|
-
|
|
497
|
-
**检查 headless 状态**:
|
|
498
|
-
```bash
|
|
499
|
-
# 查看状态文件
|
|
500
|
-
ls ~/.wecom-aibot-mcp/headless-*
|
|
307
|
+
# 查看日志
|
|
308
|
+
tail -f ~/.wecom-aibot-mcp/connection.log
|
|
501
309
|
|
|
502
|
-
#
|
|
503
|
-
|
|
310
|
+
# 重启服务
|
|
311
|
+
npx @vrs-soft/wecom-aibot-mcp --stop
|
|
312
|
+
npx @vrs-soft/wecom-aibot-mcp --start
|
|
504
313
|
```
|
|
505
314
|
|
|
506
|
-
###
|
|
315
|
+
### 完全卸载
|
|
507
316
|
|
|
508
317
|
```bash
|
|
509
|
-
# 查看残留文件
|
|
510
|
-
ls ~/.wecom-aibot-mcp/
|
|
511
|
-
|
|
512
|
-
# MCP 服务重启会自动清理孤儿文件
|
|
513
|
-
# 或使用卸载命令彻底清理
|
|
514
318
|
npx @vrs-soft/wecom-aibot-mcp --uninstall
|
|
515
319
|
```
|
|
516
320
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
4. **谨慎使用自动审批**:仅在信任的环境下开启
|
|
321
|
+
这会删除:
|
|
322
|
+
- `~/.wecom-aibot-mcp/`
|
|
323
|
+
- `~/.claude.json` 中的 wecom-aibot 配置
|
|
324
|
+
- `~/.claude/settings.local.json` 中的 hook
|
|
325
|
+
- `~/.claude/skills/headless-mode/`
|
|
523
326
|
|
|
524
327
|
## 开发
|
|
525
328
|
|
|
@@ -531,14 +334,14 @@ cd wecom-aibot-mcp
|
|
|
531
334
|
# 安装依赖
|
|
532
335
|
npm install
|
|
533
336
|
|
|
534
|
-
#
|
|
337
|
+
# 开发模式
|
|
535
338
|
npm run dev
|
|
536
339
|
|
|
537
340
|
# 构建
|
|
538
341
|
npm run build
|
|
539
342
|
|
|
540
|
-
#
|
|
541
|
-
|
|
343
|
+
# 测试
|
|
344
|
+
npm test
|
|
542
345
|
```
|
|
543
346
|
|
|
544
347
|
## License
|
|
@@ -549,4 +352,4 @@ MIT
|
|
|
549
352
|
|
|
550
353
|
- [企业微信智能机器人文档](https://developer.work.weixin.qq.com/document/path/101039)
|
|
551
354
|
- [Claude Code 文档](https://docs.anthropic.com/claude-code)
|
|
552
|
-
- [MCP 协议规范](https://modelcontextprotocol.io)
|
|
355
|
+
- [MCP 协议规范](https://modelcontextprotocol.io)
|
package/dist/bin.d.ts
CHANGED
|
@@ -4,13 +4,9 @@
|
|
|
4
4
|
*
|
|
5
5
|
* npx 运行入口
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
10
|
-
*
|
|
11
|
-
* 连接管理:
|
|
12
|
-
* - 启动时不建立 WebSocket 连接
|
|
13
|
-
* - enter_headless_mode 时按需建立连接
|
|
14
|
-
* - exit_headless_mode 时断开连接
|
|
7
|
+
* v2.0 架构变更:
|
|
8
|
+
* - 使用 Session 管理
|
|
9
|
+
* - robotName 作为连接索引
|
|
10
|
+
* - 不再使用 projectDir
|
|
15
11
|
*/
|
|
16
12
|
export {};
|