1. 项目定位与用途
omni-bot-sdk 是一个面向开发者的微信4.0 RPA框架SDK,核心定位是通过零侵入方式实现微信客户端自动化。其主要用途包括:构建个人聊天机器人、自动化接收与处理各类微信消息(文本/图片/文件)、集成大语言模型(如OpenAI、Dify)实现智能对话、以及扩展发送朋友圈和小程序等高级功能。项目提供完整的程序化API,开发者可通过几行代码快速启动机器人,也可通过插件系统深度定制业务逻辑。同时配套桌面GUI客户端(独立仓库)供非编程用户使用。项目严格限定于个人学习与技术交流,禁止商业用途。
2. 解决的问题
传统微信自动化方案多依赖Hook或逆向工程,易被微信官方检测导致封号。本项目通过三大技术路径解决该问题:一是采用数据库只读轮询策略监听消息,避免修改微信进程;二是使用训练专用的YOLO模型配合OCR进行视觉定位,替代坐标硬编码,提升版本适应性;三是所有RPA操作模拟人类点击输入,不调用内部接口。此外,插件化架构解决了功能扩展与核心逻辑耦合的问题,MCP协议支持解决了与其他AI工具集成的标准化问题。但需注意,视觉识别方案无法保证100%准确率,且数据库读取行为仍可能被杀毒软件视为异常。
3. 适用场景
本项目适用于以下场景:个人技术学习与研究,如探索RPA技术原理、测试视觉识别模型;构建私人助理机器人,实现自动回复、消息提醒、文件整理等个人生产力工具;集成LLM服务,将微信作为对话界面接入AI能力;自动化流程实验,验证消息处理、群管理等逻辑。⚠️严禁用于企业营销、广告推送、群发消息等商业行为。由于RPA运行时会抢占鼠标键盘,建议在专用机器或虚拟机上部署。对于需要高准确率、高并发或企业级稳定性的场景,本项目不适用。
4. 安装方式
安装前提:Windows系统、Python 3.12版本。步骤1:通过pip从PyPI安装核心库:pip install omni-bot-sdk。步骤2:获取微信数据库解密密钥(dbkey)。本项目不提供密钥提取工具,需自行从GitHub获取DbkeyHookCMD.exe或DbkeyHookUI.exe运行获取,将密钥填入配置文件对应字段。步骤3:部署MQTT消息代理服务。MCP工具调用和任务回调依赖MQTT,Windows可使用nanomq等工具启动本地服务,默认端口1883。步骤4:创建配置文件,参考config.example.yaml生成config.yaml,设置微信版本、数据库路径、密钥、MQTT地址、插件列表等参数。注意:仓库中未明确给出数据库密钥工具的安装来源链接,需用户自行在GitHub搜索获取;MQTT服务的具体配置参数在文档中详细枚举。
5. 使用方式
基础使用:参考examples/simple-bot/bot.py,导入Bot类并指定配置文件路径,调用start()方法启动机器人。运行时请勿操作鼠标键盘,以免干扰RPA执行。消息处理:框架自动监听微信数据库,发现新消息后经解析器转换为统一消息对象,依次通过插件链处理。插件可决定是否响应并生成RPA动作。功能扩展:通过插件系统添加自定义逻辑,插件需实现指定接口并注册entry-points;或使用MCP协议,外部工具可调用RPA能力发送消息、管理群组。高级操作:RPA模块支持发送文本、图片、文件,可扩展至朋友圈发布、小程序打开等。所有视觉操作依赖YOLO模型与OCR定位,需确保微信窗口处于前台且不被遮挡。异常处理:框架具备自恢复机制,如微信异常会尝试自动回复,登录失败可推送钉钉二维码。
6. 补充说明与实现特点
技术实现上,项目采用分层架构:数据源层读取微信数据库;核心层包含轮询器、消息队列、插件管理器;执行层通过视觉识别模拟操作。消息流转路径为:数据库 → 轮询器 → 消息队列 → 消费者/解析器 → 插件链 → RPA动作队列 → 视觉执行器 → 微信界面。关键特点:1) 零侵入设计,不Hook微信进程,降低检测概率;2) 插件化架构,基于setuptools entry-points动态加载;3) 支持MCP协议,标准化工具调用;4) 视觉定位使用定制YOLO模型,适应不同版本UI;5) 配置系统详尽,覆盖RPA参数、外部服务、存储等。已知局限性:视觉识别非100%准确;同名联系人可能导致消息发送错误;RPA运行期间独占输入设备;窗口焦点可能错乱;初始化耗时较长;数据库只读打开可能被杀毒软件警告。隐私方面,项目不联网、不收集数据、不写微信数据库,所有信息保留本地。