# AI Mac 清理工具：模型該決定什麼，不該決定什麼

> 排序和歸屬可以是機率性的，刪除那個決定不行；cc-cleaner、DevCleaner、agent skill 和 Mole 各自把這條線畫在哪，以及你的磁碟適合哪一款。

Published: 2026-08-20 | Updated: 2026-08-22

「AI Mac 清理工具」這個說法會落到兩種完全不同的產品上。一種是裡面裝了模型的清理 App，賣的是它建議得多聰明。另一種是這一年 Claude Code、Cursor、Ollama 和它們的快取悄悄吃掉了不少磁碟，這種工具是拿來把空間收回來的。2026 年打這個關鍵字的人，多半要的是第二種，但第一種值得先回答，因為那個答案決定了第二組東西你能信到什麼程度。

## 第一部分：模型到底在決定什麼

清理這件事至少有四步，一款主打 AI 的工具，宣稱的其實只是其中一步：

1. **列舉。** 走完磁碟，量出大小，`du` 做的就是這件事，裡面沒有判斷。
2. **歸屬。** 決定每條路徑屬於哪款 App 或哪條工具鏈。
3. **排序與說明。** 決定四千個候選裡哪十二個值得看一眼，並用一句話講清楚每一個是什麼。
4. **判定並刪除。** 決定哪些刪掉是安全的，然後刪掉。

第二步和第三步的界線本來就模糊，模型在那裡真的幫得上忙。第四步是另一種性質的問題，拿模型去做是選錯了工具。幾乎每一場關於 AI 清理工具的爭論，吵的其實都是廠商講的到底是哪一步。

### 模型真正派得上用場的地方

歸屬是真正難的那一題。假設 `~/Library/Application Support/Foo Labs` 佔著 3 GB，磁碟上卻根本沒有一款叫 Foo Labs 的 App。證據又弱又散，資料夾自己的 plist 裡有幾段 bundle identifier，`~/Library/HTTPStorages` 底下有個對得上的前綴，`~/Library/Saved Application State` 底下躺著一個 `.savedState` 套件，`/var/db/receipts` 裡還有一張安裝收據。按名字對著找當場就不靈，因為廠商在一個地方寫 `Foo Labs`，在另一個地方寫 `com.foolabs.editor`，手寫的對照表蓋得住前幾百款 App，再往下就是斷崖。規則在這種情形下贏不了模型，訊號多而弱，沒有一個是決定性的，長尾長到沒有人整理得完。

排序也是一樣，一次掃描吐出 4000 條路徑、60 GB，那是丟給你第二個問題，不是給你結果。說明更單純，把 `~/Library/Caches/com.apple.nsurlsessiond` 翻成一句人話而已。工具把模型用在這三件事上，而且明講，那宣傳的就是一個真功能。

### 為什麼最後那道門必須是確定性的

刪不刪這個決定，需要三樣模型給不了的東西。

**確定性。** 同一顆磁碟、同一個版本，每次都給同一個答案。把溫度調成零也換不來這個，因為提示詞裡裝的是這台機器的內容，多裝一款 App，檔案清單就變了，決定要靠的那些 token 也跟著變。一條規則在這台 Mac 上成立、在同事的 Mac 上不成立，那就不是安全規則。

**事前可審。** 保護清單就是一組路徑前綴，一分鐘讀得完，換了版本還能逐行比對。權重加提示詞讀不出一份「哪些會被擋下來」的清單，所以界線在哪，要等你踩過去才知道。

**事後可查。** 確定性的規則刪錯東西，留下的是一個可以重現的 bug，路徑在這裡，放行它的那一行在這裡，現在會失敗的測試也在這裡。模型刪錯東西，留下的只有一段對話紀錄，修法是改提示詞，而這一改對其他情況有什麼影響，沒有人量過。

