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 发布之际。

一名痴迷于计算机技术的学生~