ZTools 深度解析:uTools 终于有靠谱开源平替了,Electron 38 + LMDB + 插件热重载
写在前面
uTools 是国内效率工具圈的标杆——呼出即用、插件生态丰富、用完即走。但 uTools 从 3.0 版本开始推行会员制,越来越多核心功能被锁定在付费墙后。社区里一直有人在找替代品,Rubick 是其中最知名的(4.7K Star),但 Rubick 基于 Electron 18,技术栈相对陈旧,维护频率也大幅降低。
2025 年 12 月,一个新项目悄然出现在 GitHub 上——ZTools。它宣称是「uTools 的开源实现」,但用的不是三年前的技术栈,而是 Electron 38.5 + Node 22.20 + Chrome 140——这是 2026 年 5 月的最新版本。更关键的是,项目创建至今仅 5 个月,已经积累了 946 次提交,最近一次提交就在今天。
这不是一个「学生练手项目」,这是一个认真想替代 uTools 的产品级工程。
一、项目基本信息
| 指标 | 数据 |
|---|---|
| GitHub | ZToolsCenter/ZTools |
| Stars | 2,500 |
| Forks | 211 |
| Commits | 946 |
| 语言 | TypeScript |
| 协议 | MIT |
| 创建时间 | 2025-12-03 |
| 最后推送 | 2026-05-17 |
| 技术栈 | Electron 38.5 + Vue 3 + TypeScript + Pinia + LMDB + WebContentsView |
| 平台 | macOS(Apple Silicon + Intel)、Windows(x64) |
5 个月、946 次提交——平均每天 6 次以上。这种提交频率在开源桌面工具领域相当罕见,说明项目处于高速迭代期。
二、为什么需要 uTools 的开源平替?
uTools 的困境
uTools 走的是「免费基础 + 付费增值」路线。3.0 版本之后:
- 会员专属插件:大量高质量插件需要付费才能使用
- 云同步收费:跨设备数据同步被纳入会员权益
- 广告植入:免费版开始出现推广内容
- 闭源风险:商业公司随时可能调整策略
对于开发者而言,最致命的不是收费,而是闭源。你无法确认插件是否会在某个版本后被强制下架,无法审计代码安全性,更无法在 uTools 停止维护时自行接管。
已有的替代方案
| 项目 | Stars | 技术栈 | 状态 | 问题 |
|---|---|---|---|---|
| Rubick | 4.7K | Electron 18 + Vue | 更新放缓 | 技术栈陈旧,维护不活跃 |
| uTools | - | Electron(闭源) | 商业化 | 付费墙越来越厚 |
| Raymond | <500 | Tauri | 实验性 | 插件生态薄弱 |
| MacAstro | <100 | Swift | 仅 macOS | 功能有限 |
Rubick 是目前最成熟的开源替代,但它在 2023 年之后更新频率明显下降,技术栈停留在 Electron 18(当前最新是 38),且没有 LMDB 这样的高性能存储方案。
ZTools 填补的正是这个空白:用最新技术栈 + 高频迭代 + 完整功能,做一个真正能用的 uTools 替代品。
三、技术架构深度解析
3.1 为什么是 Electron 38?
Electron 在桌面应用领域有一个难以回避的标签:「重」。但 ZTools 团队选择 Electron 而非 Tauri,有其技术考量:
- WebContentsView 架构:Electron 28+ 引入的 WebContentsView 取代了旧的 BrowserView,提供了更精确的视图管理和更好的性能。ZTools 是最早采用这一架构的桌面启动器之一
- Node.js 原生能力:文件系统操作、剪贴板原生调用、子进程管理——这些在 Tauri 的 Rust 后端中需要额外编写绑定
- Chrome 140:最新的 Chromium 内核,意味着 CSS 特性、Web API 支持都是最新的
- 插件生态兼容:uTools 插件本身就是基于 Electron 环境的,Electron 天然兼容
3.2 LMDB:为什么不用 SQLite?
这是 ZTools 最有意思的技术决策。
传统桌面应用普遍使用 SQLite 作为本地数据库(包括 uTools)。但 ZTools 选择了 LMDB(Lightning Memory-Mapped Database):
// LMDB 的核心优势
// 1. 零拷贝读取:内存映射文件,读取速度接近直接内存访问
// 2. 单文件存储:不需要像 SQLite 那样维护 WAL 日志
// 3. 事务安全:支持 ACID 事务,崩溃后自动恢复
// 4. 极低延迟:KV 存储模型,没有 SQL 解析开销
为什么这对启动器场景至关重要?
启动器的核心交互是「输入关键词 → 实时搜索 → 即时反馈」。这意味着每次按键都可能触发一次数据库查询。在 SQLite 中,即使加了索引,一次查询也需要 0.1-1ms;而 LMDB 的 KV 查找可以在 0.01ms 以下完成。在用户快速输入时,这种 10 倍的性能差异会直接体感到输入是否「跟手」。
3.3 整体架构
┌─────────────────────────────────────────┐
│ 主进程 (Main) │
│ ┌──────────┐ ┌───────────┐ │
│ │ App Entry │ │ Single │ │
│ │ 单例锁 │ │ Instance │ │
│ └──────────┘ └───────────┘ │
│ ┌──────────┐ ┌───────────┐ │
│ │ App │ │ ZPX File │ │
│ │ Watcher │ │ Assoc │ │
│ │ chokidar │ │ 文件关联 │ │
│ └──────────┘ └───────────┘ │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 插件管理引擎 │ │
│ │ ┌─────┐ ┌─────┐ ┌─────────┐ │ │
│ │ │ LMDB│ │WebCV│ │ Plugin │ │ │
│ │ │数据库│ │视图 │ │ Lifecycle│ │ │
│ │ └─────┘ └─────┘ └─────────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
↕ IPC
┌─────────────────────────────────────────┐
│ 渲染进程 (Renderer) │
│ ┌──────────┐ ┌───────────┐ │
│ │ Vue 3 + │ │ Pinia │ │
│ │ TypeScript│ │ State │ │
│ └──────────┘ │ Management│ │
│ └───────────┘ │
│ ┌──────────┐ ┌───────────┐ │
│ │ Search │ │ Clipboard │ │
│ │ Engine │ │ Manager │ │
│ └──────────┘ └───────────┘ │
│ ┌──────────┐ ┌───────────┐ │
│ │ Theme │ │ Super │ │
│ │ System │ │ Panel │ │
│ └──────────┘ └───────────┘ │
└─────────────────────────────────────────┘
架构的核心设计理念:主进程管资源,渲染进程管交互。LMDB 数据库、插件生命周期、文件系统监听全部在主进程完成,渲染进程只负责 UI 展示和用户交互,通过 IPC 通信。这种分离保证了 UI 流畅性不受后台任务影响。
3.4 插件热重载开发体验
ZTools 对插件开发者非常友好:
# 开发主进程 + 设置内置插件(并行热重载)
pnpm dev
# 仅启动主进程
pnpm dev:main
# 仅启动 setting 内置插件开发服务器
pnpm dev:setting
# 全部类型检查
pnpm typecheck
# 运行测试(vitest)
pnpm test
热重载支持意味着你修改插件代码后,不需要重启 ZTools 就能看到效果。配合 TypeScript 的完整类型定义(ztools-api-types 子模块),开发体验接近 VS Code 扩展开发。
四、核心功能深度解析
4.1 快速启动:拼音 + 正则 + 历史
ZTools 的搜索不是简单的文件名匹配,而是多维度搜索:
- 拼音搜索:输入「sj」可以匹配「设计」「时间」「数据」
- 正则匹配:支持正则表达式高级搜索
- 历史记录:记录使用频率,高频应用优先展示
- 固定应用:常用应用固定在搜索结果顶部
快捷键:Option+Z(macOS)/ Alt+Z(Windows)——比 uTools 的 Alt+Space 更不容易误触。
4.2 插件系统:UI 插件 + 无界面插件
ZTools 支持两种插件类型,通过 plugin.json 配置:
UI 插件(有界面):
{
"name": "my-plugin",
"version": "1.0.0",
"description": "我的插件",
"main": "index.html",
"logo": "logo.png",
"features": [{
"code": "search",
"explain": "搜索功能",
"cmds": ["搜索"]
}]
}
无界面插件(后台任务):
{
"name": "my-headless-plugin",
"version": "1.0.0",
"description": "后台处理插件",
"features": [{
"code": "process",
"explain": "后台处理",
"cmds": ["处理"]
}]
}
无界面插件没有 main 字段,通过 preload.js 导出 mode: 'none' 的处理器。这种设计让 ZTools 不仅仅是一个启动器,更像是一个自动化工作流平台——你可以在后台跑 OCR、文件处理、API 调用等任务,无需打开任何窗口。
4.3 插件 API 生态
ZTools 提供的 API 覆盖了桌面效率工具的核心需求:
| API 类别 | 功能 |
|---|---|
| 数据库 | 持久化 KV 存储(db.get / db.put / db.delete) |
| 剪贴板 | 读取/写入剪贴板文本和图片 |
| 通知 | 系统通知推送 |
| 模拟输入 | 键盘输入、鼠标点击自动化 |
| 文件操作 | 读取/写入/监听文件变化 |
| 窗口控制 | 调整窗口大小、位置、置顶 |
| 网络请求 | HTTP 客户端 |
| Shell | 执行系统命令 |
插件数据隔离是另一个亮点——每个插件的数据库是独立的,插件 A 无法读取插件 B 的数据。这解决了 uTools 插件生态中常见的隐私问题。
4.4 剪贴板管理:跨平台原生实现
剪贴板管理是桌面效率工具的「杀手级功能」。ZTools 的实现不是 Electron 的 clipboard API 包装,而是原生平台调用:
- macOS:通过 NSPasteboard 读取系统剪贴板,支持图片富文本
- Windows:通过 Win32 API 读取剪贴板链
这种原生实现意味着:即使 ZTools 没有启动,剪贴板历史也能持续记录(通过后台守护进程)。这是 Electron 纯 JS 方案做不到的。
功能包括:历史记录、关键词搜索、图片预览、分组管理、一键清空。
4.5 超级面板 + 分离窗口
超级面板是 ZTools 的特色功能——选中文本后,可以呼出一个浮动操作面板,直接对选中的内容执行操作(翻译、搜索、编码转换等),不需要先复制再打开插件。
分离窗口允许插件以独立窗口形式运行,类似于 Chrome 的弹出窗口。这意味着你可以同时使用多个插件,不必在搜索框里来回切换。每个分离窗口在 Windows 任务栏有独立图标,在 macOS Dock 中也有独立入口。
4.6 主题系统
// 6 种主题色 × 3 种模式 = 18 种视觉组合
const themes = {
modes: ['system', 'light', 'dark'],
colors: ['blue', 'green', 'purple', 'red', 'orange', 'cyan']
}
主题支持系统跟随、亮色、暗色三种模式,6 种主题色可切换。实现方式是 CSS 变量 + Element Plus 主题定制,而非简单的 CSS 覆盖。
4.7 数据同步:WebDAV
ZTools 支持 WebDAV 协议同步数据,这意味着你可以使用任何 WebDAV 服务(坚果云、Nextcloud、群晖 NAS)来同步配置和插件数据,不依赖任何云服务商。比 uTools 的私有云同步更开放、更可控。
4.8 进阶能力
除了上述核心功能,ZTools 还集成了一些进阶能力:
- MCP Server:支持 Model Context Protocol,可以接入 AI Agent 工具链
- AI 集成:内置 AI 对话能力,可直接在搜索框中与 AI 交互
- ZBrowser:浏览器自动化工具,可以编写脚本控制浏览器
- 离线翻译:本地翻译引擎,无需网络
- 悬浮球:类似手机悬浮球的快捷入口
- 网页快开:快速打开常用网页
这些功能体现了 ZTools 的定位不止于「启动器」,而是一个桌面效率中枢。
五、插件市场与技术实现
5.1 插件分发机制
ZTools 的插件市场不依赖中央服务器,而是基于 GitHub Releases:
- 插件托管在 ZTools-plugins
- 插件列表通过
plugins.json文件获取 - 插件包格式:ZIP 压缩包(包含
plugin.json和插件文件) - 版本对比:语义化版本号自动比较
- 升级策略:先卸载旧版本再安装新版本
这种「GitHub 即分发平台」的设计意味着:
- 不需要维护独立的服务器
- 插件审核由社区 PR 完成(开源透明)
- 任何人都可以发布插件(fork → PR → 合并)
5.2 应用内更新
ZTools 支持完整的自动更新流程:
- 启动时自动检查
latest.yml - 发现新版本后提示下载
- 下载平台对应的更新包(
update-darwin-arm64-x.x.x.zip/update-win32-x64-x.x.x.zip) - 通过独立的
ztools-updater程序替换app.asar - 自动重启应用
更新程序是独立进程,即使主应用崩溃也能完成更新。macOS 和 Windows 各有独立的 updater 实现。
六、ZTools vs uTools vs Rubick 全面对比
| 维度 | ZTools | uTools | Rubick |
|---|---|---|---|
| 开源 | ✅ MIT | ❌ 闭源 | ✅ MIT |
| Electron 版本 | 38.5(最新) | 不公开 | 18(陈旧) |
| 本地数据库 | LMDB(极快) | SQLite | SQLite |
| 插件 API 完整度 | 完整 TS 类型 | 完整(私有) | 基础 |
| 插件热重载 | ✅ | ❌ | 部分 |
| 无界面插件 | ✅ | ✅ | ❌ |
| 数据同步 | WebDAV(开放) | 私有云(付费) | 无 |
| 剪贴板 | 原生跨平台 | JS 实现 | JS 实现 |
| 超级面板 | ✅ | ✅(付费) | ❌ |
| 分离窗口 | ✅ | ✅ | ❌ |
| MCP Server | ✅ | ❌ | ❌ |
| AI 集成 | ✅ | 部分 | ❌ |
| 插件数量 | 增长中 | 最多 | 较少 |
| 维护频率 | 每天 6+ commits | 商业团队 | 低频 |
| 价格 | 免费 | 会员制 | 免费 |
七、开发者的社区贡献
ZTools 的代码规范做得相当到位:
- Git Hooks:提交前自动格式化代码
- TypeScript 全覆盖:主进程和渲染进程都有完整类型定义
- Vitest 测试:支持 watch 模式的单元测试
- ESLint + Prettier:统一的代码风格
- CLAUDE.md:专门为 AI 辅助开发提供的项目说明文件
CLAUDE.md 是一个有趣的细节——项目专门写了一份给 AI 编程助手看的文档,说明项目结构、技术栈和开发流程。这暗示团队在日常开发中大量使用 AI 辅助编程,也从侧面解释了为什么 5 个月能有 946 次提交。
八、局限性与挑战
短板
- 插件生态薄弱:uTools 积累了数年的插件生态,ZTools 的插件市场刚刚起步
- 仅支持 macOS + Windows:Linux 支持虽然有构建脚本,但官方文档标注为实验性
- 2,500 Star:在开源桌面工具领域属于新项目,社区规模有限
- 团队背景不明:GitHub 上没有清晰的团队介绍和贡献者说明
- Electron 内存占用:相比 Tauri 等方案,内存占用依然较高(约 150-200MB 空闲状态)
机会
- uTools 会员制争议:大量用户正在寻找替代品
- 技术代差:Electron 38 vs Rubick 的 Electron 18,差距巨大
- LMDB 性能优势:在搜索速度上有明显的体感提升
- MCP + AI 集成:紧跟 2026 年 AI Agent 趋势
- WebDAV 开放同步:不绑架用户数据
九、适用人群
| 人群 | 推荐程度 | 理由 |
|---|---|---|
| 受够了 uTools 付费墙的现有用户 | ⭐⭐⭐⭐⭐ | 最直接的开源替代 |
| 开发者(想自己写插件) | ⭐⭐⭐⭐⭐ | TypeScript 全覆盖 + 热重载 |
| 隐私敏感用户 | ⭐⭐⭐⭐⭐ | MIT 开源 + 数据隔离 + WebDAV |
| uTools 会员用户(不需要省钱) | ⭐⭐⭐ | 插件生态差距明显 |
| Linux 用户 | ⭐⭐ | 支持不完善 |
十、总结
ZTools 是 2026 年桌面效率工具领域最值得关注的新项目。
它不是简单复制 uTools 的功能,而是在技术架构上做了全面升级:Electron 38 的 WebContentsView 架构、LMDB 的极低延迟搜索、原生剪贴板管理、MCP Server 接入 AI Agent 工具链……这些技术决策背后是对「桌面启动器应该是什么样」的重新思考。
5 个月 946 次提交的开发节奏,说明这不是一个玩票项目。而 MIT 协议 + 完整 TypeScript 类型定义 + 插件热重载的开发体验,也昭示着团队对社区贡献的认真态度。
uTools 的闭源商业化催生了 Rubick,Rubick 的技术停滞催生了 ZTools。 开源社区的力量在于:总有人会用更好的技术方案来回应商业产品的倒退。
如果你正在寻找 uTools 的开源替代,ZTools 值得一试。
项目信息
- GitHub:https://github.com/ZToolsCenter/ZTools
- 插件仓库:https://github.com/ZToolsCenter/ZTools-plugins
- 开发者文档:https://ztoolscenter.github.io/ZTools-doc/
- 协议:MIT(免费开源)
- 下载:macOS DMG / Windows EXE,Releases 页面
- 快捷键:
Option+Z(macOS)/Alt+Z(Windows)