兩種故障也不對稱。排序排錯，代價是多滑幾下，`~/.claude/projects` 刪錯，代價是手上全部的對話紀錄。所以問題不在 AI 好不好，而在流程該從中間切開，錯了頂多多看兩眼的那一半交給機率，錯了會賠上資料的那一半交給確定性。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/cleaner-decision-halves.webp" width="1360" height="454" loading="lazy" alt="一條清理流程被切成兩半：列舉、歸屬、排序與說明落在機率那一側，答錯了花掉的是注意力；保護清單和刪除決定落在確定性那一側，答錯了賠掉的是資料">
  <figcaption>這條線不是畫在聰明的工具和笨的工具之間，是畫在流程裡「錯了多滑幾下」和「錯了少一個檔案」這兩半中間。</figcaption>
</figure>

### Mole 站在哪一邊

[Mole](https://mole.fit/) 不帶模型，也不跑推論。一條路徑能不能成為刪除候選，看的是一份編譯進 App 的固定封鎖前綴清單，裡面是 `.ollama/models`、`.lmstudio/models`、`.cache/huggingface`、`.cache/torch`、`.claude/projects`、`.codex/sessions`、`.grok/sessions` 和 `Library/Caches/com.apple.e5rt.e5bundlecache` 這類條目。另一半交給你自己編輯，就是一個純文字檔，`cat ~/.config/mole/whitelist` 就讀得到。免費的 [Mole CLI](https://github.com/tw93/Mole) 以 GPL-3.0 開源，套的是同一份清單，所以真正在執行它的那段程式碼也是公開的。

最後那一條就是整場爭論的縮影。`com.apple.e5rt.e5bundlecache` 住在 `~/Library/Caches` 底下，名字裡明明白白寫著 cache，任何一套啟發式規則都會把它歸成可丟。它裝的是 Apple Neural Engine 編譯過的模型，趁某個 App 正載著模型的時候清掉，辨識相關的呼叫會一路壞到重新開機。它會被保護，是因為有個人撞上過這次故障，然後把那一行寫了下來。

所以不管碰到哪一款工具，真正要問的只有一句，模型做的是四步裡的哪一步。答列舉、歸屬、排序或說明，都算可信。答「它會判斷什麼刪起來安全」，下一句就該請它把清單拿出來，沒有清單，就沒有東西可審。

## 第二部分：替 AI 工具收拾殘局

多數人搜的是這件事。AI 工具留下的體積分成四種資料，各有各的規則，混為一談就是事故的起點：

- **工具快取與日誌。** `~/Library/Caches/claude-cli-nodejs`、Cursor 的 Electron 快取、`~/.claude` 底下的遙測與除錯資料夾。刪了會自己長回來，也沒什麼好留的。
- **對話紀錄與專案狀態。** `~/.claude/projects`、`~/.codex/sessions`、`~/.grok/sessions`。掃描結果裡最讓人意外的往往就是它，而且不可替代。
- **舊版 CLI。** agent CLI 自我更新之後，舊版本會原地留著。Codex 上實測一個版本約 300 MB，疊五個版本就是 1.2 GB，其中只有一個在用。
- **模型權重。** `~/.ollama/models`、`~/.cache/huggingface/hub`、LM Studio 的模型資料夾。體積遙遙領先，而且歸當初下載它們的那款工具管。

挑工具之前先量一遍：

```
du -sh ~/.claude ~/.codex ~/.ollama/models ~/.cache/huggingface 2>/dev/null | sort -h
```

### Mole：先審再清，而且認得這些路徑

Clean 會先把掃描跑完，結果攤出來讓你審，在那之前什麼都不動。每一列候選都帶著精確路徑、所有者和大小，掃描器沒把握的一律預設不勾，所以照預設點下去，永遠是比較小的那個動作。刪除走垃圾桶，不是直接解除連結，每次操作都寫進 `~/Library/Logs/mole/operations.log`，那裡面 `TRASHED` 和 `DELETED` 是兩個不同的詞。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/en/clean.webp" width="2584" height="1741" loading="lazy" alt="Clean 在一輪先審再清之後回報回收的空間，並按路徑和大小列出貢獻這些空間的候選">
  <figcaption>掃描跑完，審核畫面才出現，所以你不會在一份還沒建好的清單裡挑東西。</figcaption>
</figure>

有兩個行為是專門對著 AI 工具鏈做的。舊版 agent CLI 的資料夾會被列出來，正在用的那個版本則永遠不會成為候選，因為啟動器指到哪裡會先解析出來釘住，靠的是結構，不是猜版本號。另一個是解除安裝按歸屬走，不比名字，所以移除某家廠商的一款 App，不會順手把兄弟 App 還在用的那層共用 `Application Support` 資料夾也拉進來。

實際走一次：打開 Clean，等掃描跑完，把看起來大的群組展開，想留的取消勾選，再清理，看釋放出多少空間。掃描免費，每個付費功能還能免費用兩次，所以這 $19 值不值得，你可以先把整個審核流程驗過再決定。

### Mole CLI：想留在終端機裡的時候

這是另一個獨立的免費產品，以 GPL-3.0 開源，`brew install mole` 安裝。永遠先預覽：

```
mo clean --dry-run
mo purge --dry-run
```

`mo clean` 管快取和日誌，`mo purge` 對付舊的專案建置產物，每個具破壞性的指令都吃 `--dry-run`，讓你先把精確的路徑清單讀一遍。它跟 Mac App 共用保護清單和操作日誌。把旗標拿掉之前有一個差別要先知道，CLI 的快取清理是永久刪除，解除安裝和殘留移除才走垃圾桶。

### cc-cleaner：專門對付這個問題的開源終端機工具

[cc-cleaner](https://github.com/elexingyu/cc-cleaner) 採 MIT 授權，需要 Python 3.10 以上，`pipx install cc-cleaner` 裝得起來。它內建 22 個清理器，涵蓋 Claude Code、npm、uv、cargo、Docker、Playwright 和瀏覽器快取，還有一組 AI/ML 模型分類，裡面是 Hugging Face、PyTorch、Whisper 和 Ollama。`cc-cleaner status` 印出一張大小表，`cc-cleaner clean` 開一個可互動的挑選介面，`-n` 是空跑。

它的風險模型講得很明白，Safe 的項目預設就清，Moderate 和 Dangerous 要加 `--force`，README 把「對話紀錄、共用儲存區」放在 Moderate 這一層，其餘的看原始碼就知道。它的 Ollama 清理器把整個 `~/.ollama/models` 當一個資料夾移除，Hugging Face 清理器對 `~/.cache/huggingface/hub` 和 `datasets` 也一樣，Claude 清理器則會把 `~/.claude/projects` 底下的 `*.jsonl` 對話紀錄列出來。刪除用的是 `shutil.rmtree` 和 `Path.unlink`，所以沒有東西進得了垃圾桶。安全層是一組凍結的禁止系統路徑，加上每個目標都必須在家目錄底下，人寫出來的確定性清單本來就該長這樣。差別不在嚴謹程度，在那條線畫在哪，cc-cleaner 把模型倉庫和對話紀錄放在一個旗標後面，Mole 則是直接拒絕。

### DevCleaner：同一片地，但想要一個選單列 App

[DevCleaner](https://devcleaner.app) 是一款 macOS 14 以上的選單列工具，目前 1.9.0 版，涵蓋 23 種生態，從 Xcode DerivedData、Gradle 到 npm 和 Docker，另外對 Claude、ChatGPT、Cursor、Ollama 和 LM Studio 都有專門的掃描器。Safe 的項目預設刪除，Warning 的項目「由你決定」，Danger 的項目永遠不預先勾選，另外對憑證和工作階段檔案維持一份硬拒絕清單，動到執行中 App 的快取之前也會先警告。核心清理免費，Pro 以買斷或年度訂閱販售，實際數字看官網。它的網站沒有寫刪除是不是進垃圾桶，那正是第一次跑之前該先問清楚的事。

MacPaw 也放出了公開測試版的 CleanMyMac CLI，走 Homebrew 的 cask 安裝，對付的是同一批產物。它閉源，儲存庫放的是問題追蹤不是原始碼，官方也明說行為還在變，所以該讀的是它在確認步驟裡顯示給你的內容，不是任何一份公開說明。

### 把 agent 直接指向磁碟

最後一條路是跳過清理工具，直接讓 Claude Code 這類 agent 去清磁碟，或者搭配某個公開的清理 skill。它的長處是真的，而且這裡別的工具都沒有，agent 能對一套沒有人整理過的目錄結構做推論，不管那是上個月才發布的框架、一條私有工具鏈，還是只有你自己這樣擺的家目錄。

短處也一樣直白。那些 shell 指令是推論當下對著真實的檔案系統生成的，所以真正跑起來的那一條，跑之前沒有任何人審過。你不開口要，就沒有空跑。出事的範圍是整個家目錄，而變數展開成空字串的 `rm -rf` 是一種歷史悠久的故障。第一部分講的道理在這裡照樣成立，只是安全網被拿掉了，決定是機率性的，而且直接接在最後那道門上。

四條護欄幾乎不花成本：

- **讓它去驅動一個有預覽旗標的工具，別讓它自己拼刪除指令。** 有一個公開的 Claude Code skill 把 `mo` CLI 包了起來，`mo clean` 之前一定要先跑 `mo clean --dry-run`，把空跑的輸出完整印出來，還要你打字確認。目標由 agent 挑，刪除交給確定性的工具執行。
- **永遠不要在權限設定裡預先放行 `rm`。** 每一條刪除指令都個別批准，而且要讀那條路徑本身，不是讀它的摘要。
- **把垃圾桶設成預設。** 用 Homebrew 的 `trash`，或者 `mv` 到 `~/.Trash`，失手了都還救得回來。
- **限住作用範圍。** 一次只指一個資料夾，前面跑 `du -sh`，後面跑 `df -h`，這樣回收了多少是量出來的，不是估出來的。

### 模型倉庫屬於當初下載它們的那款工具

這一塊不該交給任何通用清理工具，包括上面那幾款。Ollama 和 Hugging Face 都採內容定址的儲存區，模型之間共用資料塊，所以只有所屬工具知道哪一塊還被引用著。用 `ollama ls` 和 `ollama rm <model>`，以及 `hf cache ls` 搭配 `hf cache rm model/<repo> --dry-run`。手動刪資料塊檔案為什麼會讓一個模型再也用不起來，寫在[清掉 AI 工具的殘留](https://mole.fit/tw/blog/how-to-remove-ai-tool-leftovers-mac)。

## 它們怎麼比

| 工具 | 判定是否確定性 | 是否預覽路徑 | 是否可還原 | 是否保護模型倉庫與對話紀錄 | 費用 |
|---|---|---|---|---|---|
| Mole for Mac | 固定的封鎖前綴清單加使用者白名單 | 有，每列都給路徑、所有者和大小 | 有，預設走垃圾桶，另有操作日誌 | 有，永遠不成為候選 | $19 買斷，兩台 Mac，終身更新 |
| Mole CLI | 同一份共用的保護清單 | 有，每個具破壞性的指令都吃 `--dry-run` | 解除安裝進垃圾桶，快取清理是永久刪除 | 有，同一份清單 | 免費，GPL-3.0 |
| cc-cleaner | 凍結的禁止路徑集合，且限定家目錄 | 有，`-n` 空跑加可互動的挑選介面 | 沒有，用 `shutil.rmtree` 和 `unlink` | 加 `--force` 就碰得到，不是拒絕 | 免費，MIT |
| DevCleaner | 三層風險分級加一份憑證拒絕清單 | 每個掃描器給大小，Danger 永遠不預先勾選 | 沒有寫明，執行前先問 | 模型權重被單獨列為一類 | 核心免費，Pro 買斷或年訂 |
| CleanMyMac CLI | 未公開，儲存庫只是問題追蹤 | 有，刪除前會確認 | 沒有寫明 | 沒有寫明 | 公開測試版，條款看官網 |
| 有 shell 權限的 agent | 沒有，全在推論當下決定 | 你要求才有 | 你強制走垃圾桶才有 | 你在提示詞裡講了才有 | 你的 agent 訂閱費 |
| `ollama rm`、`hf cache rm` | 儲存區內部做引用計數 | `hf cache rm --dry-run` | 沒有，但可以重新下載 | 這就是保護本身 | 免費 |

## 把邊界說清楚

Mole 不處理惡意軟體，不是備份，遇到帶驅動程式、VPN 元件或系統延伸功能的軟體也取代不了原廠的解除安裝程式。它不刪模型權重，也不刪 AI 對話紀錄，所以那 200 GB 的問題如果整個就是一座模型庫，它會在 Analyze 裡把那座庫的分佈畫給你看，然後把事情交給 Ollama 或 LM Studio。這是刻意畫的邊界，不是以後要補上的缺口。

## 怎麼挑

**200 GB 的建置產物加十來條工具鏈。** 體積落在快取、舊的 `node_modules`、DerivedData 和 Docker 上，跟 AI 專屬的東西沒什麼關係。先審再清跑一輪，或者 `mo clean --dry-run`，剩下那些得用自家 prune 指令的儲存區，照[清開發快取](https://mole.fit/tw/blog/how-to-clear-dev-caches-mac)處理。cc-cleaner 很適合當第二輪，風險分級先讀過再跑。

**一座很大的本機模型庫。** 權重這一塊直接跳過通用清理工具，`ollama ls`、`hf cache ls` 和 LM Studio 的 My Models 才是唯一能安全釋放共用資料塊的路。先用磁碟分佈圖找出倉庫在哪，再用所屬工具去動它。

**剛發現 Cursor 或 Claude Code 在吃磁碟。** 這種最好處理，快取和日誌會自己長回來，舊版 CLI 是純粹的浪費，只有對話紀錄不該碰。上面任何一款會讓你先審的工具都做得到，一步一步的版本在[替 AI 編碼工具收拾](https://mole.fit/tw/blog/how-to-clean-up-ai-coding-tools-mac)。

## 常見問題

### 用了 AI 的 Mac 清理工具，刪起來比一般的安全嗎？

就現有證據看不會。模型贏過規則的地方有兩處，判斷一個沒了主人的資料夾屬於哪款 App，還有排出哪些值得看，這兩件事訊號多而弱，本來就模糊。判定一條路徑刪起來安不安全，要的是確定性和一份可審的清單，這兩樣模型都給不了。所以要問廠商，模型跑的是流程裡的哪一步，聽到「它會判斷什麼刪起來安全」，那就是該把清單要來看的訊號。

### 讓 Claude Code 清 Mac 安全嗎？

它是最靈活的選項，也是邊界最鬆的。指令在推論當下生成，直接對著家目錄跑，你不開口要就沒有預覽。真要這樣做，就讓 agent 去驅動一個有空跑旗標的工具，別自己拼 `rm -rf`，權限設定裡永遠不要預先放行 `rm`，刪除送進垃圾桶，而且一次只讓它動一個資料夾。

### Mac 清理工具會刪掉 Ollama 模型或 Claude Code 的紀錄嗎？

完全看是哪一款工具，這才是該先問的問題。Mole 在刪除那道門上封鎖 `~/.ollama/models`、`~/.lmstudio/models`、`~/.cache/huggingface`、`~/.claude/projects`、`~/.codex/sessions` 和 `~/.grok/sessions`，放多久都不會成為候選。cc-cleaner 把模型資料夾和 Claude Code 對話紀錄歸在 Moderate 風險，加上 `--force` 就會刪。工具的風險分級要在第一次跑之前讀完，不是之後。

### 用了一年 AI 編碼工具，空間到底被什麼吃掉？

通常是舊版 CLI 和對話紀錄，不是大家以為的快取。agent CLI 每次自我更新，都可能留下幾百 MB 的舊版本，Codex 上疊五個版本大約 1.2 GB，其中只有一個在用。`~/.claude/projects` 底下的對話紀錄則是安安靜靜地長，掃描結果裡最讓人意外的往往就是它，也正因為這樣，它該被排除在清理之外，不是納進來。

## 延伸閱讀

- [清掉 Mac 上的 Ollama 與 LM Studio 模型](https://mole.fit/tw/blog/how-to-remove-ai-tool-leftovers-mac)，講內容定址模型倉庫的機制。
- [清開發快取又不弄壞建置](https://mole.fit/tw/blog/how-to-clear-dev-caches-mac)，講套件管理器的儲存區和散落各處的 `node_modules`。
- [替 AI 編碼工具收拾](https://mole.fit/tw/blog/how-to-clean-up-ai-coding-tools-mac)，逐條路徑的操作版本。

---

Canonical HTML page: https://mole.fit/tw/blog/ai-mac-cleaner-tools
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
