# Mole 安全嗎：會刪什麼，什麼絕對不動

> Mole 會刪什麼、什麼絕對不動、刪掉的檔案去哪，以及這些答案在 Mac App 與命令列工具之間有何不同。

Published: 2026-08-17 | Updated: 2026-10-04

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` 的範圍更廣，下面第二張圖講的就是這個差別。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/deletion-gates.webp" width="1360" height="454" loading="lazy" alt="待刪項目依序經過授權檢查和路徑驗證，執行器再依刪除方式處理：移至垃圾桶後，檔案仍在其中時可還原；快取預設永久刪除，指定的維護項目也直接刪除。">
  <figcaption>每個候選都過同樣三道關卡，每一道都獨立重新判一次。中間那道的拒絕是硬停止，不是改成刪得少一點。</figcaption>
</figure>

## 三道關卡，中間那道才是要緊的

候選不是從掃描結果一步走到磁碟上的，它要先過授權關卡，再過路徑驗證，最後才到執行器，而且這幾層
互不信任，每一層都自己重新查一遍，不假設上一層已經判對了。

安全真正落腳的地方是路徑驗證，它跑在刪除的那一刻而不是掃描的那一刻。這點很要緊，因為兩個時刻中間
可能隔了幾分鐘，磁碟不會在這幾分鐘裡停下來等你，檔案在你看過之後換了身分，刪除就不該憑一個過期的
判斷繼續走。寫這篇文章的這台機器上，日誌裡就有這麼一行：

```
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`。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/same-or-safer-review.webp" width="1360" height="454" loading="lazy" alt="三個巢狀的集合：磁碟上的全部內容，裡面是命令列工具會刪除的較小集合，再裡面是 Mac App 願意提供的更小集合，兩者之間的差額標著那些需要連網才能重新取回的目錄。">
  <figcaption>同等或更安全，絕不更寬。Mac App 刻意放掉只有網路才能還原的那部分，所以有的東西只存在於終端機，永遠不出現在 App 裡。</figcaption>
</figure>

## 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` 的檔案若仍在垃圾桶內，通常可以
還原，但之後也可能已被還原、移走或清空。能否找回，仍要打開垃圾桶確認。

## 複查這一步

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/mole-clean-review.webp" width="2584" height="1741" loading="lazy" alt="Mole 清理審查頁依類別列出快取與各自大小，每類都有勾選框，底部是永久清理已選 5.14 GB 的按鈕。">
  <figcaption>掃描本身不刪任何東西，審查畫面列出每個類別和大小，只清理勾選的列。</figcaption>
</figure>

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](https://mole.fit/tw/blog/mole-cli-vs-mac-app)：兩個前端各自能做什麼
  對方做不到的事，以及同時安裝會怎樣。
- [Mac 清理工具永遠不該刪什麼](https://mole.fit/tw/blog/what-mac-cleaners-should-never-delete)：同一個
  問題，問的是整個品類而不是某一個工具。

## 常見問題

### 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` 類狀態說明哪些項目未刪除。

### 授權會改變刪除範圍嗎？

不會。授權只決定破壞性操作能不能執行，從不決定它有多寬，掃描、候選清單和保護規則在啟用前後完全
一樣。

---

Canonical HTML page: https://mole.fit/tw/blog/is-mole-safe
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
