ZTools 是 uTools 的开源实现:一个热键呼出的搜索框,打几个字就能找到应用 / 文件 / 系统设置 / 插件。

它的界面比想象中更简单,打开就是一个输入框,下面按「最佳搜索结果」和「匹配推荐」两段列结果。这篇文章只关心三件事:那个输入框多快 / 常驻内存多少 / 解包出来多大。

三次冷启动的读数差了七倍,这一点先写在前面:1.23 秒和 8.73 秒都是同一台机器上的真实结果。

它就是一个输入框

启动之后屏幕中间出现一个窗口,占位文字写着「搜索应用和指令 / 粘贴文件或图片」。右上角还有一行小字,提示用 Tab 在结果之间跳。

项目数值说明
解包目录317MB
主程序 ZTools.exe223203328字节
resources/app.asar15584018字节,界面与逻辑
JS 堆10.9MB
DOM 节点587个

没有主界面,没有侧边栏,也没有工作台。打字之前,那 587 个 DOM 节点里只有一个品牌图标。

ZTools 3.2.0:启动后的空态,只有一个搜索框和占位文字,没有任何主界面

装之前先知道三件事

它是 Electron,解包就是绿色版

官方发的是 NSIS 安装包,实际内容在 $PLUGINSDIR/app-64.7z 里。用 7-Zip 拆出来之后目录结构完整,直接跑 ZTools.exe 就行,不写注册表、不建服务。

7z x ZTools-3.2.0-win-x64-setup.exe -oZTools
7z x "ZTools/$PLUGINSDIR/app-64.7z" -oZTools/app
ZTools\app\ZTools.exe --remote-debugging-port=9333

解出来 317 MB,其中 223203328 字节是主程序本身,界面和业务逻辑压在 15584018 字节的 app.asar 里。223 MB 里绝大部分是 Chromium 运行时,摊到单个 exe 上就是 212 MB。

窗口默认是隐藏的

用 Win32 枚举这个进程的窗口,能看到 5 个句柄,可它们全部是不可见状态,包括那个名为 ZTools 的主窗口。

这是热键启动器的标准做法:常驻托盘,按热键才显示。对自动化截图有直接影响,PrintWindow 抓不到隐藏窗口,5 个句柄里只有渲染进程那条 CDP 通道能把画面取出来。

插件市场要联网,离线是空白

面板能打开,标签栏显示「设置 / 插件市场 / 通用设置」,但内容区一片空白,等 32 秒也没变化。换成给 Electron 传 --proxy-server 走代理,结果一样。

它要靠远端接口拉插件列表。断网状态下点「插件市场」,2 秒内返回空白,界面不提示失败,DevTools 里也没有报错,这是最容易让人以为装坏了的地方。核心的本地搜索不受影响。

从解包到能打字

启动耗时波动很大

同一个 exe 连开四次,从进程启动到调试端口可用,分别是 2.13 / 1.30 / 8.73 / 1.23 秒。8.73 秒那次跑在磁盘缓存被打散之后,装完系统补丁、清过临时目录的环境就会这样。

次数秒
第一次2.13
第二次1.30
第三次8.73
第四次1.23

热键启动器对启动时间敏感,用户按完热键就要看到输入框。缓存热的时候 1.23 秒能接受,冷的时候 8.73 秒足够让人再按一次,差别是 7.1 倍。

搜索结果的排法

输入之后,结果区固定分三段:最佳搜索结果 / 匹配推荐 / 插件市场搜索。第一段放最可能的 4 个,第二段放相关项,最后一条永远是「插件市场搜索」的入口。

查询命中的应用页面文本条目
chromeGoogle Chrome9
微信微信 / 微信输入法11
截图截图 / 截图工具 / 截图和草图 / 截图工具11
设置ZTools 设置 / 系统设置 / 通用设置 / 远程设置 / 高级显示设置 / 高级键盘设置12
记事本记事本10
steamSteam7
qqQQ / QQ音乐11

中英文都能命中,拼音也行。它的索引来源是开始菜单 / 桌面快捷方式 / 系统设置面板,所以搜「设置」会同时冒出 Windows 自带的 5 个设置页,跟 ZTools 自己的设置混在一起。

ZTools 3.2.0:搜「截图」的结果,最佳搜索结果里 4 个应用,匹配推荐里 1 条插件市场入口
ZTools 3.2.0:搜「微信」命中微信和微信输入法两个应用
ZTools 3.2.0:搜「chrome」命中 Google Chrome

同名结果会挤在一起

搜「截图」,第一段出现 4 个图标:截图 / 截图工具 / 截图和草图 / 截图工具。后两个「截图工具」图标颜色不同,一个带齿轮一个带画笔,说明它们来自不同来源,但显示名一样。

这时候只能靠图标和位置区分,名字帮不上忙。想要确定点,按 Tab 逐个选中看高亮,比用鼠标猜稳,代价是每多一个候选就多按 1 次。

从按键到出结果,最慢 1.15 秒

测法是从按下第一个字符开始,每 15 毫秒轮询一次页面节点数,节点一变就记时。连测 8 次,冷查询和热查询差了两个数量级。

冷查询(进程刚起)
  1099.0 ms
  1155.6 ms
热查询(索引已加载)
  28.7 / 31.0 / 31.3 / 34.2 / 54.3 / 54.4 ms
  中位数 44.3 ms
指标数值说明
最快28.7毫秒
中位44.3毫秒
最慢(热)54.4毫秒
最慢(冷)1155.6毫秒

44 毫秒的体感是「字还没打完,结果已经在了」。1155.6 毫秒那两次发生在进程刚起来、索引还没建完的时候,第一次搜索会明显停顿 1 秒以上,之后就正常。

它占多少资源

这个量级在 Electron 应用里算轻的。界面元素只有 587 个 DOM 节点,JS 堆 10.9 MB,说明大部分工作在原生侧,渲染进程只负责画那个 317 MB 目录里的一个框。

指标数值
JS 堆10.9
DOM 节点587
解包体积317
主程序212

代价落在磁盘上。317 MB 里有 212 MB 是主程序,装 10 个这类工具就是 3 GB。官方也提供 zip 版,不装只解压,占的还是这些空间。

ZTools 3.2.0:最近使用区域列出设置、插件市场、通用设置三项

和 uTools 的差别

它把自己定位成 uTools 的开源实现,功能对齐到能用,生态不在一个量级。插件市场上不去的时候,剩下的差别只有那 44 毫秒的搜索。

对比项ZToolsuTools
源码开源闭源
插件来源自建市场,需联网官方市场,需登录
本地搜索可用,离线也能搜可用
快捷键托盘里配置默认 Alt+Space

按一下就搜这个动作,两者没有区别。把插件堆进工作流这件事,开源的这套还差得远。

什么情况下别装

这类工具的收益完全取决于你每天按多少次热键。一周用两次的人,为 317 MB 换一个搜索框不划算,Windows 自带的开始菜单搜索已经够用。

你的情况结论
每天开十几个应用、切换频繁合适
想要插件生态不合适,市场离线打不开
机器只有 4 GB 内存谨慎,Electron 常驻不轻
只用浏览器和 Office不合适,Win 搜索够用

还有一点容易被忽略。它默认隐藏窗口,靠热键呼出,热键要在托盘菜单里设。第一次装完找不到界面的人不少,看到托盘里那个 Z 图标,右键才知道怎么配。

「开源版 uTools」要看是哪一半:搜索这一半做到了,插件生态那一半目前是空的。