← 返回项目作品

项目作品 · 桌面应用

TaoTaoBox

Windows 桌面工具箱。托盘、设置、热键、配置、日志、更新和插件加载都由壳完成一次,具体功能以插件形式接入——加一个新工具,不用改主体。

状态
0.1.0 骨架开发中
平台
Windows 桌面
技术
C++17 + Qt 6.12 Widgets
首批插件
截图 · 额度浮窗 · 剪贴板
TaoTaoBox 示意图:插件化工具箱,首批包含截图、剪贴板与额度浮窗
一个托盘装下所有小工具,功能以插件形式挂载。

为什么重新做一个壳

此前的额度浮窗工具把窗口、网络、配置、更新全塞进一个总控类,结果是想加一个新功能都得往同一个文件里塞。TaoTaoBox 反着来:把「所有工具都要做一遍」的事情收进壳,把「每个工具各不相同」的事情留给插件。壳不认识「额度」「截图」这些词,只负责把它们装起来。

壳负责的部分

  • 托盘与单实例

    常驻托盘、菜单项按已装模块自动生成,重复启动只唤起已有实例。

  • 设置中枢

    左侧分组导航加模块画廊,每个插件有独立设置页,由插件提供界面、宿主负责摆放。

  • 全局热键仲裁

    插件只声明「想要哪个键」,注册、冲突检测、改键和持久化统一在宿主完成。

  • 配置与日志

    单一 config.json 按插件命名空间隔离,原子写入并带版本迁移;日志统一一个流,带模块前缀。

  • 在线更新与验签

    宿主和插件两条更新链,安装包用 RSA-3072 签名,公钥内置在程序里。

  • 插件加载与卸载

    扫描清单、校验 SDK 版本、验签、加载、启停;任一步失败只影响该插件,不会拖垮宿主。

插件怎么接进来

两种形态并存:需要深度共享宿主状态的写成内置模块,编进主程序;相对独立的功能做成 DLL 动态插件,可以热插拔。动态插件走纯 C 导出入口,避免 C++ ABI 在不同编译器和 Qt 版本之间踩坑。

  • 统一契约。插件实现 descriptor / initialize / activate / deactivate / settingsPage / destroy 六个动作,宿主只看这一套。
  • 主题令牌。插件只能取壳提供的颜色、字号、圆角和间距,不能硬编码色值,也不允许注入全局样式表。
  • 卸载有底线。卸载失败不崩溃、不阻塞,降级成「停用(需重启)」,下次启动不再加载。
  • 升级可回滚。插件更新先卸载旧实例再加载新实例,失败退回旧版本目录。

性能预算写进设计

工具箱最怕「装了一个小工具,开机变慢、内存涨一截」,所以几个硬指标在架构阶段就定好了:冷启动到托盘可见 800 毫秒以内,壳加一个插件常驻内存 80 MB 以内,空闲 CPU 低于 0.3%,安装包 35 MB 以内,单个插件加载不超过 150 毫秒。

首批插件

三个已有工具正在按插件契约迁入,目前处于骨架和迁移阶段,还没有对外版本。

额度浮窗当前形态:环形进度、余额与重置倒计时
额度浮窗当前的形态,后续作为插件迁入工具箱。
  • 额度监控。浮窗、托盘项、设置页整体插件化,先做到与现有独立版本功能对等。
  • 截图。把已有的截图工具接进来,共用热键、托盘与设置中枢。
  • 剪贴板多选。历史记录支持多选后再粘贴,而不是一次只能取一条。