WinMsgHub:我用 Python 打造了一款 Windows 消息聚合中枢
作者:青云制作_彭明航
项目地址:https://github.com/pmh1314520/WinMsgHub
项目官网:https://wmh.pmhs.top
你有没有过这样的体验?
手机收到验证码,你得解锁、翻短信、默念那 6 位数字,再低头往电脑上敲。MQTT 设备告警来了,切终端去看。RSS 更新了、邮件到了、文件夹被改了……消息散落各处,像十几条河各自奔涌,却没有一个水库把它们汇在一起。
这就是我做 WinMsgHub 的初心——让 Windows 成为你的消息中枢,一站式接收、管理、展示一切消息。
WinMsgHub 是我的第二款开源软件,基于 Python + PyQt6 开发,专为 Windows 10/11 设计。它能把 MQTT、IMAP 邮件、RSS、Webhook、WebSocket、API 轮询、文件监控、剪贴板监听——共 8 类消息源——全部汇聚到一个界面,以高度可定制的桌面弹窗进行通知。
一、它解决了什么痛点?
说白了就一句话:消息太多了,而且散得到处都是。
作为一个经常和服务器、物联网设备打交道的人,我每天要在不同平台间切来切去。手机验证码、树莓派的 MQTT 传感器数据、RSS 里的技术文章、Webhook 回调的构建状态、邮箱告警……这些东西没有一个统一收件箱,全靠人肉轮询。
市面上的方案要么太重(企业级监控系统),要么太窄(只能收一种消息源),要么云化(数据不在本地)。我想要的是一个轻量全面、本地运行、完全开源的方案。于是 WinMsgHub 诞生了。
二、核心功能一览
8 大消息源,全协议覆盖
WinMsgHub 目前支持八种消息源接入,而且每种都支持多实例——你可以同时连两台 MQTT 服务器、监控三个文件夹、订阅五个 RSS 源:
| 类型 | 说明 |
|---|---|
| MQTT | 支持 TLS 加密连接,IoT 设备消息实时接收 |
| WebSocket | 实时双向通信,适合在线推送场景 |
| API 轮询 | HTTP/HTTPS 定时拉取,兼容任意 REST 接口 |
| Webhook | 内置 HTTP 服务器,被动接收外部推送 |
| IMAP | 实时监听邮件服务器,新邮件秒级感知 |
| RSS/Atom | 博客、新闻订阅自动解析 |
| 文件监控 | 监控文件夹/文件的增删改移 |
| 剪贴板 | 实时监听剪贴板文本/文件内容变化 |
桌面弹窗,完全由你定制
消息来了怎么展示?WinMsgHub 把决定权交给你:
- 位置:屏幕四角 + 四边,共 8 个位置可选
- 动画:滑入、淡入、缩放 3 种动画效果,速度可调
- 样式:尺寸、透明度、颜色、字体、提示音——全部可自定义
你可以把重要消息设为屏幕正上方大红弹窗 + 提示音,把 RSS 更新设为右下角半透明小窗静默显示。弹窗怎么做,你说了算。
智能过滤 + 数据管理
- 过滤引擎:支持包含/排除关键词过滤,只让重要的消息弹出来
- 消息历史:所有消息存入本地 SQLite 数据库,支持关键词搜索、时间筛选、数据导出
- 统计面板:实时展示各消息源的消息数量、占比、连接状态,支持数据可视化
其他亮点
- 系统托盘:最小化到托盘,不占任务栏,右键快捷操作
- 热重载:修改任何配置立即生效,无需重启
- 自动更新:一键检查 GitHub 最新版本
- 本地 MQTT Broker:内置 aMQTT 服务,一键启动你的私有 MQTT 服务器
- 手机消息转发:配合 Android 端的「短信转发器」,可以将手机上的短信、通话、应用通知统统转发到电脑上弹窗显示——甚至能自动提取短信验证码到剪贴板
三、技术实现亮点
分层架构,模块解耦
项目整体采用 四层架构:UI 层(PyQt6 界面)、核心层(业务逻辑)、数据层(SQLite 存储 + 各消息源连接器)、工具层(日志/更新/网络等通用模块)。
每一层职责清晰,新增一个消息源只需在 data/connectors/ 目录下新增一个连接器文件,继承基类、实现几个抽象方法即可,完全不影响其他模块。
连接器基类设计
所有消息源连接器继承自统一的 BaseConnector,定义 start()、stop()、get_status() 等标准接口。管理器统一调度所有连接器的生命周期——既能独立启停,也能一键全控。新增消息源只需在 data/connectors/ 下加一个文件,实现几个抽象方法即可。
异步与多线程
MQTT、WebSocket、IMAP 等需要长连接的协议运行在独立线程中,API 轮询和文件监控分别使用定时器和 watchdog 库的事件回调。弹窗渲染和数据库写入通过 asyncio 异步化,避免阻塞 UI 线程。最终的体验是:不管后台收了多少消息、存了多少数据,界面始终流畅。
配置热重载
所有配置(消息源参数、弹窗样式、过滤规则)修改后立即生效,这是通过 ConfigManager 的观察者模式实现的——配置变更时自动通知相关模块刷新状态,全程无需重启应用。这个特性在调试消息源配置时特别实用。
内置 MQTT Broker
利用 aMQTT 库在应用内启动了一个轻量的 MQTT Broker,配合手机短信转发场景,让手机和电脑在局域网内直接通过 MQTT 通信,不需要额外部署任何中间件,开箱即用。
测试保障
项目使用 pytest + Hypothesis(属性测试)+ coverage 组合,测试覆盖率 80%。Hypothesis 自动生成大量边界输入来测试过滤引擎和消息解析逻辑,发现了不少只靠人工测试根本想不到的 corner case。
四、开发故事
这是我开源的第二款软件。和很多开发者一样,写第一行代码时我没想太多——只是觉得每条消息都得去不同地方看,太麻烦了。起初它只是个简陋的 MQTT 接收器,窗口简单,功能单一,只够自己用。
但写下去,需求就长出来了。MQTT 能收,RSS 凭什么不能?能收 RSS,那邮件、Webhook、文件监控是不是也行?每加一个消息源,框架就重构一次。从最初的"能用就行",到如今分层清晰、扩展方便的项目结构,中间推翻重写了至少三次。
最让我有成就感的,是打通手机消息转发这条链路。当我在电脑上第一次看到手机短信以弹窗出现、验证码自动复制到剪贴板时,那种"终于不用低头看手机了"的爽感,让我觉得所有熬夜调试都值了。后来我把这个玩法写成了详细教程放在 README 里,希望能帮到有同样烦恼的朋友。
WinMsgHub 目前发布到了 v1.1.4,GitHub 上 12 个 Star、3 个 Fork。虽然不大,但每个 Star 都是对我的肯定。它远不完美——跨平台支持、插件系统、更丰富的数据分析——这些都在开发计划里。开源的意义,不就是不断打磨、不断进步吗?
五、写在最后
如果你也在 Windows 上被各种消息源搞得焦头烂额,欢迎试试 WinMsgHub。它完全开源、本地运行、不依赖云服务,你的数据都在你自己的电脑上。
GitHub:https://github.com/pmh1314520/WinMsgHub
如果觉得有用,点个 Star 就是最大鼓励。也欢迎提 Issue 和 PR,一起把这个小工具做得更好。
让 Windows 成为你的消息中枢,从 WinMsgHub 开始。
本文写于 2026 年 5 月,WinMsgHub v1.1.4 发布之际。