# 幫 Mole 做 AI 工具的清理與維護

> 從捨不得清理 AI 對話，到自己也累積了舊工作階段和 worktree，記錄實際使用、移除 AI 工具的過程，以及這次想讓 Mole 繼續堅持的克制。

Published: 2026-09-29 | Updated: 2026-10-03

趁著這個假期，想繼續幫 Mole 加一個實用的功能，清理不再需要的 AI 快取、舊工作階段和 worktree，也移除以前裝過、很久沒用的 AI 工具。

之前在[測試幾百款 Mac 軟體的移除殘留](https://mole.fit/tw/blog/testing-mac-apps-one-by-one)時，也有很多朋友提過 AI 垃圾清理的需求，當時這些「垃圾」在我看來是有用的，比如全部 AI Coding 對話記錄，我認為是很重要的資產，所以這部分之前主要只支援清理真正的快取和舊版本。

不過隨著 AI 的使用，我自己的 Mac 也留著很多已經沒那麼有用的 AI 產物、工作階段和 worktree，還是很有必要做這件事，於是就開始弄了。也有使用者的 `opencode.db` 一個檔案就長到 62 GB，問該怎麼清，這次就把桌面 App 和命令列工具都裝上，登入帳號、實際用過，再查它們留下的東西。

## 這次是怎麼測的

和上次只裝、只移除不一樣，這次能用上的工具，我都登入了，在自己的專案裡真的用了一次，問問題、跑 Agent、建程式碼索引、設定排程工作，因為很多資料只有用過才會出現，只裝不開是看不到的。每裝一個，AI 就對照安裝前的狀態，量它往主目錄、`~/Library`、`/usr/local/bin` 和 shell 設定裡寫了什麼，記進一份台帳；然後看 Mole 狀態頁裡它佔了多少行程和記憶體，最後用 Mole 解除安裝，移除完再按名稱把整個主目錄掃一遍，找 Mole 沒有列出來的東西，缺什麼當晚補進程式碼，再重測一次。

桌面端測了 13 個：Devin、OpenCode、Trae、Trae CN、TRAE SOLO CN、Kiro、Qoder、QoderWork、Qoder CN、Lingma、CodeBuddy CN、WorkBuddy 和 Doubao Work，其中 12 個真的用上了，Lingma 登入以後沒有額度，只量了它寫的檔案。命令列這邊新裝並執行了 Amp、opencode、Kimi CLI、Kimi Code、Factory Droid、Copilot CLI、Gemini CLI、Qwen Code 和 iFlow，加上本機原本就有的 Claude Code、Codex、Grok 和 Cursor Agent，一共 13 個，另外還參考 CC Switch 支援的名單，量了 OpenClaw、Hermes 和 Pi 移除以後留下的目錄。用下來 Amp 做得還是挺不錯的，非常有自己的調性，Qoder CN 應該是我當天測試過最好的中國 AI 產品，整體還是比較簡潔、比較清楚的。也有幾個沒能用上，這次沒能用個人 Google 帳號登入 Gemini CLI，Qwen Code 和 iFlow 都要自己準備 API 端點和 Key。

## 裝上用一次，才知道它們寫了什麼

最直觀的是記憶體，13 個桌面端同時開著一共佔了大約 23 GB，CodeBuddy CN 一個就是 41 個行程、4.49 GB。這些大多是 VS Code 或 Electron 系的 App，一個視窗背後是一串 helper，所以狀態頁裡我讓每個 App 只佔一行，把它的所有子行程合在一起算，不然光看行程列表，很難知道到底是誰在吃記憶體。

更意外的是它們對系統做的小改動。Devin、CodeBuddy、Kiro、Kimi Code 都會往 `~/.zshrc` 裡加 PATH 或終端機整合的行，Kiro、Trae 和 Trae CN 第一次開啟時，會往 `/usr/local/bin` 放一個 root 所有的指令連結，App 刪掉以後這個連結就變成了指向空處的失效連結。WorkBuddy 往 `~/.local/bin` 放了一個 `python3.12`，之後在終端機裡輸入 `python3.12` 用的就是它帶的那一份，還裝了 127 MB 的 uv Python，我當時的原話是這個軟體比我想的還要流氓。最有意思的是 Kimi CLI，我執行了一次，它先告訴我自己已經停止維護，然後沒有問我，就直接下載安裝了新的 Kimi Code，改了 `.zshrc`，還把原來的指令改名成了 `kimi-legacy`。

體積上，TRAE SOLO 第一次用 Work 模式會下載約 1 GB 的工具包，解壓縮以後是 3.1 GB，裡面是一整套自帶的 LibreOffice、FFmpeg、OpenJDK；六個桌面工具每個只做了一兩個任務，就一共寫了 5.2 GB 的資料。我自己天天用的 `~/.codex` 已經 24 GB，其中工作階段佔了 17 GB，Claude 桌面版 14 GB 裡有 12 GB 是 Cowork 用的 Linux 虛擬機器。opencode 的資料庫是按事件記錄的，一次提問寫進去的內容是訊息本文的三倍多，刪掉工作階段以後也不會自己壓縮，這大概就是有人會漲到 62 GB 的原因。

還有一個坑是 skills。很多 skill 安裝程式會往每一個 agent 的目錄裡都寫一份 `skills/`，不管你裝沒裝這個 agent，所以我的電腦上明明沒用過 Qwen Code、iFlow 和 Droid，`~/.qwen`、`~/.iflow`、`~/.factory` 卻都在，Mole 的第一版還把它們當成了 2.4 MB 的工具，差點把我裝的 skills 當殘留一起清掉。

## 移除以後，還有東西留著

第一輪 14 個 App 移除完再掃，主目錄裡還有十幾個點開頭的資料夾 Mole 沒有列出來，像 `~/.kiro`、`~/.qoder`、`~/.qodersec`、`~/.lingma`、`~/.codebuddy`，還有 Kiro 放在 `~/.aws` 裡的登入權杖檔案。它們不在 `~/Library` 下面，名稱也不一定和 App 一樣，只能裝一個查一個。有些資料夾還是幾個產品共用的，Trae CN 和 TRAE SOLO CN 共用 `~/.trae-cn`，Qoder 和 QoderWork 共用 `~/.qoder`，只移除其中一個的時候，另一個還要用，這時候就不能列出來。測國際版 Trae 時還發現它會把 Trae CN 的資料夾認成自己的，快取還是預設勾選的，改完以後列表從 33 行變成 14 行。

另一個沒想到的是行程。解除安裝完第二天早上再查，`~/.kimi-code` 和 `~/.factory` 刪了又長了回來，原因是前一晚在終端機裡開著的 `kimi`、`droid` 工作階段行程還活著，程式檔案已經在垃圾桶裡了，行程照樣在往資料夾裡寫日誌；接著又發現 `gemini`、`qwen`、`iflow`、`amp` 的工作階段也都還在跑。命令列工具沒有視窗，關掉終端機分頁也不一定會結束它，解除安裝之前最好先確認它不在執行。

這個過程也發現，Claude、Codex、Cursor 這類產品在克制上保持得比較好，也是我常用的 3 個，測試時看到了不少軟體的亂象，比如下載安裝程式時，直接往剪貼簿寫東西來追蹤安裝來源、做統計，這讓我覺得有點過了，也有裝好就跳視窗，叫你參加活動領 Token 的，到處都是廣告，得忍著才能用。

倒是 Qoder 讓我覺得不錯，保持自己的克制，審美在線，沒有亂來，產品挺讓人驚訝，希望能多一些這樣的中國軟體，加油加油。

## 你也可以自己先看一眼

這些檢查不需要 Mole，在終端機裡就能看，下面的指令都只讀取，不會改任何東西。

先看 shell 設定裡，有沒有 AI 工具加的行：

```bash
grep -nE "codeium|codebuddy|kiro|kimi|lmstudio|\.local/bin" ~/.zshrc ~/.bashrc ~/.zprofile 2>/dev/null
```

每一行前面是檔名和行號，如果某個工具已經移除了，對應的行可以用文字編輯器刪掉，改之前最好先複製一份這個檔案，改完新開一個終端機視窗確認一切正常。

再看 `/usr/local/bin` 裡指向 App 的指令，以及已經失效的連結：

```bash
ls -l /usr/local/bin | grep "\.app/"
find /usr/local/bin -maxdepth 1 -type l ! -exec test -e {} \; -print
```

第一條列出指向某個 App 內部的指令，第二條列出目標已經不在的失效連結，這些大多是 App 移除以後留下的，屬於 root，刪除需要管理者密碼。

看看還有沒有已經移除的命令列 agent 在背景跑：

```bash
ps -axo pid,lstart,command | grep -E "kimi|droid|gemini|qwen|iflow|amp|opencode" | grep -v grep
```

這裡按名稱做文字搜尋，找到後還要看完整指令和行程 ID，確認真是那個 AI 工具，`amp` 也會出現在別的單字裡，不能把每一行都當成待結束的工作階段，確認後先在原來的終端機結束，找不到視窗時再用 `kill` 加上它的行程 ID。

最後量一下這些工具各佔了多少：

```bash
du -sh ~/.codex ~/.claude ~/.grok ~/.gemini ~/.cursor ~/.local/share/opencode 2>/dev/null
```

這裡面有你的工作階段紀錄，刪之前先想清楚還要不要回頭看，沒有保留副本就直接刪掉的 AI 對話，是找不回來的。

## 檔案很大，也得先知道裡面是什麼

同樣是一個 AI 工具的資料夾，裡面可能有能重新產生的快取、已經下載的模型，也可能有對話、專案和其他工具共用的設定，資料夾名稱像快取，不代表裡面的每一樣都能刪，手動整理時也可以先按這個順序分開，能重建的先看，自己寫下來的東西再看標題、日期和備份，worktree 則還要確認沒有未提交的修改，裡面的提交也已經保存在需要保留的分支上。

`opencode.db` 刪了工作階段還不變小，也不一定是刪除失敗，[SQLite 的說明](https://sqlite.org/lang_vacuum.html)提到，刪除記錄後原來的頁面通常會留給資料庫下次使用，檔案並不會自動縮小，壓縮做的是把這些空頁收回來，不是再刪一遍對話，所以先決定哪些工作階段不要了，再做資料庫維護，兩個動作不能混成一個大刪除按鈕。

## Mole 現在是怎麼做的

這次做的 AI 頁目前在 Preview 版本，還需要繼續測試，下一個版本再開放給大家使用。AI 頁的入口是清理頁遠處的一輪月亮，只有偵測到 AI 工具的資料時才會出現，不想要的話在設定裡可以隱藏。點進去以後，它會按工具一個個梳理，把結果按刪了會不會後悔分成三段：快取和舊版本刪了會自己重建，預設勾選；工作階段和 worktree 不會自己重新產生，需要你自己確認；很久沒用的工具和維護項目放在最後，也不預設勾選。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/testing-ai-tools-review.webp" width="2400" height="1800" loading="lazy" alt="Mole 的 AI 清理與維護頁，工作階段與工作區裡展開了 6 筆超過 90 天的 Codex 舊工作階段，下面是已完成的 worktree 和專案已刪除的工作階段，每一列寫明是什麼、刪了會怎樣和大小。">
  <figcaption>AI 清理頁的真實畫面，截圖裡的資料來自一個範例資料夾，不是我的電腦。</figcaption>
</figure>

工作階段這一段裡，Codex 超過保留期的舊工作階段可以按 15、30、90、120 天篩選，展開以後每一筆都帶標題和時間，也能單獨取消，Mole 會先把工作階段檔案複製一份到垃圾桶，再呼叫 Codex 自己的刪除指令，這樣 Codex 的索引不會亂；Claude Code 只列出專案資料夾已經不在的工作階段；用完的 worktree 只有在 git 能證明裡面沒有未提交的變更時才會出現，已經合併進主分支的會標示出來。

閒置工具這一段，是這次花時間最多的部分。Mole 會在 npm、pipx、uv、官方安裝程式和 Homebrew 的固定位置裡找 AI 命令列工具，30 天沒用、也沒有在執行的，才會列出來，解除安裝的時候把程式、指向它的指令連結和它的設定、工作階段、登入資訊一起處理掉。別的軟體也在用的資料會留下，比如 Antigravity 也在 `~/.gemini` 裡放東西，opencode 的桌面版和命令列共用一個工作階段資料庫；閒置工具超過 4 個時，最大的 3 個各佔一行，其餘的合成一行。Claude Code 和 Codex 不在這個名單裡，因為它們的資料夾也是桌面版在用的。

用 `sudo npm` 裝進系統資料夾的命令列工具也會列出來，解除安裝時需要輸入一次管理者密碼。opencode 那個越用越大的 `opencode.db`，刪掉工作階段以後空出來的地方只要超過一成、檔案又超過 200 MB，Mole 會在這一段裡提供壓縮，不刪任何工作階段，只把空間還給磁碟，壓縮前要先結束 opencode。

解除安裝那邊，上面提到的點開頭資料夾現在都會作為待確認的行列出來，預設不勾，幾個產品共用的資料夾，只要另一個還裝著就不列；`/usr/local/bin` 裡那種 root 所有的指令連結，也會在解除安裝時一起列出來，透過 Mole 的管理者輔助程式移到垃圾桶。一般檔案移到垃圾桶後，只要還沒清空就可以取回，Homebrew 安裝的程式仍走它自己的解除安裝指令。資料庫裡的工作階段要靠匯出的復原檔案和對應步驟還原，不能把所有操作都當成從垃圾桶拖回來，復原副本也得保留著才有用。

這些改動會跟著 Mole 的下一個版本一起發佈。

## 還沒有做完的

有些事情這次還沒做，比如 shell 設定裡 AI 工具加的那幾行，Mole 不會去改你的設定檔，打算放在解除安裝的詳細資訊裡告訴你是哪幾行；Cursor、Conductor 這類工具的 worktree，我電腦上還沒有真實的資料，暫時沒有加。這次測試時，opencode 和 Devin 的舊工作階段還不能在 Mole 裡按天數單獨清理。MiniMax 這次還沒有實測，暫時沒有支援。

## 後續，補上 OpenCode 和 Devin 的舊工作階段

10 月 1 日又把 OpenCode 和 Devin 的舊工作階段補進原始碼，依保留期限篩選，或確認對應的工作資料夾已不存在，離線磁碟、無權讀取的資料夾不能算作專案已刪除，移除前先存一份復原副本，再透過工具自己的刪除方式並檢查結果，OpenCode 留下匯出的 JSON，Devin 留下選取工作階段和相關記錄的復原檔，也附上還原說明，工具還在執行或檢查未通過，就不清理，這一輪當時計畫隨下一次 Preview 提供，當時的公開下載還沒有，也沒有在使用者真實資料庫上量過能釋放多少空間。

加上之前測試那 700 多款軟體的過程，發現還是有不少軟體沒有遵守軟體工程的一些基本原則，也沒有大家想的那麼專業、乾淨。這更讓我想讓 Mole 保持現在的簡潔、把能力做深，不亂拿不該拿的東西，不上傳使用者的本機檔案和對話內容，連使用統計都不加，繼續這樣仔細做下去，應該會走得更長遠。

最後，大家有任何 AI 清理和維護的需求，歡迎到[討論串](https://github.com/tw93/Mole/discussions/1604)告訴我，我會放進測試，確認適合清理的就加進這個功能，這部分應該會持續維護很長一段時間。已經測過的軟體都在[實測軟體名單](https://mole.fit/tested-apps)裡，想自己動手清理的話，也可以看看[清理 AI 程式開發工具](https://mole.fit/tw/blog/how-to-clean-up-ai-coding-tools-mac)那一篇。

---

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