wechaty-web-panel 1.6.113 → 1.6.114

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.
@@ -0,0 +1,683 @@
1
+ # Wechaty Web Panel 项目架构文档
2
+
3
+ ## 项目概述
4
+
5
+ Wechaty Web Panel 是一个功能完整的微信机器人管理和 AI 集成平台,基于 Wechaty 框架,支持多种 AI 服务、复杂的消息处理逻辑、定时任务调度和高级数据分析能力。
6
+
7
+ ---
8
+
9
+ ## 1. 目录结构
10
+
11
+ ```
12
+ wechaty-web-panel/
13
+ ├── src/ # 源代码主目录
14
+ │ ├── index.js # 插件入口文件
15
+ │ ├── package-json.js # 版本管理
16
+ │ ├── bot/ # 机器人集成模块(多AI平台)
17
+ │ │ ├── chatgpt/ # ChatGPT集成
18
+ │ │ ├── dify/ # Dify平台集成
19
+ │ │ ├── fastgpt/ # FastGPT集成
20
+ │ │ ├── coze/ # Coze集成
21
+ │ │ └── qanything/ # QAnything集成
22
+ │ ├── botInstance/ # AI机器人实例管理
23
+ │ │ ├── dify.js # Dify AI客户端
24
+ │ │ ├── cozev3.js # Coze V3客户端
25
+ │ │ ├── fastgpt.js # FastGPT客户端
26
+ │ │ ├── officialOpenAi.js # OpenAI官方API
27
+ │ │ ├── gpt4v.js # GPT-4V视觉模型
28
+ │ │ └── sdk/ # 各种AI SDK
29
+ │ ├── handlers/ # Wechaty事件处理器
30
+ │ │ ├── on-message.js # 消息处理(核心~25KB)
31
+ │ │ ├── on-login.js # 登录处理
32
+ │ │ ├── on-friend.js # 好友请求处理
33
+ │ │ ├── on-roomjoin.js # 群聊加入处理
34
+ │ │ ├── on-scan.js # 扫码处理
35
+ │ │ └── on-*.js # 其他事件处理
36
+ │ ├── proxy/ # 代理层(API调用)
37
+ │ │ ├── aibotk.js # 与aibotk服务通信
38
+ │ │ ├── openAi.js # OpenAI API代理
39
+ │ │ ├── difyAi.js # Dify API代理
40
+ │ │ ├── cozeAi.js # Coze API代理
41
+ │ │ ├── mqtt.js # MQTT通信
42
+ │ │ └── bot/ # 机器人类型分发器
43
+ │ │ └── dispatch.js # 机器人分发逻辑
44
+ │ ├── db/ # 数据持久化层
45
+ │ │ ├── nedb.js # NeDB数据库封装
46
+ │ │ ├── global.js # 全局配置存储
47
+ │ │ ├── configDb.js # 配置数据库
48
+ │ │ ├── chatHistory.js # 聊天历史
49
+ │ │ ├── aichatDb.js # AI对话记录
50
+ │ │ ├── userDb.js # 用户信息
51
+ │ │ ├── roomDb.js # 群信息
52
+ │ │ └── gptConfig.js # GPT配置
53
+ │ ├── service/ # 业务服务层
54
+ │ │ ├── event-dispatch-service.js # 事件分发
55
+ │ │ ├── room-async-service.js # 群聊同步
56
+ │ │ ├── msg-filters.js # 消息过滤
57
+ │ │ ├── msg-filter-service.js # 过滤服务
58
+ │ │ └── gpt4vService.js # GPT-4V服务
59
+ │ ├── mcp/ # Model Context Protocol服务
60
+ │ │ ├── src/
61
+ │ │ │ ├── mcp/ # MCP服务器实现
62
+ │ │ │ │ └── server.js # MCP标准服务器
63
+ │ │ │ ├── models/ # 数据模型
64
+ │ │ │ │ ├── Friend.js # 好友模型
65
+ │ │ │ │ ├── Group.js # 群组模型
66
+ │ │ │ │ ├── GroupMember.js # 群成员模型
67
+ │ │ │ │ └── ChatMessage.js # 消息模型
68
+ │ │ │ ├── services/ # MCP服务
69
+ │ │ │ │ ├── ChatDataService.js # 数据服务
70
+ │ │ │ │ ├── McpService.js # 查询服务
71
+ │ │ │ │ └── McpTools.js # 工具方法
72
+ │ │ │ └── config/
73
+ │ │ │ └── database.js # PostgreSQL配置
74
+ │ │ └── mcp-server.js # 核心MCP服务器
75
+ │ ├── task/ # 定时任务模块
76
+ │ │ ├── index.js # 任务管理
77
+ │ │ └── rss.js # RSS订阅任务
78
+ │ ├── common/ # 通用工具
79
+ │ │ ├── index.js # 消息发送工具
80
+ │ │ ├── reply.js # 回复处理
81
+ │ │ ├── hook.js # 钩子机制
82
+ │ │ └── multiReply.js # 多回复处理
83
+ │ ├── lib/ # 实用函数库
84
+ │ │ ├── index.js # 主要工具函数(定时、加密等)
85
+ │ │ ├── contentCensor.js # 内容审查
86
+ │ │ └── oss.js # 对象存储
87
+ │ └── const/ # 常量定义
88
+ │ └── puppet-type.js # Puppet类型定义
89
+ ├── test/ # 测试文件
90
+ ├── .github/ # GitHub CI/CD配置
91
+ ├── tsconfig.json # TypeScript配置
92
+ ├── package.json # 项目依赖配置
93
+ ├── .eslintrc.js # ESLint配置
94
+ ├── .prettierrc # Prettier配置
95
+ └── verpub.config.js # 版本发布配置
96
+ ```
97
+
98
+ ---
99
+
100
+ ## 2. 核心模块功能
101
+
102
+ ### 2.1 插件入口系统
103
+
104
+ **文件**: [src/index.js](src/index.js)
105
+
106
+ 导出三个主要插件:
107
+ - `WechatyWebPanelPlugin`:主插件,处理所有Wechaty事件
108
+ - `WechatyMessageRecordPlugin`:消息记录插件
109
+ - `WechatyMessageCallBackPlugin`:消息回调插件
110
+
111
+ 支持通过环境变量配置:`AIBOTK_KEY`和`AIBOTK_SECRET`
112
+
113
+ ### 2.2 事件处理系统
114
+
115
+ **核心文件**: [src/handlers/on-message.js](src/handlers/on-message.js)
116
+
117
+ 消息处理核心功能:
118
+ - 支持私聊和群聊消息分离处理
119
+ - 集成多种AI回复方式(GPT、Dify、FastGPT等)
120
+ - 消息过滤机制(关键词检测)
121
+ - 文件处理和视觉识别
122
+
123
+ **其他事件处理器**:
124
+ - [on-login.js](src/handlers/on-login.js):登录后获取配置、初始化MQTT、更新用户信息
125
+ - [on-friend.js](src/handlers/on-friend.js):好友请求处理
126
+ - [on-roomjoin.js](src/handlers/on-roomjoin.js):群加入事件
127
+ - [on-record-message.js](src/handlers/on-record-message.js):消息记录
128
+ - [on-callback-message.js](src/handlers/on-callback-message.js):回调事件处理
129
+
130
+ ### 2.3 AI机器人集成层
131
+
132
+ **目录**: [src/botInstance/](src/botInstance/)
133
+
134
+ 支持多种AI平台,每个都有独立的客户端类:
135
+
136
+ | AI平台 | 文件 | 功能 |
137
+ |--------|------|------|
138
+ | Dify | [dify.js](src/botInstance/dify.js) | LLM应用平台集成 |
139
+ | Coze V2 | [coze.js](src/botInstance/coze.js) | 字节AI平台(已废弃) |
140
+ | Coze V3 | [cozev3.js](src/botInstance/cozev3.js) | 字节AI新版本 |
141
+ | FastGPT | [fastgpt.js](src/botInstance/fastgpt.js) | 开源LLM应用 |
142
+ | OpenAI | [officialOpenAi.js](src/botInstance/officialOpenAi.js) | OpenAI官方API |
143
+ | GPT-4V | [gpt4v.js](src/botInstance/gpt4v.js) | 视觉识别模型 |
144
+ | Q-Anything | [qany.js](src/botInstance/qany.js) | 本地知识库 |
145
+
146
+ 每个客户端都支持:
147
+ - 初始化和配置管理
148
+ - Token和API密钥管理
149
+ - 流式和非流式响应
150
+ - 内容审查和过滤
151
+
152
+ ### 2.4 消息分发系统
153
+
154
+ **文件**: [src/proxy/bot/dispatch.js](src/proxy/bot/dispatch.js)
155
+
156
+ 根据botType分发消息到不同AI平台:
157
+ - 支持13+种机器人类型
158
+ - 上下文变量传递(userId、isMention、room信息等)
159
+ - 文件处理管道
160
+
161
+ ### 2.5 数据持久化层
162
+
163
+ **目录**: [src/db/](src/db/)
164
+
165
+ 两套数据存储系统:
166
+
167
+ #### 本地存储(NeDB)
168
+ - 轻量级嵌入式数据库
169
+ - 存储配置、AI聊天记录、用户信息
170
+ - 支持查询、排序、分页
171
+
172
+ **核心文件**:
173
+ - [nedb.js](src/db/nedb.js):数据库抽象层
174
+ - [global.js](src/db/global.js):全局配置存储
175
+ - [chatHistory.js](src/db/chatHistory.js):聊天历史
176
+
177
+ #### PostgreSQL(MCP服务)
178
+ - 用于生产级数据分析
179
+ - 存储结构化的聊天数据
180
+ - Sequelize ORM映射
181
+
182
+ ### 2.6 MCP服务(Model Context Protocol)
183
+
184
+ **目录**: [src/mcp/](src/mcp/)
185
+
186
+ 提供高级查询和数据分析能力:
187
+
188
+ | 功能 | 说明 |
189
+ |------|------|
190
+ | 好友管理 | 搜索、批量创建、批量删除 |
191
+ | 群组管理 | 群信息检索、成员分析 |
192
+ | 消息查询 | 全文搜索、热力图分析 |
193
+ | 关系分析 | 会话详情、用户关系图 |
194
+ | 活动分析 | 消息频率、活跃度统计 |
195
+ | 内容分析 | 话题提取、情感分析 |
196
+ | 数据导出 | CSV、JSON导出 |
197
+
198
+ **核心模型** ([src/mcp/src/models/](src/mcp/src/models/)):
199
+ - [Friend.js](src/mcp/src/models/Friend.js):好友信息
200
+ - [Group.js](src/mcp/src/models/Group.js):群信息
201
+ - [GroupMember.js](src/mcp/src/models/GroupMember.js):群成员
202
+ - [ChatMessage.js](src/mcp/src/models/ChatMessage.js):消息记录
203
+
204
+ ### 2.7 代理层
205
+
206
+ **目录**: [src/proxy/](src/proxy/)
207
+
208
+ - [aibotk.js](src/proxy/aibotk.js):与AiBotK后端服务通信
209
+ - 获取/更新配置
210
+ - 发送机器人信息
211
+ - 二维码管理
212
+ - Qiniu云存储集成
213
+
214
+ - 其他代理:
215
+ - [openAi.js](src/proxy/openAi.js), [difyAi.js](src/proxy/difyAi.js), [cozeAi.js](src/proxy/cozeAi.js):各平台API调用
216
+ - [mqtt.js](src/proxy/mqtt.js):实时消息推送
217
+ - [multimodal.js](src/proxy/multimodal.js):多模态处理(语音转文字、文字转语音)
218
+
219
+ ### 2.8 定时任务系统
220
+
221
+ **目录**: [src/task/](src/task/)
222
+
223
+ - [index.js](src/task/index.js):任务调度和执行
224
+ - 支持三种提醒:当天、每天、指定日期
225
+ - 使用node-schedule库
226
+ - 支持群发、群内同步
227
+
228
+ - [rss.js](src/task/rss.js):RSS订阅和推送
229
+
230
+ ### 2.9 服务层
231
+
232
+ **目录**: [src/service/](src/service/)
233
+
234
+ - [event-dispatch-service.js](src/service/event-dispatch-service.js):事件分发和路由
235
+ - [room-async-service.js](src/service/room-async-service.js):群聊消息同步
236
+ - [msg-filters.js](src/service/msg-filters.js):复杂消息过滤逻辑
237
+ - [gpt4vService.js](src/service/gpt4vService.js):视觉识别处理
238
+
239
+ ---
240
+
241
+ ## 3. 技术栈
242
+
243
+ ### 3.1 核心框架
244
+
245
+ | 类别 | 技术 | 版本 |
246
+ |------|------|------|
247
+ | 运行时 | Node.js | >=16 |
248
+ | 包管理 | npm | >=7 |
249
+ | 语言 | JavaScript (ES Module) | esnext |
250
+ | 类型检查 | TypeScript | ^5.4 |
251
+
252
+ ### 3.2 Wechaty生态
253
+
254
+ ```json
255
+ {
256
+ "@juzi/wechaty": "^1.0.108",
257
+ "@juzi/wechaty-puppet": "^1.0.100",
258
+ "@juzi/wechaty-puppet-service": "^1.0.105",
259
+ "wechaty-puppet-matrix": "^0.0.34",
260
+ "wechaty-puppet-wechat4u": "^1.14.12"
261
+ }
262
+ ```
263
+
264
+ ### 3.3 AI和LLM集成
265
+
266
+ ```json
267
+ {
268
+ "@langchain/core": "^0.3.40",
269
+ "@langchain/openai": "^0.4.4",
270
+ "@langchain/community": "^0.3.32",
271
+ "@langchain/redis": "^0.1.1",
272
+ "@dqbd/tiktoken": "^1.0.2",
273
+ "@coze/api": "^1.0.19"
274
+ }
275
+ ```
276
+
277
+ ### 3.4 数据存储
278
+
279
+ ```json
280
+ {
281
+ "sequelize": "^6.37.0",
282
+ "pg": "^8.11.0",
283
+ "pg-hstore": "^2.3.4",
284
+ "nedb": "^1.8.0",
285
+ "keyv": "^4.5.2"
286
+ }
287
+ ```
288
+
289
+ ### 3.5 API和通信
290
+
291
+ ```json
292
+ {
293
+ "@modelcontextprotocol/sdk": "^1.17.0",
294
+ "express": "^5.1.0",
295
+ "cors": "^2.8.5",
296
+ "axios": "1.8.2",
297
+ "mqtt": "^4.2.6",
298
+ "superagent": "^5.3.1",
299
+ "node-fetch": "^2.6.9"
300
+ }
301
+ ```
302
+
303
+ ### 3.6 工具和实用库
304
+
305
+ ```json
306
+ {
307
+ "dayjs": "^1.11.7",
308
+ "node-schedule": "^1.3.2",
309
+ "uuid": "^9.0.0",
310
+ "zod": "^3.25.76",
311
+ "jsonwebtoken": "^9.0.2",
312
+ "mustache": "^4.2.0",
313
+ "rss-parser": "^3.13.0"
314
+ }
315
+ ```
316
+
317
+ ### 3.7 云服务集成
318
+
319
+ ```json
320
+ {
321
+ "@aws-sdk/client-s3": "^3.828.0",
322
+ "ali-oss": "^6.21.0",
323
+ "baidu-aip-sdk": "^4.16.10"
324
+ }
325
+ ```
326
+
327
+ ---
328
+
329
+ ## 4. 核心流程
330
+
331
+ ### 4.1 插件初始化流程
332
+
333
+ ```
334
+ 插件导出
335
+
336
+ WechatyWebPanelPlugin({apiKey, apiSecret, ignoreMessages, ignoreEvents})
337
+
338
+ 设置全局配置(global.js)
339
+
340
+ 返回初始化函数
341
+
342
+ bot.use(plugin) 绑定到Wechaty
343
+
344
+ 注册事件监听器
345
+ └── on('scan') → onScan
346
+ └── on('login') → onLogin
347
+ └── on('message') → onMessage
348
+ └── on('friendship') → onFriend
349
+ └── on('room-join') → onRoomjoin
350
+ └── ... 其他事件
351
+ ```
352
+
353
+ ### 4.2 消息处理流程
354
+
355
+ 详见 [src/handlers/on-message.js](src/handlers/on-message.js)
356
+
357
+ ```
358
+ 收到消息事件
359
+
360
+ 消息类型检查 → 系统消息/文本/链接/文件/图片
361
+
362
+ 私聊消息处理
363
+ ├── 检查忽略列表
364
+ ├── 获取AI配置
365
+ ├── 调用dispatchBot()
366
+ └── 获取AI回复
367
+
368
+ 群聊消息处理
369
+ ├── 检查@提及
370
+ ├── 消息过滤(自定义规则)
371
+ ├── 关键词匹配
372
+ ├── 事件分发
373
+ └── 定时任务触发
374
+
375
+ 消息记录
376
+ └── addRoomRecord() / addChatRecord()
377
+
378
+ 发送回复
379
+ └── contactSay() / roomSay()
380
+ ```
381
+
382
+ ### 4.3 登录流程
383
+
384
+ 详见 [src/handlers/on-login.js](src/handlers/on-login.js)
385
+
386
+ ```
387
+ 登录成功
388
+
389
+ 获取配置文件 → getConfig()
390
+
391
+ 更新puppet类型信息
392
+
393
+ 保存用户信息 → addUser()
394
+
395
+ 处理用户头像 → putqn()
396
+
397
+ 初始化MQTT连接 → initMqtt()
398
+
399
+ 版本检查和更新提醒
400
+ ```
401
+
402
+ ### 4.4 AI回复流程
403
+
404
+ 详见 [src/proxy/bot/dispatch.js](src/proxy/bot/dispatch.js)
405
+
406
+ ```
407
+ 进入dispatchBot()
408
+
409
+ 根据botType判断AI平台
410
+ ├── case 6: ChatGPT API
411
+ ├── case 8: Dify
412
+ ├── case 9: FastGPT
413
+ ├── case 11: Coze V2
414
+ ├── case 12: Coze V3
415
+ ├── case 13: Q-Anything
416
+ └── ...其他类型
417
+
418
+ 调用对应AI客户端
419
+
420
+ 传递上下文变量
421
+ ├── userId: 用户ID
422
+ ├── isMention: 是否@
423
+ ├── roomId/roomName: 群信息
424
+ ├── file: 文件信息
425
+ └── inputs/variables: 平台特定参数
426
+
427
+ 处理流式响应
428
+
429
+ 内容审查和过滤
430
+
431
+ 返回回复数组 [{type, content, url}, ...]
432
+ ```
433
+
434
+ ### 4.5 MCP服务流程
435
+
436
+ 详见 [src/mcp/mcp-server.js](src/mcp/mcp-server.js)
437
+
438
+ ```
439
+ ChatMcpServer初始化
440
+
441
+ setupHandlers() 注册工具处理器
442
+
443
+ ListToolsRequestSchema: 列举可用工具
444
+ ├── search_friends
445
+ ├── search_groups
446
+ ├── search_messages
447
+ └── 20+其他工具
448
+
449
+ CallToolRequestSchema: 执行工具
450
+ ├── 参数验证 (Zod schema)
451
+ ├── 调用对应服务
452
+ └── 返回结果
453
+ ```
454
+
455
+ ---
456
+
457
+ ## 5. 配置文件说明
458
+
459
+ ### 5.1 TypeScript配置
460
+
461
+ **文件**: [tsconfig.json](tsconfig.json)
462
+
463
+ - **编译目标**:ES Next(现代JavaScript)
464
+ - **模块系统**:ESM(ES Modules)
465
+ - **输出目录**:`dist/`
466
+ - **严格模式**:启用所有strict检查
467
+ - **装饰器支持**:启用(用于Sequelize ORM)
468
+ - **Source Map**:生成,便于调试
469
+
470
+ ### 5.2 包管理配置
471
+
472
+ **文件**: [package.json](package.json)
473
+
474
+ - **入口点**:`dist/index.js`(ES Module)
475
+ - **关键脚本**:
476
+ - `npm run build`:TypeScript编译
477
+ - `npm run dist`:完整构建
478
+ - `npm run test:wechat`:测试微信
479
+ - `npm run test:wework`:测试企业微信
480
+ - `npm run release`:发布到npm
481
+ - `npm run db:migrate`:数据库迁移
482
+
483
+ ### 5.3 代码风格配置
484
+
485
+ **文件**: [.prettierrc](.prettierrc)
486
+
487
+ ```json
488
+ {
489
+ "printWidth": 300, // 每行300字符(长行代码)
490
+ "tabWidth": 2, // 缩进2空格
491
+ "semi": false, // 不使用分号
492
+ "singleQuote": true, // 单引号
493
+ "arrowParens": "always" // 箭头函数参数总使用括号
494
+ }
495
+ ```
496
+
497
+ ### 5.4 ESLint配置
498
+
499
+ **文件**: [.eslintrc.js](.eslintrc.js)
500
+
501
+ - 基于Prettier推荐配置
502
+ - 禁用console和未使用变量的警告
503
+ - 支持Node.js ES6环境
504
+
505
+ ---
506
+
507
+ ## 6. 核心类和接口
508
+
509
+ ### 6.1 全局配置类
510
+
511
+ **文件**: [src/db/global.js](src/db/global.js)
512
+
513
+ ```javascript
514
+ class Config {
515
+ apiKey: string // API密钥
516
+ qrcodeKey: string // 企微二维码
517
+ verifyCode: string // 企微验证码
518
+ gptconfig: Array // GPT配置列表
519
+ allTasks: Array // 所有任务列表
520
+
521
+ // 方法
522
+ getApikey() / setApikey(val)
523
+ getGptConfigById(id)
524
+ updateOneGptConfig(id, info)
525
+ }
526
+ ```
527
+
528
+ ### 6.2 数据库抽象
529
+
530
+ **文件**: [src/db/nedb.js](src/db/nedb.js)
531
+
532
+ ```javascript
533
+ class DB {
534
+ find(query, select): Promise<Array> // 查询多条
535
+ findOne(query, select): Promise<Object> // 查询单条
536
+ insert(values): Promise<Object> // 插入
537
+ update(query, values): Promise<Number> // 更新
538
+ remove(query): Promise<Number> // 删除
539
+ sort(orderby) / limit(offset, limit) // 链式调用
540
+ }
541
+ ```
542
+
543
+ ### 6.3 MCP数据模型
544
+
545
+ **目录**: [src/mcp/src/models/](src/mcp/src/models/)
546
+
547
+ 使用Sequelize ORM定义:
548
+ - **Friend**:好友信息(robotId, wxid, name, avatar, alias, tags)
549
+ - **Group**:群信息(robotId, wxid, topic, memberCount)
550
+ - **GroupMember**:群成员(robotId, roomWxid, wxid, name, alias)
551
+ - **ChatMessage**:消息记录(robotId, conversationId, content, type, timestamp)
552
+
553
+ ---
554
+
555
+ ## 7. 通信协议
556
+
557
+ ### 7.1 内部通信
558
+
559
+ - **与AiBotK服务**:HTTP/HTTPS (REST API)
560
+ - 获取配置文件
561
+ - 上报机器人状态
562
+ - 管理二维码和验证
563
+
564
+ - **MQTT实时推送**:连接AiBotK消息队列
565
+ - 接收远程指令
566
+ - 实时配置更新
567
+
568
+ ### 7.2 AI平台调用
569
+
570
+ - **OpenAI**:官方API + 代理支持
571
+ - **Dify**:HTTP StreamAPI(流式响应)
572
+ - **FastGPT**:HTTP API(支持流式)
573
+ - **Coze**:官方SDK + 自定义客户端
574
+ - **LangChain**:统一LLM接口
575
+
576
+ ### 7.3 数据库通信
577
+
578
+ - **NeDB**:本地进程内通信(无网络)
579
+ - **PostgreSQL**:TCP连接(MCP服务)
580
+ - **Redis**:缓存层(LangChain Redis集成)
581
+
582
+ ---
583
+
584
+ ## 8. 构建和部署
585
+
586
+ ### 8.1 构建流程
587
+
588
+ ```bash
589
+ npm run build
590
+
591
+ TypeScript编译 (tsc)
592
+
593
+ 输出到 dist/ 目录
594
+
595
+ 生成 dist/index.js 等JavaScript文件
596
+ ```
597
+
598
+ ### 8.2 发布流程
599
+
600
+ ```bash
601
+ npm run release
602
+
603
+ verpub工具验证版本
604
+
605
+ 发布到npm Registry
606
+
607
+ 创建Git标签:{name}@{version}
608
+ ```
609
+
610
+ ### 8.3 测试
611
+
612
+ ```bash
613
+ npm run test:wechat # 微信Puppet测试
614
+ npm run test:wework # 企业微信测试
615
+ ```
616
+
617
+ ---
618
+
619
+ ## 9. 扩展点
620
+
621
+ 项目设计了多个易于扩展的点:
622
+
623
+ 1. **新AI平台**:在 [src/botInstance/](src/botInstance/) 和 [src/proxy/](src/proxy/) 中添加新类
624
+ 2. **新事件类型**:在 [src/handlers/](src/handlers/) 中添加 `on-xxx.js` 文件
625
+ 3. **新过滤规则**:在 [src/service/msg-filters.js](src/service/msg-filters.js) 中添加
626
+ 4. **新数据模型**:使用MCP的Sequelize模型,在 [src/mcp/src/models/](src/mcp/src/models/) 中定义
627
+ 5. **新定时任务**:在 [src/task/](src/task/) 中添加
628
+ 6. **MCP工具**:在 [src/mcp/src/mcp/schemas.js](src/mcp/src/mcp/schemas.js) 和 [src/mcp/src/mcp/server.js](src/mcp/src/mcp/server.js) 中定义
629
+
630
+ ---
631
+
632
+ ## 10. 核心流程总结
633
+
634
+ | 流程 | 关键文件 | 说明 |
635
+ |------|---------|------|
636
+ | 插件初始化 | [src/index.js](src/index.js) | 绑定事件监听器 |
637
+ | 消息处理 | [src/handlers/on-message.js](src/handlers/on-message.js) | 核心消息分发 |
638
+ | AI回复 | [src/proxy/bot/dispatch.js](src/proxy/bot/dispatch.js) | 调用AI平台 |
639
+ | 数据存储 | [src/db/](src/db/) | 本地或数据库存储 |
640
+ | 定时任务 | [src/task/index.js](src/task/index.js) | 调度执行 |
641
+ | MCP查询 | [src/mcp/](src/mcp/) | 高级数据分析 |
642
+ | 事件分发 | [src/service/event-dispatch-service.js](src/service/event-dispatch-service.js) | 自定义事件处理 |
643
+
644
+ ---
645
+
646
+ ## 11. 项目特色
647
+
648
+ 1. **多AI平台支持**:无缝集成13+种AI服务
649
+ 2. **灵活的消息处理**:支持复杂的过滤规则和事件分发机制
650
+ 3. **高级数据分析**:通过MCP服务提供强大的查询和分析能力
651
+ 4. **双存储系统**:本地NeDB用于快速访问,PostgreSQL用于生产级分析
652
+ 5. **定时任务调度**:支持灵活的提醒和RSS订阅
653
+ 6. **实时通信**:MQTT支持远程控制和配置更新
654
+ 7. **插件化架构**:易于扩展和定制
655
+
656
+ ---
657
+
658
+ ## 附录:关键依赖版本
659
+
660
+ ### 核心依赖
661
+ - Node.js: >=16
662
+ - TypeScript: ^5.4
663
+ - Wechaty: ^1.0.108
664
+
665
+ ### AI相关
666
+ - @langchain/core: ^0.3.40
667
+ - @langchain/openai: ^0.4.4
668
+ - @coze/api: ^1.0.19
669
+
670
+ ### 数据存储
671
+ - sequelize: ^6.37.0
672
+ - pg: ^8.11.0
673
+ - nedb: ^1.8.0
674
+
675
+ ### 通信
676
+ - express: ^5.1.0
677
+ - axios: 1.8.2
678
+ - mqtt: ^4.2.6
679
+
680
+ ---
681
+
682
+ **文档生成时间**: 2026-01-14
683
+ **项目版本**: 参见 [package.json](package.json)