Mole 安全嗎:會刪什麼,什麼絕對不動
Mole 是兩個程式,而網路上關於它安不安全的說法,幾乎都只講了其中一個。Mole for Mac 是
mole.fit 上賣的原生 App,mo 是 GitHub 上免費開源的命令列工具,兩邊共用使用者白名單和記錄檔路徑,
但刪除方式並不一樣。判斷哪一種適合你,先看這個差別。
這一頁的 Mole 只指 mole.fit 上的 Mole for Mac,以及它自己的 mo 命令列工具。其他同名的
App 或命令列工具是不同產品,不在這份安全說明的範圍內。
簡單來說,Mac App 會先列出完整的待刪項目,一般刪除會移至垃圾桶,檔案仍在裡面時通常可以還原;命令列
則直接永久刪除快取檔案,給的不是還原而是 --dry-run。兩邊都有一組固定路徑誰來要求都不刪。
每一次刪除最後去了哪
| 操作 | Mac App | 命令列 | 事後能不能救回 |
|---|---|---|---|
| 快取清理 | 垃圾桶 | 永久刪除 | App:清空垃圾桶之前都能 |
| 解除安裝 App 與殘留 | 垃圾桶 | 垃圾桶 | 清空垃圾桶之前都能 |
| 移除啟動項目(使用者 plist) | 垃圾桶 | 垃圾桶 | 清空垃圾桶之前都能 |
| 最佳化維護 | 只直接處理明確列出的項目 | 直接刪除 | 無法還原操作 |
建置產物清掃(mo purge) |
不提供 | 永久刪除 | 需重新建置或安裝相依套件,可能需要連網 |
| 垃圾桶本身 | 按定義就是永久 | 永久刪除 | 不能 |
有兩列需要補充。最佳化不走垃圾桶、直接處理的是明確列出的系統維護項目,包括儲存的 App 狀態、
隔離事件資料庫中的記錄、過期的預寫日誌、失效的 LaunchAgent 屬性列表,還有空的 .sfl,每一項都要過自己
的存放時間、大小或是否存在等檢查。這些操作無法還原,系統之後產生新資料也不等於找回原本的內容。mo purge 在 App 裡沒有對應功能
也是故意的,下面第二張圖講的就是這件事。
三道關卡,中間那道才是要緊的
候選不是從掃描結果一步走到磁碟上的,它要先過授權關卡,再過路徑驗證,最後才到執行器,而且這幾層 互不信任,每一層都自己重新查一遍,不假設上一層已經判對了。
安全真正落腳的地方是路徑驗證,它跑在刪除的那一刻而不是掃描的那一刻。這點很要緊,因為兩個時刻中間 可能隔了幾分鐘,磁碟不會在這幾分鐘裡停下來等你,檔案在你看過之後換了身分,刪除就不該憑一個過期的 判斷繼續走。寫這篇文章的這台機器上,日誌裡就有這麼一行:
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。
App 比命令列窄,而且一直朝同一個方向窄
兩邊的積極程度不一樣,差異永遠朝同一邊。最清楚的例子是相依目錄,mo purge 會刪 node_modules、
Pods、venv 和 vendor,而 App 把它們全部剔掉,只提供在本機編譯就能重建的東西。App 還把 App
資料掃描擋在完全取用磁碟權限後面,把能還原但代價高的項目做成預設不勾的複查列,並且像上面說的那樣
在刪除當下重新驗證一次路徑。
所以在 mo clean 裡看到一類 App 從來不提供的東西,是預期之內,不是功能少了;想要更寬的清掃就去
終端機,而 --dry-run 是你在它真的發生之前先看一眼的辦法。
讀懂到底發生了什麼
兩個程式使用相同的記錄檔路徑 ~/Library/Logs/mole/operations.log。App 以定位字元分隔欄位,命令列版
則把時間與命令放在方括號內,後面列出狀態、路徑及補充說明,兩者的狀態名稱也有差異:
| 狀態 | 意思 |
|---|---|
TRASHED |
當時已移至垃圾桶 |
DELETED |
已永久刪除 |
REMOVED |
命令列版已永久刪除 |
SKIPPED |
拒絕了,原因在下一個欄位 |
SKIPPED_RUNNING |
所屬 App 當時正在執行 |
SKIPPED_MISSING |
執行器處理到時路徑已經不在了 |
SKIPPED_ACTIVE_UPDATE |
那個 App 當時正在更新 |
FAILED |
試過了,沒成功 |
記錄描述的是當時發生的事,不是檔案目前的位置。標為 TRASHED 的檔案若仍在垃圾桶內,通常可以
還原,但之後也可能已被還原、移走或清空。能否找回,仍要打開垃圾桶確認。
複查這一步
Mac App 的掃描免費,不必購買授權,也不限時間;掃描受保護的資料仍需要相應的系統權限。每個工具都會顯示掃描結果,刪除等操作需要 付費授權或剩餘試用次數,每個破壞性工具可以先試用兩次,所以付錢之前你完全可以拿 Mole 的判斷和自己對 這顆磁碟的了解對一遍。
解除安裝會在動手之前給出一份帶路徑、歸屬和大小的計畫。複查本身就是產品,不是一個確認對話框,一個 你沒辦法判斷的項目本來就不適合一鍵清掃,所以還原代價高的那些留成不勾選,而不是把判斷藏在一個總數 後面。
什麼是真的救不回來
這件事上說清楚比安撫重要。快取清理本來就是要永久的,即使在 App 裡檔案先進垃圾桶,這個操作的意義 仍然是讓 App 把需要的東西重新寫一遍,事後清空垃圾桶算收尾的一部分,而命令列只是把中間這一步直接 省了。
mo purge 永久刪除建置產物,所以它是最該先跑一次 --dry-run 的命令,上面列的那批最佳化刪除也是
立刻生效的。重新產生快取或建置產物不等於還原被刪檔案,要找回原始檔案,應檢查 Time Machine 或其他備份。
這些說法你自己怎麼驗
- 讀日誌。
~/Library/Logs/mole/operations.log,哪個前端做的事就由哪個前端寫,狀態詞表在上面。 - 先預覽終端機操作。 clean、uninstall 和 optimize 命令支援
--dry-run,可以先查看預計刪除的項目。 - 讀程式碼。 命令列版按 GPL-3.0 開源,刪除邏輯也在裡面。
- 驗一下你下載的那份。 Mac App 有 Developer ID 簽章而且過了公證,
spctl -a -t exec -vv /Applications/Mole.app檢查的是這份 App 是否通過 Gatekeeper 評估,不是逐位元組比對它與發布檔案是否相同。 - 看網路。 兩個程式都不送遙測。
別處可能看到的說法
有三種描述流傳得很廣,都來自把終端機工具和 App 當成同一個產品。
「這是個終端機工具,沒有預覽也沒有還原。」 mo clean 有 --dry-run 預覽,但快取刪除是永久的。Mac App 是圖形介面、先看後刪,
一般刪除進垃圾桶。
「Mole 是免費的。」 命令列版免費且開源,Mole for Mac 是一次性 $19,涵蓋兩台 Mac,含終身更新與 14 天退款。
「命令列版是 MIT 授權。」 它是 GPL-3.0。
延伸閱讀
- Mole CLI 還是 Mole for Mac:兩個前端各自能做什麼 對方做不到的事,以及同時安裝會怎樣。
- Mac 清理工具永遠不該刪什麼:同一個 問題,問的是整個品類而不是某一個工具。
常見問題
Mole 會把刪掉的檔案放進垃圾桶嗎?
Mac App 裡一般快取清理和 App 解除安裝都進垃圾桶,包括那些需要管理員權限的刪除;例外是最佳化直接 處理的一小批系統維護項目,這些操作無法還原。免費的命令列工具會永久刪除快取,App 解除安裝與殘留刪除則使用垃圾桶。
Mole 會刪掉 macOS 需要的東西嗎?
系統根目錄、隱私與登入項目資料庫這類受保護的系統狀態、音訊外掛、下載回來的模型權重、正在用的 Python 環境,都會在任何刪除開始之前被拒絕,而且 App 會在刪除當下重新驗證每條路徑,不相信掃描時的 結論。
免費的命令列版和 Mac App 是同一個程式嗎?
不是。兩套獨立實作,共用一套清理用語、一份白名單和一份日誌,App 是用 Swift 重寫的,不是命令列版 的外殼,在會刪什麼這件事上刻意更窄。
Mole 需要完全取用磁碟權限嗎,為什麼?
App 資料掃描擋在這個權限後面,沒有它 Mole 照樣能跑,只是看到的比較少,而它會把這件事說出來,不會 把一個偏小的數字當成全貌報給你。
怎麼看 Mole 上次刪了什麼?
查看 ~/Library/Logs/mole/operations.log 的末尾,TRASHED 表示當時移至垃圾桶,能否還原要看檔案是否
仍在裡面;DELETED 與命令列版的 REMOVED 表示永久刪除,SKIPPED 類狀態說明哪些項目未刪除。
授權會改變刪除範圍嗎?
不會。授權只決定破壞性操作能不能執行,從不決定它有多寬,掃描、候選清單和保護規則在啟用前後完全 一樣。