幫 Mole 做 AI 工具的清理與維護
趁著這個假期,想繼續幫 Mole 加一個實用的功能,清理不再需要的 AI 快取、舊工作階段和 worktree,也移除以前裝過、很久沒用的 AI 工具。
之前在測試幾百款 Mac 軟體的移除殘留時,也有很多朋友提過 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 工具加的行:
grep -nE "codeium|codebuddy|kiro|kimi|lmstudio|\.local/bin" ~/.zshrc ~/.bashrc ~/.zprofile 2>/dev/null
每一行前面是檔名和行號,如果某個工具已經移除了,對應的行可以用文字編輯器刪掉,改之前最好先複製一份這個檔案,改完新開一個終端機視窗確認一切正常。
再看 /usr/local/bin 裡指向 App 的指令,以及已經失效的連結:
ls -l /usr/local/bin | grep "\.app/"
find /usr/local/bin -maxdepth 1 -type l ! -exec test -e {} \; -print
第一條列出指向某個 App 內部的指令,第二條列出目標已經不在的失效連結,這些大多是 App 移除以後留下的,屬於 root,刪除需要管理者密碼。
看看還有沒有已經移除的命令列 agent 在背景跑:
ps -axo pid,lstart,command | grep -E "kimi|droid|gemini|qwen|iflow|amp|opencode" | grep -v grep
這裡按名稱做文字搜尋,找到後還要看完整指令和行程 ID,確認真是那個 AI 工具,amp 也會出現在別的單字裡,不能把每一行都當成待結束的工作階段,確認後先在原來的終端機結束,找不到視窗時再用 kill 加上它的行程 ID。
最後量一下這些工具各佔了多少:
du -sh ~/.codex ~/.claude ~/.grok ~/.gemini ~/.cursor ~/.local/share/opencode 2>/dev/null
這裡面有你的工作階段紀錄,刪之前先想清楚還要不要回頭看,沒有保留副本就直接刪掉的 AI 對話,是找不回來的。
檔案很大,也得先知道裡面是什麼
同樣是一個 AI 工具的資料夾,裡面可能有能重新產生的快取、已經下載的模型,也可能有對話、專案和其他工具共用的設定,資料夾名稱像快取,不代表裡面的每一樣都能刪,手動整理時也可以先按這個順序分開,能重建的先看,自己寫下來的東西再看標題、日期和備份,worktree 則還要確認沒有未提交的修改,裡面的提交也已經保存在需要保留的分支上。
opencode.db 刪了工作階段還不變小,也不一定是刪除失敗,SQLite 的說明提到,刪除記錄後原來的頁面通常會留給資料庫下次使用,檔案並不會自動縮小,壓縮做的是把這些空頁收回來,不是再刪一遍對話,所以先決定哪些工作階段不要了,再做資料庫維護,兩個動作不能混成一個大刪除按鈕。
Mole 現在是怎麼做的
這次做的 AI 頁目前在 Preview 版本,還需要繼續測試,下一個版本再開放給大家使用。AI 頁的入口是清理頁遠處的一輪月亮,只有偵測到 AI 工具的資料時才會出現,不想要的話在設定裡可以隱藏。點進去以後,它會按工具一個個梳理,把結果按刪了會不會後悔分成三段:快取和舊版本刪了會自己重建,預設勾選;工作階段和 worktree 不會自己重新產生,需要你自己確認;很久沒用的工具和維護項目放在最後,也不預設勾選。
工作階段這一段裡,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 清理和維護的需求,歡迎到討論串告訴我,我會放進測試,確認適合清理的就加進這個功能,這部分應該會持續維護很長一段時間。已經測過的軟體都在實測軟體名單裡,想自己動手清理的話,也可以看看清理 AI 程式開發工具那一篇。