@vrs-soft/wecom-aibot-mcp 1.0.6 → 1.0.8

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 CHANGED
@@ -9,13 +9,13 @@
9
9
  - 🔐 **远程审批**:敏感操作通过微信卡片审批,支持"允许一次/永久允许/拒绝"
10
10
  - 💬 **消息推送**:任务进度、完成通知实时推送到微信
11
11
  - 📱 **Headless 模式**:离开电脑时切换到微信交互
12
- - 🔄 **多实例支持**:多个 Claude Code 可同时运行,自动分配端口
13
- - 🧹 **自动清理**:进程退出后自动清理残留文件
12
+ - 🔄 **智能代批**:超时自动审批,项目内操作允许,删除操作拒绝
13
+ - 🔄 **多机器人支持**:支持配置多个机器人,适用于团队场景
14
14
 
15
15
  ## 架构
16
16
 
17
17
  ```
18
- ┌─────────────────┐ MCP (stdio) ┌──────────────────┐
18
+ ┌─────────────────┐ MCP (HTTP) ┌──────────────────┐
19
19
  │ Claude Code │ ──────────────────▶ │ wecom-aibot-mcp │
20
20
  │ (MCP Client) │ │ MCP Server │
21
21
  └─────────────────┘ └──────────────────┘
@@ -58,11 +58,17 @@ PermissionRequest Hook 拦截
58
58
  执行或拒绝操作
59
59
  ```
60
60
 
61
- ### 审批卡片示例
61
+ ### 智能代批
62
62
 
63
- <img src="docs/approval-card.png" width="30%" alt="审批卡片示例" />
63
+ 开启「自动审批」后,审批请求超时(10分钟)会自动决策:
64
64
 
65
- 用户在企业微信中收到审批卡片,点击按钮即可远程决策:
65
+ | 操作类型 | 条件 | 自动决策 |
66
+ |---------|------|---------|
67
+ | Bash | 包含 rm/rmdir/unlink | ❌ 拒绝 |
68
+ | Bash | 项目内操作或常见命令 | ✅ 允许 |
69
+ | Bash | 无法判断范围 | ❌ 拒绝 |
70
+ | Write/Edit | 项目内文件 | ✅ 允许 |
71
+ | Write/Edit | 项目外文件 | ❌ 拒绝 |
66
72
 
67
73
  ## 安装
68
74
 
@@ -113,31 +119,6 @@ nvm install 18
113
119
  nvm use 18
114
120
  ```
115
121
 
116
- ### 方式一:npx 直接运行(推荐)
117
-
118
- ```bash
119
- npx @vrs-soft/wecom-aibot-mcp
120
- ```
121
-
122
- 运行后会自动启动配置向导,配置完成后自动退出。
123
-
124
- ### 方式二:全局安装
125
-
126
- ```bash
127
- npm install -g @vrs-soft/wecom-aibot-mcp
128
- wecom-aibot-mcp
129
- ```
130
-
131
- ### 方式三:从源码安装
132
-
133
- ```bash
134
- git clone https://github.com/eric2877/wecom-aibot-mcp.git
135
- cd wecom-aibot-mcp
136
- npm install
137
- npm run build
138
- npm link
139
- ```
140
-
141
122
  ## 快速开始
142
123
 
143
124
  ### 第一步:创建企业微信机器人
@@ -169,6 +150,68 @@ npx @vrs-soft/wecom-aibot-mcp
169
150
 
170
151
  > ✅ 无需手动查找用户 ID,系统会自动识别并回复确认消息
171
152
 
153
+ ### 常用命令
154
+
155
+ | 命令 | 说明 |
156
+ |------|------|
157
+ | `npx @vrs-soft/wecom-aibot-mcp` | 首次配置向导 |
158
+ | `npx @vrs-soft/wecom-aibot-mcp --config` | 修改现有配置 |
159
+ | `npx @vrs-soft/wecom-aibot-mcp --add` | 添加新机器人 |
160
+ | `npx @vrs-soft/wecom-aibot-mcp --delete` | 删除机器人配置 |
161
+ | `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
+
165
+ ### 添加新机器人(--add)
166
+
167
+ 适用于多用户场景,每个用户使用独立机器人:
168
+
169
+ ```bash
170
+ npx @vrs-soft/wecom-aibot-mcp --add
171
+ ```
172
+
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
+ ```
214
+
172
215
  ### 第三步:配置 Claude Code
173
216
 
174
217
  编辑 `~/.claude.json`(不存在则创建):
@@ -177,29 +220,39 @@ npx @vrs-soft/wecom-aibot-mcp
177
220
  {
178
221
  "mcpServers": {
179
222
  "wecom-aibot": {
180
- "command": "npx",
181
- "args": ["@vrs-soft/wecom-aibot-mcp"],
182
- "env": {
183
- "WECOM_BOT_ID": "你的Bot ID",
184
- "WECOM_SECRET": "你的Secret",
185
- "WECOM_TARGET_USER": "目标用户ID"
186
- }
223
+ "type": "http",
224
+ "url": "http://127.0.0.1:18963/mcp"
187
225
  }
188
226
  }
189
227
  }
190
228
  ```
