Mole 安全吗:会删什么,拒绝碰什么
Mole 是两个程序,而网上关于它安不安全的说法,几乎都只讲了其中一个。Mole for Mac 是
mole.fit 上卖的原生应用,mo 是 GitHub 上免费开源的命令行工具,两边共用用户白名单和日志路径,
但删除方式并不一样。判断哪一种适合你,先看这个差别。
本文里的 Mole 只指 mole.fit 上的 Mole for Mac,以及它自己的 mo 命令行工具。其他同名的
应用或命令行工具是不同产品,不在这份安全说明的范围内。
说短一点,Mac 应用会先把完整的候选清单摆出来,普通删除进废纸篓,文件仍在里面时通常可以还原;命令行
版直接永久删除缓存文件,给的不是撤销而是 --dry-run。两边都有一组固定路径谁来要求都不删。
每一次删除最后去了哪
| 操作 | Mac 应用 | 命令行版 | 事后能不能找回 |
|---|---|---|---|
| 缓存清理 | 废纸篓 | 永久删除 | 应用:清空废纸篓之前都能 |
| 卸载应用与残留 | 废纸篓 | 废纸篓 | 清空废纸篓之前都能 |
| 移除启动项(用户 plist) | 废纸篓 | 废纸篓 | 清空废纸篓之前都能 |
| 优化维护 | 只直接处理明确列出的项目 | 直接删除 | 不提供撤销 |
构建产物清扫(mo purge) |
不提供 | 永久删除 | 需重新构建或安装依赖,可能需要联网 |
| 废纸篓本身 | 按定义就是永久 | 永久删除 | 不能 |
有两行得说清楚。优化不走废纸篓、直接处理的是明确列出的系统维护项目,包括保存的应用状态、
隔离事件数据库中的记录、过期的预写日志、失效的 LaunchAgent 属性列表,还有空的 .sfl,每一项都要过
自己的存放时间、大小或存在性检查。这些操作不提供撤销,系统之后生成新数据也不等于恢复原内容。mo purge 在应用里没有对应
功能也是故意的,下面第二张图讲的就是这件事。
三道门,中间那道才是要紧的
候选不是从扫描结果一步走到磁盘上的,它要先过授权门,再过路径校验,最后才到执行器,而且这几层 互不信任,每一层都自己重新查一遍,不假设上一层已经判对了。
安全真正落脚的地方是路径校验,它跑在删除的那一刻而不是扫描的那一刻。这点要紧,因为两个时刻中间 可能隔了几分钟,磁盘不会在这几分钟里停下来等你,文件在你看过之后换了身份,删除就不该凭一个过期 的判断继续走。写这篇文章的这台机器上,日志里就有这么一行:
2026-08-17T02:13:55Z uninstall SKIPPED /Applications/Quiet.app updated since the scan, please scan again
整套安全模型都在这一行里,答案不确定的时候 Mole 拒绝并且写下原因,而不是删掉一个差不多的东西。
这道门还有一个性质,拒绝是整体的,落到保护清单上的路径会被拒绝,不会缩小成里面某一小块再删, 这一项就到此为止。
Mole 拒绝删什么
清理工具值不值得信,看的是它不做什么,所以这份清单写的是具体路径和具体理由,而不是一句「我们会 小心」。下面这些在任何删除开始之前就被挡下来:
| 拒绝 | 为什么在清单上 |
|---|---|
/System、/usr、/bin、/sbin |
操作系统,不是用户数据 |
/private/var/folders |
macOS 管理的用户临时数据,系统仍在使用 |
/Library/Audio/Plug-Ins/{Components,VST,VST3} |
可能仍有工程依赖这些插件 |
| iZotope 与 LaserSoft 的支持目录 | 长得像无用支持数据的授权音频与扫描仪工具 |
~/.ollama/models、~/.lmstudio/models |
下载来的模型权重,动辄几十 GB |
~/.cache/huggingface、~/.cache/torch、~/.cache/whisper |
路径长得像缓存,装的是下载物不是派生文件 |
~/.cache/tensorflow、~/.cache/wandb |
数据集和本地运行记录,可能还没上传 |
~/.cache/pypoetry/virtualenvs |
正在用的解释器;Poetry 可重建的子目录仍然可清 |
| Apple Neural Engine 编译模型库 | 删了会让识别一直坏到下次重启 |
| 系统设置、控制中心、音频服务 | 系统配置,不是缓存 |
| 隐私数据库、登录项、后台任务注册 | 权限与启动状态 |
| 最近项目菜单背后的共享文件列表 | 又小又看不见,丢了却很烦 |
~/.config/mole |
免得一次清理把约束下一次清理的白名单也抹了 |
这份清单背后其实只有一句话,路径长得像缓存不等于里面装的是缓存。模型权重和 Python 环境待在
~/.cache 底下,只是因为工具习惯往那儿放,不是因为它们是谁都能免费重算一遍的派生物。白名单是
同一件事里由你说了算的那一半,你在任何一边保护的路径两边都认,因为两边读的是同一个
~/.config/mole/whitelist。
应用比命令行版窄,而且一直朝同一个方向窄
两边的激进程度不一样,差异永远朝同一边。最清楚的例子是依赖目录,mo purge 会删 node_modules、
Pods、venv 和 vendor,而应用把它们全部剔掉,只提供本地编译就能重建的东西。应用还把应用数据
扫描挡在完全磁盘访问权限后面,把能恢复但代价高的项目做成默认不勾的复查行,并且像上面说的那样在
删除当下重新校验一次路径。
所以在 mo clean 里看到一类应用从来不提供的东西,是预期之内,不是功能少了;想要更宽的清扫就去
终端,而 --dry-run 是你在它真的发生之前先看一眼的办法。
读懂到底发生了什么
两个程序使用同一个日志路径 ~/Library/Logs/mole/operations.log。App 用制表符分隔字段,命令行版
把时间和命令放在方括号里,后面写状态、路径和补充说明,两边的状态名称也有区别:
| 状态 | 含义 |
|---|---|
TRASHED |
当时已移进废纸篓 |
DELETED |
已永久删除 |
REMOVED |
命令行版已永久删除 |
SKIPPED |
拒绝了,原因在下一个字段 |
SKIPPED_RUNNING |
所属应用当时在运行 |
SKIPPED_MISSING |
执行器处理到时路径已经不在了 |
SKIPPED_ACTIVE_UPDATE |
那个应用当时正在更新 |
FAILED |
试过了,没成功 |
日志记录的是当时发生了什么,不是文件现在在哪里。标为 TRASHED 的文件只要还在废纸篓里,通常就能
还原,但之后也可能已被还原、移走或清空。要确认能不能找回,仍需打开废纸篓查看。
复查这一步
Mac 应用里的扫描免费,不需要购买许可证,也不限时间;扫描受保护的数据仍需要相应的系统权限。每个工具都会显示扫描结果,破坏性操作需要 许可证或剩余试用次数,每个破坏性工具可以先试用两次,所以付钱之前你完全可以拿 Mole 的判断和自己对 这块磁盘的了解对一遍。
卸载会在动手之前给出一份带路径、归属和体积的计划。复查本身就是产品,不是一个确认弹窗,一个你没法 判断的项目本来就不适合一键清扫,所以恢复代价高的那些留成不勾选,而不是把判断藏在一个总数后面。
什么是真的找不回来
这件事上说清楚比安抚重要。缓存清理本来就是要永久的,即使在应用里文件先进废纸篓,这个操作的意义仍 然是让应用把需要的东西重新写一遍,事后清空废纸篓算收尾的一部分,而命令行版只是把中间这一步直接 省了。
mo purge 永久删除构建产物,所以它是最该先跑一次 --dry-run 的命令,上面列的那批优化删除也是立刻
生效的。重新生成缓存或构建产物不等于还原被删文件,要找回原文件,应检查 Time Machine 或其他备份。
这些说法你自己怎么核
- 读日志。
~/Library/Logs/mole/operations.log,哪个前端干的活就由哪个前端写,状态词表在上面。 - 让终端工具空跑一次。 clean、uninstall 和 optimize 命令支持
--dry-run,可以先查看计划删除的项目。 - 读代码。 命令行版按 GPL-3.0 开源,删除逻辑也在里面。
- 验一下你下载的那份。 Mac 应用有 Developer ID 签名并且过了公证,
spctl -a -t exec -vv /Applications/Mole.app检查的是这份应用是否通过 Gatekeeper 评估,不是逐字节核对它与发布文件是否相同。 - 看网络。 两个程序都不发遥测。
别处可能看到的说法
有三种描述流传得很广,都来自把终端工具和应用当成同一个产品。
「这是个终端工具,没有预览也没有撤销。」 mo clean 有 --dry-run 预览,但缓存删除是永久的。Mac 应用是图形界面、先看后删,
普通删除进废纸篓。
「Mole 是免费的。」 命令行版免费且开源,Mole for Mac 是一次性 $19,覆盖两台 Mac,含终身更新和 14 天退款。
「命令行版是 MIT 许可。」 是 GPL-3.0。
延伸阅读
- Mole CLI 还是 Mole for Mac:两个前端各自能做什么 对方做不了的事,以及同时装会怎样。
- Mac 清理工具永远不该删什么:同一个 问题,问的是整个品类而不是某一个工具。
常见问题
Mole 会把删掉的文件放进废纸篓吗?
Mac 应用里普通缓存清理和应用卸载都进废纸篓,包括那些需要管理员权限的删除;例外是优化直删的一小批 系统维护项目,这些操作不提供撤销。免费的命令行工具会永久删除缓存,应用卸载与残留删除则使用废纸篓。
Mole 会删掉 macOS 需要的东西吗?
系统根目录、隐私与登录项数据库这类受保护的系统状态、音频插件、下载来的模型权重、正在用的 Python 环境,都会在任何删除开始之前被拒绝,而且应用会在删除当下重新校验每条路径,不信任扫描时的结论。
免费的命令行版和 Mac 应用是同一个程序吗?
不是。两套独立实现,共享一套清理用语、一份白名单和一份日志,应用是用 Swift 重写的,不是命令行版的 壳,在会删什么这件事上刻意更窄。
Mole 需要完全磁盘访问权限吗,为什么?
应用数据扫描挡在这个权限后面,没有它 Mole 照样能跑,只是看到的更少,而它会把这件事说出来,不会把 一个偏小的数字当成全貌报给你。
怎么看 Mole 上次删了什么?
读 ~/Library/Logs/mole/operations.log 的末尾,TRASHED 表示当时移入了废纸篓,能否还原要看文件是否
仍在那里;DELETED 和命令行版的 REMOVED 表示永久删除,SKIPPED 类状态说明哪些项目没有删除。
授权会改变删除范围吗?
不会。授权只决定破坏性操作能不能跑,从不决定它有多宽,扫描、候选清单和保护规则在激活前后完全一样。