# Mole CLI 還是 Mole for Mac

> 依工作流程、兩者共用的磁碟防護檔，以及只有一方能做的工作，在免費終端機 CLI 與付費原生 App 間做選擇。

Published: 2026-07-25 | Updated: 2026-09-10

Mole 有兩款獨立產品。`mo` 是透過 Homebrew 安裝、採用 GPL-3.0 的免費開源命令列工具，Mole for Mac 是帶五個頁面與選單列入口的付費原生 App。它們不是基礎版與專業版，而是兩套能力有重疊的實作，也可以同時安裝。

## 兩者有哪些重疊

命令列版的 `mo clean`、`mo uninstall`、`mo optimize`、`mo analyze` 和 `mo status`，分別對應 App 的「清理」「軟體」「最佳化」「分析」與「狀態」。兩邊都涵蓋快取、App 與殘留、磁碟分析與系統指標，但實作與候選清單並不完全相同。

掃描都免費。Mac App 只對執行刪除等操作收費，每項破壞性工具在啟用前可使用兩次，足以先比較掃描結果。

兩者還共享三份本機資料：`~/.config/mole/whitelist`、`~/.config/mole/whitelist_optimize` 和 `~/Library/Logs/mole/operations.log`。在一邊保護的路徑，另一邊也會略過，兩邊的刪除都會寫入同一份日誌。

## 命令列版獨有的能力

### `mo purge`

掃描專案目錄中的大型建置產物，包括 `target`、`build`、`dist`、`.next`、`DerivedData`、`__pycache__`、`coverage` 等三十多類，也包括需要套件管理器重新下載的依賴目錄。

Purge 會永久刪除，不經過垃圾桶。最近七天有改動的專案預設不選，因此仍應先執行 `--dry-run`。

### `mo installer`

從下載、桌面、Homebrew 快取、iCloud 和郵件中尋找 DMG、PKG 與封存安裝套件，並標註來源。

### `mo touchid`

為 `sudo` 設定 Touch ID 認證，不是清理功能。

`mo clean`、`mo uninstall`、`mo optimize` 和 `mo purge` 支援 `--dry-run`，其他指令先查看各自的說明，不把預覽能力推及所有操作。`mo analyze`、`mo status` 和 `mo history` 支援 `--json`，`mo status` 經由管線輸出時會自動切換為 JSON。唯讀與結構化輸出也可以透過 SSH、在無介面 Mac 或腳本中執行。排程刪除仍需明確的非互動策略，cron 不會讓互動確認自動變安全。

## Mac App 獨有的能力

App 更適合持續顯示與受控的系統操作。「分析」提供可下鑽的矩形樹圖，「狀態」提供即時面板、趨勢線、置頂處理程序與選單列 HUD，「解除安裝」會在移動檔案前展示路徑、擁有者與大小，解除安裝的檔案會進入垃圾桶。

風扇與支援機型的電池寫入，透過 SMJobBless 安裝的受限 root 輔助程式完成。啟動項目只直接切換身分可驗證的 launchd 與 Service Management 項目，無法確認的背景項目會導向系統設定。

App 還包括相機與麥克風使用提醒、把支援機型充電維持在約 75% 到 80% 的電池養護、防止休眠、清潔螢幕和唯讀診斷報告。這些功能需要圖形介面或常駐狀態，命令列版沒有對應入口。

另一項差異是更新第三方 App。Mac App 可以辨識 Sparkle、Homebrew cask 與 formula、Mac App Store、Electron、GitHub Releases 和網站中繼資料。無法驗證並安全替換應用程式套件時，只會開啟 App 或廠商頁面。

授權為一次購買，兩台 Mac 終身更新，提供 14 天退款，需要 macOS 14 或更高版本。兩款產品都不傳送遙測。

## 為什麼 App 的清理範圍更窄

Mac App 不是呼叫 `mo` 的圖形包裝器，而是以 Swift 重新實作。兩邊共享路徑分類與安全原則，但掃描器、逾時、快取與回退各自獨立。因此結果可以交叉檢查，但不承諾逐位元組相同。

App 遵循「相同或更安全」：候選項會分為預設可選、預設不選的僅檢查項，以及完全封鎖項。與命令列版有分歧時，App 採用更窄的範圍。

`mo purge` 就是典型例子。命令列版會處理 `node_modules`、`Pods`、`venv` 和 `vendor` 等下載依賴目錄，Mac App 則排除它們。編譯產物可以從本機輸入重建，依賴樹卻需要網路，重新解析後還可能不同。App 只展示可由本機編譯還原的內容，並預設不勾選。

App 掃描資料前還會檢查完全取用磁碟權限，執行刪除時重新驗證路徑，解除安裝 App 走垃圾桶。命令列版的範圍較廣，App 的預設清單較保守，但兩者都需要先確認候選項目。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/two-front-ends.webp" width="1360" height="454" loading="lazy" alt="終端機工具與 Mac 應用程式兩個介面分別執行相同五類操作，但在磁碟上讀寫同一份白名單和同一份操作日誌">
  <figcaption>兩款產品執行時不通訊，但共享保護清單與操作日誌。</figcaption>
</figure>

## 同時安裝時要注意什麼

兩者可以共存。在 App 設定中保護路徑後，`mo clean` 會略過；透過 `mo clean --whitelist` 加入路徑，App 也會遵守。

兩邊不會協調正在進行的任務，同時開始清理可能互相干擾。`mo clean` 出現 App 不展示的類別則屬正常，這是刻意保留的安全差異。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/same-or-safer.webp" width="1360" height="454" loading="lazy" alt="命令列版會刪除的集合包圍著 Mac 應用程式更小的刪除集合，兩者差異是 node_modules、Pods、venv 與 vendor 等需要網路才能還原的下載相依目錄">
  <figcaption>Mac App 只採用相同或更窄的刪除範圍，不會比命令列版更激進。</figcaption>
</figure>

## 選哪一個

習慣終端機、需要 `--dry-run`、`--json`、腳本或專案產物掃描，或者不想付費，選命令列版。對許多開發者來說，它已經足夠。

需要磁碟地圖、即時面板、風扇控制、啟動項目管理和第三方 App 更新，或要替不使用終端機的人安裝，選 Mac App。後一個場景正是 App 誕生的原因，見 [Mole 的故事](https://mole.fit/tw/blog/the-story-of-mole)。

仍不確定時，免費命令列版的 `mo clean --dry-run` 是一個低成本起點，它不會刪除內容，結果也能幫助判斷[是否真的需要清理軟體](https://mole.fit/tw/blog/do-you-need-a-mac-cleaner)。

---

Canonical HTML page: https://mole.fit/tw/blog/mole-cli-vs-mac-app
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
