Home

MacEverything:macOS上的文件名搜索工具(fork自joshua-wu)

https://ying-zhang.cn/misc/2026-maceverything/

MacEverything 是我从 joshua-wu/MacEverything fork 出来的一个 macOS 文件搜索工具。原项目的方向很清楚:做一个类似 Everything 的本地文件名搜索工具,在 macOS 上尽量做到轻量、快速、可用。我 fork 它的原因也很直接:日常使用中确实需要这样一个工具,但我希望它更适合中文环境、大目录索引和自己的使用习惯。

为什么 fork

Everything 在 Windows 上的体验很好,输入几个字符就能从海量文件里找到目标。macOS 上也有 Spotlight、Finder 搜索和一些第三方工具,但在“只想快速按文件名或路径过滤本地文件”这个场景里,我还是希望有一个更直接的工具。

这次 fork 的直接原因,是 originv1.2 发布包里存在依赖库缺失问题。应用使用了 RE2 正则库,但 DMG 没有把对应的动态库一起打包进去,在没有安装相同 Homebrew 依赖路径的机器上会启动失败。要让它成为一个可以直接下载使用的应用,首先需要修复发布构建,把依赖库正确放进 app bundle。

原版 MacEverything 已经奠定了算法的主要基础,提供了优秀的搜索能力和功能框架。在修复发布包之外,我继续开发的主要原因是:

做了哪些功能

这次 fork 后的开发大致集中在几个方向。

首先是搜索能力。除了普通文件名搜索,还增强了路径搜索、正则搜索、glob 风格匹配和搜索语法帮助。中文文件名方面,增加了拼音首字母搜索和高亮,例如用缩写就可以找到对应的中文文件名。搜索结果超过上限时,也改成明确提示“结果已被限制”,避免把上限误认为真实总数。

其次是索引和内存。索引大量文件时,内存占用会很明显,所以增加了内存占用统计、低内存模式,以及可单独开关的“拼音首字母搜索”和“加速路径搜索”。后来又把路径索引改成存储稳定的路径哈希,避免在内存里保存更多完整路径字符串。启动流程也做了调整:先加载基础记录,让界面和 HTTP 状态接口尽早可响应,再在后台构建可选的搜索加速索引。

第三是设置和界面。现在设置里可以配置索引范围、系统文件、隐藏文件、应用包内部内容、内容索引、搜索选项、快捷键、HTTP API、MCP 集成等。主界面会显示索引文件数和近似内存占用,搜索窗口也增加了设置入口、帮助入口和多窗口支持。托盘图标也重新画过,并且专门做了一个本地 HTML 页面预览 18px 小尺寸下的效果。

最后是发布体验。GitHub Actions 会构建 release 版 app,自动打包 RE2 动态库,并生成 DMG。这样下载的应用不需要依赖本机 Homebrew 里的动态库,也避免了 v1.2 那类“在开发机能运行、换一台机器就缺库”的问题。

开发过程

开发过程基本是边用边改。一开始是补中文界面和设置项,随后发现路径搜索、中文搜索、正则搜索都有不少细节可以打磨。再往后,当索引规模扩大到一百多万文件时,内存占用就变成了主要问题,于是增加了 /api/memory 这样的诊断接口,用实际数据看哪些结构占内存,再逐步做低内存模式、可选加速器和路径哈希化。

这次开发中,主要的代码实现、问题定位、构建发布和若干轮细节调整,基本都是在 Codex 协助下完成的。我更多是在提出需求、试用新版、反馈问题和决定取舍:例如哪些搜索选项应该默认启用,哪些内存优化值得做,托盘图标在实际菜单栏里是否清楚,以及发布说明应该怎样写。这个过程有点像把一个已有基础的开源项目,交给一个可以持续读代码、改代码、跑构建的编程助手,再通过实际使用反馈不断收窄目标。

有些改动是功能性的,比如拼音首字母搜索、路径搜索加速、HTTP API;有些则更偏体验,比如设置项的中文文案、数字输入框、搜索结果上限提示、托盘图标。整体上我希望它保持一个简单工具的形态:打开后尽快可用,输入搜索条件,得到结果,不需要太多解释。

下载

目前这个版本仍然是我个人使用导向的 fork。它不是一个完整替代 Spotlight 的工具,更适合“按文件名、路径和简单条件快速找文件”的场景。如果你也有类似需求,可以下载试试。