191
229
 
192
- ### 第四步:重启 Claude Code
230
+ > 使用 HTTP Transport,无需在配置中传递环境变量,配置向导会自动管理。
231
+
232
+ ### 第四步:启动 MCP 服务
233
+
234
+ ```bash
235
+ npx @vrs-soft/wecom-aibot-mcp --server
236
+ ```
237
+
238
+ 服务启动后会显示:
239
+ ```
240
+ ╔════════════════════════════════════════════════════════╗
241
+ ║ 企业微信智能机器人 MCP 服务 v1.0.6 ║
242
+ ║ Claude Code 审批通道 ║
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
248
+ ```
249
+
250
+ ### 第五步:重启 Claude Code
193
251
 
194
252
  1. 运行 `/mcp` 命令
195
253
  2. 选择「Reconnect」重新连接 MCP 服务
196
- 3. 首次连接时会自动:
197
- - 检查配置完整性
198
- - 注册权限预授权
199
- - 生成审批 Hook 脚本
200
- - 安装 headless-mode skill 文件
201
254
 
202
- ### 第五步:验证连接
255
+ ### 第六步:验证连接
203
256
 
204
257
  ```
205
258
  你:检查微信连接状态
@@ -255,59 +308,44 @@ Claude:(调用 exit_headless_mode)
255
308
  微信收到:【进度】已退出微信模式,恢复终端交互。
256
309
  ```
257
310
 
258
- ### 场景 3:群聊机器人
259
-
260
- 将机器人拉入群聊,@机器人 即可触发:
311
+ ### 场景 3:开启智能代批
261
312
 
262
313
  ```
263
- 群聊中:
264
- 张三:@Claude助手 帮我查看服务器日志
314
+ 你:开启自动审批
265
315
 
266
- Claude:(执行命令,通过 send_message 发送结果到群聊)
267
- 微信收到:
268
- ┌─────────────────────────┐
269
- │ 📋 服务器日志摘要 │
270
- │ │
271
- │ 最近 10 条错误日志... │
272
- └─────────────────────────┘
273
- ```
316
+ Claude:(调用 set_auto_approve)
317
+ 微信收到:【系统】自动审批已开启,超时 10 分钟后将自动处理审批请求。
274
318
 
275
- ### 场景 4:长时间任务监控
319
+ [你离开电脑去开会,超过 10 分钟未响应]
276
320
 
277
- ```
278
- 你:帮我跑一遍测试套件,有失败的通知我
279
-
280
- Claude:(调用 send_message)
281
- 微信收到:【进度】开始运行测试套件,共 128 个用例...
282
-
283
- [测试运行中...]
284
-
285
- Claude:(调用 send_message)
321
+ Claude:(自动审批,项目内操作允许)
286
322
  微信收到:
287
323
  ┌─────────────────────────┐
288
- ⚠️ 测试失败
324
+ 【自动审批简报】
289
325
  │ │
290
- 失败用例:test/auth.spec.ts
291
- 原因:登录超时
326
+ 由于您长时间未响应,系统
327
+ 已代为处理:
292
328
  │ │
293
- 总计:125 通过,3 失败
329
+ npm run build
330
+ │ ✅ 修改 src/index.ts │
331
+ │ ❌ rm -rf dist (删除操作)│
294
332
  └─────────────────────────┘
295
333
  ```
296
334
 
297
- ### 场景 5:定时任务提醒
335
+ ### 场景 4:群聊机器人
298
336
 
299
- 结合 Cron 工具实现定时提醒:
337
+ 将机器人拉入群聊,@机器人 即可触发:
300
338
 
301
339
  ```
302
- 你:每天早上 9 点提醒我开站会
303
-
304
- Claude:(设置定时任务)
340
+ 群聊中:
341
+ 张三:@Claude助手 帮我查看服务器日志
305
342
 
306
- 每天 9:00 微信收到:
343
+ Claude:(执行命令,通过 send_message 发送结果到群聊)
344
+ 微信收到:
307
345
  ┌─────────────────────────┐
308
- 每日提醒
346
+ 📋 服务器日志摘要
309
347
  │ │
310
- 该开站会了!
348
+ 最近 10 条错误日志...
311
349
  └─────────────────────────┘
312
350
  ```
313
351
 
