Mole CLI 還是 Mole for Mac
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 的預設清單較保守,但兩者都需要先確認候選項目。
同時安裝時要注意什麼
兩者可以共存。在 App 設定中保護路徑後,mo clean 會略過;透過 mo clean --whitelist 加入路徑,App 也會遵守。
兩邊不會協調正在進行的任務,同時開始清理可能互相干擾。mo clean 出現 App 不展示的類別則屬正常,這是刻意保留的安全差異。
選哪一個
習慣終端機、需要 --dry-run、--json、腳本或專案產物掃描,或者不想付費,選命令列版。對許多開發者來說,它已經足夠。
需要磁碟地圖、即時面板、風扇控制、啟動項目管理和第三方 App 更新,或要替不使用終端機的人安裝,選 Mac App。後一個場景正是 App 誕生的原因,見 Mole 的故事。
仍不確定時,免費命令列版的 mo clean --dry-run 是一個低成本起點,它不會刪除內容,結果也能幫助判斷是否真的需要清理軟體。