AI Mac 清理工具:模型該決定什麼,不該決定什麼
「AI Mac 清理工具」這個說法會落到兩種完全不同的產品上。一種是裡面裝了模型的清理 App,賣的是它建議得多聰明。另一種是這一年 Claude Code、Cursor、Ollama 和它們的快取悄悄吃掉了不少磁碟,這種工具是拿來把空間收回來的。2026 年打這個關鍵字的人,多半要的是第二種,但第一種值得先回答,因為那個答案決定了第二組東西你能信到什麼程度。
第一部分:模型到底在決定什麼
清理這件事至少有四步,一款主打 AI 的工具,宣稱的其實只是其中一步:
- 列舉。 走完磁碟,量出大小,
du做的就是這件事,裡面沒有判斷。 - 歸屬。 決定每條路徑屬於哪款 App 或哪條工具鏈。
- 排序與說明。 決定四千個候選裡哪十二個值得看一眼,並用一句話講清楚每一個是什麼。
- 判定並刪除。 決定哪些刪掉是安全的,然後刪掉。
第二步和第三步的界線本來就模糊,模型在那裡真的幫得上忙。第四步是另一種性質的問題,拿模型去做是選錯了工具。幾乎每一場關於 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 好不好,而在流程該從中間切開,錯了頂多多看兩眼的那一半交給機率,錯了會賠上資料的那一半交給確定性。
Mole 站在哪一邊
Mole 不帶模型,也不跑推論。一條路徑能不能成為刪除候選,看的是一份編譯進 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 以 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 是兩個不同的詞。
有兩個行為是專門對著 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 採 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 是一款 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 把
moCLI 包了起來,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 工具的殘留。
它們怎麼比
| 工具 | 判定是否確定性 | 是否預覽路徑 | 是否可還原 | 是否保護模型倉庫與對話紀錄 | 費用 |
|---|---|---|---|---|---|
| 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 指令的儲存區,照清開發快取處理。cc-cleaner 很適合當第二輪,風險分級先讀過再跑。
一座很大的本機模型庫。 權重這一塊直接跳過通用清理工具,ollama ls、hf cache ls 和 LM Studio 的 My Models 才是唯一能安全釋放共用資料塊的路。先用磁碟分佈圖找出倉庫在哪,再用所屬工具去動它。
剛發現 Cursor 或 Claude Code 在吃磁碟。 這種最好處理,快取和日誌會自己長回來,舊版 CLI 是純粹的浪費,只有對話紀錄不該碰。上面任何一款會讓你先審的工具都做得到,一步一步的版本在替 AI 編碼工具收拾。
常見問題
用了 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 模型,講內容定址模型倉庫的機制。
- 清開發快取又不弄壞建置,講套件管理器的儲存區和散落各處的
node_modules。 - 替 AI 編碼工具收拾,逐條路徑的操作版本。