@@ -326,6 +364,7 @@ Claude:(设置定时任务)
326
364
  |------|------|------|
327
365
  | `send_approval_request` | 发送审批卡片 | `title`, `description`, `request_id` |
328
366
  | `get_approval_result` | 获取审批结果 | `task_id` |
367
+ | `set_auto_approve` | 设置自动审批开关 | `enabled`(布尔值) |
329
368
 
330
369
  ### 模式控制
331
370
 
@@ -340,57 +379,65 @@ Claude:(设置定时任务)
340
379
  | 工具 | 说明 |
341
380
  |------|------|
342
381
  | `get_setup_guide` | 获取安装指南 |
343
- | `add_robot_config` | 生成新机器人配置片段 |
382
+ | `list_robots` | 列出所有机器人及状态 |
383
+ | `get_robot_status` | 查看机器人详细状态 |
344
384
 
345
- ## 多用户配置
385
+ ## 多机器人配置
346
386
 
347
387
  ### 场景:团队共享
348
388
 
349
- 每个开发者使用独立的机器人:
389
+ 使用 `--add` 命令添加多个机器人:
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` 会包含多个实例:
350
405
 
351
406
  ```json
352
407
  {
353
408
  "mcpServers": {
354
409
  "wecom-aibot-zhangsan": {
355
- "command": "npx",
356
- "args": ["@vrs-soft/wecom-aibot-mcp"],
357
- "env": {
358
- "WECOM_BOT_ID": "bot_zhangsan",
359
- "WECOM_SECRET": "secret_zhangsan",
360
- "WECOM_TARGET_USER": "zhangsan"
361
- }
410
+ "type": "http",
411
+ "url": "http://127.0.0.1:18963/mcp"
362
412
  },
363
413
  "wecom-aibot-lisi": {
364
- "command": "npx",
365
- "args": ["@vrs-soft/wecom-aibot-mcp"],
366
- "env": {
367
- "WECOM_BOT_ID": "bot_lisi",
368
- "WECOM_SECRET": "secret_lisi",
369
- "WECOM_TARGET_USER": "lisi"
370
- }
414
+ "type": "http",
415
+ "url": "http://127.0.0.1:18963/mcp"
371
416
  }
372
417
  }
373
418
  }
374
419
  ```
375
420
 
376
- ### 多实例端口分配
377
-
378
- 当多个 Claude Code 实例同时运行时,HTTP 服务端口自动递增:
421
+ ### 查看机器人列表
379
422
 
380
- - 实例 1:端口 18963
381
- - 实例 2:端口 18964
382
- - 实例 3:端口 18965
383
- - ...
384
-
385
- 端口文件存储在 `~/.wecom-aibot-mcp/port-{PID}`,进程退出后自动清理。
386
-
387
- ## 环境变量
423
+ ```bash
424
+ npx @vrs-soft/wecom-aibot-mcp --status
425
+ ```
388
426
 
389
- | 变量 | 说明 | 必填 | 示例 |
390
- |------|------|------|------|
391
- | `WECOM_BOT_ID` | 机器人 ID | ✅ | `bot_abc123` |
392
- | `WECOM_SECRET` | 机器人密钥 | ✅ | `xyz789...` |
393
- | `WECOM_TARGET_USER` | 默认目标用户 | ✅ | `zhangsan` |
427
+ 或在 Claude Code 中:
428
+ ```
429
+ 你:列出所有机器人
430
+ Claude:(调用 list_robots)
431
+ 返回:
432
+ {
433
+ "robots": [
434
+ {"projectDir": "...", "status": "connected", "defaultUser": "zhangsan"},
435
+ {"projectDir": "...", "status": "connected", "defaultUser": "lisi"}
436
+ ],
437
+ "total": 2,
438
+ "available": 2
439
+ }
440
+ ```
394
441
 
395
442
  ## 故障排查
396
443
 
@@ -438,11 +485,11 @@ Claude:(设置定时任务)
438
485
  # 1. 检查网络连通性
439
486
  curl -v wss://openws.work.weixin.qq.com
440
487
 
441
- # 2. 确认凭证正确
442
- cat ~/.wecom-aibot-mcp/config.json
488
+ # 2. 检查 HTTP 服务状态
489
+ curl http://127.0.0.1:18963/health
443
490
 
444
491
  # 3. 查看进程日志
445
- # 重启 Claude Code,观察启动日志
492
+ # 重启 MCP 服务,观察启动日志
446
493
  ```
447
494
 
448
495
  ### 审批没发到微信
@@ -456,89 +503,23 @@ ls ~/.wecom-aibot-mcp/headless-*
456
503
  # 需要告诉 Claude:「现在开始通过微信联系」
457
504
  ```
458
505
 
459
- ### 端口文件残留
506
+ ### 残留文件清理
460
507
 
461
508
  ```bash
