Mole 安全嗎:會刪什麼,什麼絕對不動
Mole 是兩個程式,而網路上關於它安不安全的說法,幾乎都只講了其中一個。Mole for Mac 是
mole.fit 上賣的原生 App,mo 是 GitHub 上免費開源的命令列工具,兩邊共用使用者白名單和記錄檔路徑,
但刪除方式並不一樣。判斷哪一種適合你,先看這個差別。
這一頁的 Mole 只指 mole.fit 上的 Mole for Mac,以及它自己的 mo 命令列工具。其他同名的
App 或命令列工具是不同產品,不在這份安全說明的範圍內。
Mac App 會先列出完整的待刪清單,解除安裝 App 會移至垃圾桶,快取預設永久刪除,也可以在設定中改為移至垃圾桶。命令列版永久刪除快取,--dry-run 用來預覽,不是還原;兩邊都會拒絕刪除受保護的路徑。
每一次刪除最後去了哪
| 操作 | Mac App | 命令列 | 事後能不能救回 |
|---|---|---|---|
| 快取清理 | 預設永久刪除,可在設定中改為垃圾桶 | 永久刪除 | 僅移至垃圾桶且尚未清空時可還原 |
| 解除安裝 App 與殘留 | 垃圾桶 | 垃圾桶 | 清空垃圾桶之前都能 |
| 移除啟動項目(使用者 plist) | 垃圾桶 | 垃圾桶 | 清空垃圾桶之前都能 |
| 最佳化維護 | 只直接處理明確列出的項目 | 直接刪除 | 無法還原操作 |
建置產物清掃(mo purge) |
僅可本機重建的部分,依快取移除設定處理 | 永久刪除 | 需重新建置或安裝相依套件,可能需要連網 |
| 垃圾桶本身 | 按定義就是永久 | 永久刪除 | 不能 |
有兩列需要補充。最佳化不走垃圾桶、直接處理的是明確列出的系統維護項目,包括儲存的 App 狀態、
隔離事件資料庫中的記錄、過期的預寫日誌、失效的 LaunchAgent 屬性列表,還有空的 .sfl,每一項都要過自己
的存放時間、大小或是否存在等檢查。這些操作無法還原,系統之後產生新資料也不等於找回原本的內容。App 只列出可在本機重建的部分專案產物,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 |
保護根目錄,移除 App 時只允許核實歸屬的少數快取子目錄 |
/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 的判斷和自己對 這顆磁碟的了解對一遍。
解除安裝會在動手之前給出一份帶路徑、歸屬和大小的計畫。複查本身就是產品,不是一個確認對話框,一個 你沒辦法判斷的項目本來就不適合一鍵清掃,所以還原代價高的那些留成不勾選,而不是把判斷藏在一個總數 後面。
什麼是真的救不回來
兩個版本的快取清理預設都是永久刪除。Mac 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 照樣能跑,只是看到的比較少,而它會把這件事說出來,不會 把一個偏小的數字當成全貌報給你。
完全取用磁碟權限能做什麼、不能證明什麼,值得分開看。它讓掃描能看到受保護的使用者資料位置,掃描和複查的結果才準確,但它不是隨意刪除的許可,每一次刪除仍由上面那幾道關卡決定。它也證明不了一個工具值得信任:它不是防毒軟體認證,不是「Apple 認可的清理工具」標章,也不能說明工具安全,取得完全取用磁碟權限的清理工具照樣可能刪錯東西。只把它授予你本來就信任的工具,用本頁說明的刪除前複查、對受保護路徑的拒絕和日誌來判斷它們,任何工具的這項權限都可以在「系統設定 > 隱私權與安全性 > 完全取用磁碟」中撤銷。
怎麼看 Mole 上次刪了什麼?
查看 ~/Library/Logs/mole/operations.log 的末尾,TRASHED 表示當時移至垃圾桶,能否還原要看檔案是否
仍在裡面;DELETED 與命令列版的 REMOVED 表示永久刪除,SKIPPED 類狀態說明哪些項目未刪除。
授權會改變刪除範圍嗎?
不會。授權只決定破壞性操作能不能執行,從不決定它有多寬,掃描、候選清單和保護規則在啟用前後完全 一樣。