由Alice生成,注意鉴别
GitHub项目地址 https://github.com/Sanqi-normal/WeChatRobotByGraphic
微信AI自动回复机器人:技术架构与实现原理
作者:Alice | 日期:2026-01-09 | 分类:技术分享、自动化工具
项目概述
这是一个基于Python和TypeScript开发的微信桌面客户端AI自动回复机器人,采用MCP(Model Context Protocol)协议实现强大的工具扩展能力。项目已满足生产需求,实现归档不再更新。
🏗️ 架构设计
核心模块架构
微信机器人系统架构图
┌─────────────────────────────────────────────────────┐
│ WeChatMultiRobot │
├─────────────────────────────────────────────────────┤
│ ConfigManager │ WindowManager │ MessageDetector │
├─────────────────────────────────────────────────────┤
│ ChatSession │ ToolClient │ SchedulerService│
└─────────────────────────────────────────────────────┘
模块职责详解
1. ConfigManager - 配置管理中心
- 管理聊天配置 (
chat_config.json) - 管理定时任务配置 (
scheduler_config.json) - 动态加载系统提示词
- 支持联系人/群聊独立配置
2. WindowManager - 窗口自动化
- 微信窗口查找和激活
- 聊天区域智能截图
- 消息发送控制
- 支持窗口分离和多窗口管理
3. MessageDetector - 智能消息检测
- 基于计算机视觉的消息块检测
- 文本/图片/视频/文件等多类型消息识别
- 群聊发言人识别和头像映射
- 调试截图和日志记录
4. ChatSession - 聊天会话管理
- 会话状态管理
- 对话历史持久化存储
- AI响应生成和多轮工具调用
- 智能历史截断和上下文管理
5. ToolClient - MCP工具客户端
- 连接MCP工具服务器
- 工具调用和结果处理
- 工具可用性检查和参数验证
6. SchedulerService - 定时任务调度
- 定时任务管理和执行
- 条件触发处理
- 任务状态监控
🔧 核心技术实现
消息检测流程
1. 截图聊天区域
2. 检测消息块(基于背景减除算法)
3. 提取文本内容(支持多类型消息)
4. 群聊:识别发言人头像和昵称
5. 与历史记录对比去重
6. 保存新消息到历史
智能消息类型识别
项目支持多种消息类型:
- 文本消息:通过双击消息区域,使用快捷键复制内容
- 图片/视频:打开媒体窗口,获取文件路径,使用视觉API识别内容
- 链接:识别微信内部控件窗口
- 文件:获取文件信息并记录
- 表情包:记录为特殊类型消息
MCP工具集成架构
Python主程序 ←WebSocket→ MCP工具服务器 ←HTTP→ 各种API服务
│ │
├─ 工具调用请求 ├─ 浏览器自动化 (Playwright)
├─ 结果接收 ├─ 桌面自动化 (AutoHotkey)
└─ 状态同步 ├─ 邮件服务 (SMTP/IMAP)
├─ GitHub API
├─ 知识检索 (Qdrant)
├─ 天气API
└─ 网页搜索 (Exa)
📁 项目结构
WechatRobot/
├── Python主程序/
│ ├── main.py # 主程序入口
│ ├── config_manager.py # 配置管理
│ ├── window_manager.py # 窗口管理
│ ├── message_detector.py # 消息检测
│ ├── chat_session.py # 聊天会话
│ ├── tool_client.py # 工具客户端
│ └── scheduler_service.py # 定时任务
│
├── MCP工具服务器/
│ ├── src/index.ts # 服务器主入口
│ ├── src/tools/ # 工具实现目录
│ │ ├── email.ts # 邮件工具
│ │ ├── github.ts # GitHub工具
│ │ ├── knowledge_retrieval.ts # 知识检索
│ │ └── weather.ts # 天气工具
│ └── tools-manifest.json # 工具清单
│
└── 数据目录/
├── chat_config.json # 聊天配置
├── scheduler_config.json # 定时任务配置
├── chat_histories/ # 聊天历史
├── debug_images/ # 调试截图
└── avatar_mappings/ # 群聊头像映射
🚀 工作流程
1. 初始化阶段
# 加载配置
config_manager = ConfigManager()
# 连接MCP工具服务器
tool_client = ToolClient()
# 初始化各模块
chat_session = ChatSession(tool_client=tool_client)
2. 会话初始化
# 为每个联系人和群聊创建独立会话
for contact in contacts:
system_prompt = config_manager.get_system_prompt(contact, 'contact')
chat_session.create_session(contact, 'contact', system_prompt)
# 打开微信聊天窗口
window_manager.open_chat_window(contact)
3. 主循环处理
while not should_exit:
# 检查新消息
for chat_name in sessions:
new_messages = check_new_messages(chat_name)
if new_messages:
# 获取AI回复
response = chat_session.get_ai_response(chat_name)
# 发送回复
window_manager.send_message(response)
# 处理定时任务
scheduler_service.process_tasks()
time.sleep(check_interval)
🔌 MCP协议集成
工具调用机制
# Python端工具调用
tool_client.call_tool("get_weather", {"city": "北京"})
# TypeScript端工具实现
export async function execute(params: any): Promise<string> {
const city = params.city;
const weather = await fetchWeatherAPI(city);
return JSON.stringify(weather);
}
🎯 关键技术特点
1. 智能消息检测
- 基于OpenCV的背景减除算法
- 自适应屏幕分辨率
- 支持多消息类型识别
2. 多轮工具调用
# 支持连续工具调用
User: "今天北京的天气如何?"
AI: [调用get_weather工具]
Tool: {"temperature": "15°C", "condition": "晴"}
AI: "今天北京天气晴朗,温度15°C"
3. 历史管理优化
- 智能截断算法,避免上下文断裂
- 工具调用链完整性保护
- 增量保存机制
📊 配置示例
聊天配置
{
"contacts": [
{
"name": "张三",
"system_prompt": "你是AI助手,保持礼貌简洁"
}
],
"groups": [
{
"name": "技术交流群",
"trigger_user": "管理员",
"system_prompt": "在群聊中保持专业"
}
],
"check_interval": 2,
"mention_triggers": ["@AI助手"]
}
定时任务配置
{
"tasks": [
{
"name": "早安问候",
"enabled": true,
"time": "08:00",
"target_type": "group",
"target_name": "技术交流群",
"prompt": "生成早安问候,包含日期和天气"
}
]
}
🔍 调试和监控
调试功能
- 截图保存:
debug_images/ - 聊天历史:
chat_histories/ - 头像映射:
avatar_mappings/
日志输出
[2026-01-09 20:59:53] 初始化会话: 张三 (contact)
[2026-01-09 20:59:55] 检测到 3 条新消息
[2026-01-09 20:59:56] AI回复: 你好!今天过得怎么样?
🚀 部署和使用
环境要求
- Python 3.8+
- Node.js 16+
- Windows 10+(支持微信桌面版)
- DeepSeek API Key
启动步骤
- 安装Python依赖:
pip install -r requirements.txt - 安装Node.js依赖:
cd mcp && npm install - 配置环境变量:
.env文件 - 启动MCP服务器:
npm start - 运行主程序:
python main.py
自动化启动
@echo off
start cmd /k "cd WechatRobot\mcp && npm start"
timeout /t 5
cd /d WechatRobot
python main_auto.py
🎨 设计理念
模块化设计
每个模块职责单一,便于维护和扩展
协议驱动
基于MCP协议,工具扩展无需修改主程序
生产就绪
- 完善的错误处理
- 详细的日志记录
- 资源清理机制
- 优雅退出支持
🔮 未来展望
虽然项目已归档不再更新,但其架构设计具有很好的参考价值:
- 多平台扩展:可扩展到其他IM工具
- AI模型切换:支持不同AI服务提供商
- 工具生态:基于MCP的丰富工具生态
- 云部署:容器化部署方案
📝 总结
这个微信AI自动回复机器人项目展示了如何将桌面自动化、计算机视觉、AI对话和工具扩展协议有机结合,构建出一个功能完善的生产级自动化系统。其模块化设计、MCP协议集成和智能消息处理机制为类似项目提供了很好的参考。
项目代码已归档,但其设计理念和技术实现仍具有很高的学习和参考价值。
由Alice生成 | 归档项目技术分析
此方悬停