462
509
  # 查看残留文件
463
- ls ~/.wecom-aibot-mcp/port-*
464
-
465
- # 重启 MCP 服务会自动清理孤儿文件
466
- # 或手动清理
467
- rm ~/.wecom-aibot-mcp/port-*
468
- ```
469
-
470
- ## 卸载
471
-
472
- 如需完全卸载,运行:
510
+ ls ~/.wecom-aibot-mcp/
473
511
 
474
- ```bash
512
+ # MCP 服务重启会自动清理孤儿文件
513
+ # 或使用卸载命令彻底清理
475
514
  npx @vrs-soft/wecom-aibot-mcp --uninstall
476
515
  ```
477
516
 
478
- 这会删除:
479
- - 配置文件:`~/.wecom-aibot-mcp/config.json`
480
- - MCP 配置:`~/.claude.json` 中的 `wecom-aibot` 条目
481
- - Hook 脚本:`~/.wecom-aibot-mcp/permission-hook.sh`
482
- - Hook 配置:`~/.claude/settings.local.json` 中的 PermissionRequest hook
483
- - Skill 文件:`~/.claude/skills/headless-mode/`
484
-
485
- 卸载后如需重新安装:
486
-
487
- ```bash
488
- npx @vrs-soft/wecom-aibot-mcp --config
489
- ```
490
-
491
- ## 修改和增加 Bot
492
-
493
- ### 修改现有 Bot 配置
494
-
495
- 如果需要更换机器人或修改目标用户:
496
-
497
- ```bash
498
- npx @vrs-soft/wecom-aibot-mcp --config
499
- ```
500
-
501
- 这会重新启动配置向导,让你输入新的 Bot ID、Secret 和目标用户 ID。
502
-
503
- ### 增加多个 Bot(多用户场景)
504
-
505
- 每个用户可以使用独立的机器人,在 `~/.claude.json` 中配置多个 MCP Server 实例:
506
-
507
- ```json
508
- {
509
- "mcpServers": {
510
- "wecom-aibot-zhangsan": {
511
- "command": "npx",
512
- "args": ["@vrs-soft/wecom-aibot-mcp"],
513
- "env": {
514
- "WECOM_BOT_ID": "bot_zhangsan",
515
- "WECOM_SECRET": "secret_zhangsan",
516
- "WECOM_TARGET_USER": "zhangsan"
517
- }
518
- },
519
- "wecom-aibot-lisi": {
520
- "command": "npx",
521
- "args": ["@vrs-soft/wecom-aibot-mcp"],
522
- "env": {
523
- "WECOM_BOT_ID": "bot_lisi",
524
- "WECOM_SECRET": "secret_lisi",
525
- "WECOM_TARGET_USER": "lisi"
526
- }
527
- }
528
- }
529
- }
530
- ```
531
-
532
- 使用环境变量配置时,每个实例自动独立运行,无需额外的配置文件。
533
-
534
- > ⚠️ 注意:同一个机器人同时只能保持一个 WebSocket 长连接,不要在多个实例中使用相同的 Bot ID。
535
-
536
517
  ## 安全建议
537
518
 
538
519
  1. **保护凭证**:Bot ID 和 Secret 不要提交到代码仓库
539
- 2. **使用环境变量**:通过 `env` 传递敏感信息,而不是硬编码
540
- 3. **定期轮换**:建议每 3 个月更换一次 Secret
541
- 4. **权限最小化**:机器人的可见范围设置为需要的用户/部门即可
520
+ 2. **定期轮换**:建议每 3 个月更换一次 Secret
521
+ 3. **权限最小化**:机器人的可见范围设置为需要的用户/部门即可
522
+ 4. **谨慎使用自动审批**:仅在信任的环境下开启
542
523
 
543
524
  ## 开发
544
525
 
@@ -556,8 +537,8 @@ npm run dev
556
537
  # 构建
557
538
  npm run build
558
539
 
559
- # 运行
560
- npm start
540
+ # 运行服务
541
+ node dist/bin.js --server
561
542
  ```
562
543
 
563
544
  ## License
package/dist/bin.d.ts CHANGED
@@ -1,2 +1,16 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * wecom-aibot-mcp - 企业微信智能机器人 MCP 服务
4
+ *
5
+ * npx 运行入口
6
+ *
7
+ * 支持 HTTP Transport 模式:
8
+ * - 固定端口 18963
9
+ * - 支持多 Claude Code 同时连接
10
+ *
11
+ * 连接管理:
12
+ * - 启动时不建立 WebSocket 连接
13
+ * - enter_headless_mode 时按需建立连接
14
+ * - exit_headless_mode 时断开连接
15
+ */
2
16
  export {};