AI 工作流 / 電腦維護

在電腦裡用 Agent 跑任務,硬碟突然就爆滿了?|工作樹做完不會自己消失,先檢查五件事再清

AI 每開一個工作就把專案複製一份,做完不會自己收。我查出 211 份、48GB,這篇記錄怎麼判斷能不能清、怎麼清才救得回來。

咪卡趴在一疊快要倒的資料夾最上面,掀開其中一份檢查;旁邊是容量快滿的硬碟,垃圾桶裡放著檢查過的資料夾

用 Claude Code、Codex 這類 AI 寫程式時,AI 常會把整個專案複製一份到旁邊做事,這份副本叫「工作樹」。事情做完,副本不會自己消失。我看到別人的硬碟被吃掉 585GB,回頭查自己的電腦:211 份、48GB。這篇記錄我怎麼判斷哪些能清、怎麼清才救得回來,以及清完之後怎麼讓它每個月自己被檢查一次,最後附一段可以直接貼給 AI 的盤點提示詞。

適合誰
  • 用 AI 做網站或小工具一陣子了,某天跳出「硬碟空間不足」,卻找不到是什麼東西佔掉的
  • 聽過「工作樹」或 worktree,知道 AI 會開,但不確定做完能不能刪、刪了會不會掉東西
  • 同時讓兩個以上的 AI 改同一個專案,想知道副本越堆越多時要怎麼收
你可以帶走什麼
  • 判斷一份工作樹能不能清的五個檢查點,以及每一點在防什麼
  • 一個「搬垃圾桶、不刪分支」的清法,清錯了也救得回來
  • 一段可以直接貼給 AI 的盤點提示詞,先列清單、你點頭才動手

我這台電腦有 211 份工作樹,佔了 48GB

起點是看到有人說,硬碟被 AI 開的工作樹吃掉 585GB。

我的原話這參考看看,我每月知識庫健檢是否也要檢查這個。

我請 AI 先盤點,不動任何東西。它把我放程式專案的兩個資料夾掃過一輪,結果如下:

專案工作樹份數佔用空間
知識官網(就是你正在看的這個網站)16541.0GB
官網的發布工作台123.5GB
persona 專案163.4GB
其他 6 個專案18不到 0.2GB
合計21148.1GB

我這邊官網一份大約 0.25 到 0.3GB,單份不大,是份數多,原因在下一段。

為什麼工作樹會越堆越多:一篇文章開一份,做完沒人收

工作樹的用途很單純:兩個 AI 同時改同一個專案時,各自在自己的副本裡做,就不會互相蓋掉檔案。git 會記得每一份副本對應哪一條分支,做完再合併回主線。

我的官網從 2026 年 8 月 19 日起改成「一篇文章一張桌子」:每開一篇新文章,就用腳本開一份工作樹,這篇文章的所有施工都在那份副本裡做。這個做法解決了兩個 AI 搶同一個資料夾的問題,副作用是文章上線之後,那張桌子沒有人收。兩個半月下來,官網累積了 165 張桌子。

延伸閱讀

哪些工作樹可以清:五個檢查點都過才算

工作樹裡最怕的是「做好的東西只在這份副本裡」。所以判斷能不能清,看的是裡面還有沒有別處找不到的東西:

「怎麼查」那一欄看不懂沒關係,文末的提示詞會叫 AI 替你查,你只要看懂第三欄每一點在防什麼。

檢查點怎麼查在防什麼
1 沒有沒存的改動git status --porcelain 是空的改到一半還沒存進 git 的檔案
2 沒有被 gitignore 的檔案git ls-files -o -i --exclude-standard --directory 排除 node_modules 這類可以重新安裝的資料夾之後是空的.env、本機資料庫這類 git 刻意不管的檔案,第 1 點看不到它們
3 最新進度已經推上遠端先 git fetch --prune,再看 git branch -r --contains HEAD 有沒有結果只存在這台電腦上的 commit
4 沒被鎖住git worktree list --porcelain 沒有 locked有人刻意標記「這份先別動」
5 最近 7 天沒動過看副本裡所有檔案的最後修改時間另一個 AI 對話正在用這份副本

第 3 點要先 fetch --prune,是因為電腦上記的遠端分支可能是舊的。遠端已經刪掉的分支,本機紀錄還在,就會被誤判成「已經推上去了」。

第 2 點是審查時才補上的我一開始只寫了四個檢查點,交給另一家 AI 審查,它指出 git status 看不到被 gitignore 的檔案,像 .env 這種清掉就救不回來。那時我已經清完了,所以回頭把垃圾桶裡的副本全部掃一遍:被 gitignore 的只有 1 個部署設定資料夾 .vercel/,裡面是專案編號,沒有金鑰。這次運氣好,檢查點已經補進盤點腳本。

怎麼清才救得回來:搬垃圾桶,不刪分支

五個檢查點都過的有 122 份,約 27.9GB;另外 5 份是資料夾早就不見、只剩 git 紀錄的。我的清法有三個原則:

  1. 先試 2 份再放大:搬完確認 git 紀錄消失、分支還在、資料夾在垃圾桶,才清剩下的。
  2. 整個資料夾搬到垃圾桶,不用刪除指令:清錯了還拿得回來。搬之前每一份再重驗一次第 1、3 點,避免盤點到動手之間有人改過(審查時另一家 AI 建議第 2、4 點也要重驗,提示詞裡已經補上)。垃圾桶裡另開一個帶日期時間的資料夾,按專案分開放,同名的副本才不會互相蓋掉。
  3. 分支不刪:分支是 git 裡的紀錄,幾乎不佔空間。要回來繼續做,一行 git worktree add <路徑> <分支> 就能重開一份。清完會跑 git worktree prune 移除 git 端的紀錄,之後就算把資料夾從垃圾桶搬回原位,git 也接不回去;垃圾桶裡的副本主要用來撿回裡面的個別檔案,要繼續開發就用這行重開。

清完的結果:

工作樹份數佔用空間
清理前21148.1GB
搬進垃圾桶12227.9GB
只剩紀錄、直接移除50
清理後8420.3GB

各項容量分別四捨五入,所以相減會差 0.1GB。

垃圾桶倒掉才真的空出來搬進垃圾桶的 27.9GB 還佔著硬碟,要自己確認沒問題、倒掉垃圾桶,空間才會回來。這一步我留給自己按,沒讓 AI 做。

最該注意的:做好的東西可能只留在副本裡

剩下的 84 份裡,有 27 份是「最新進度沒推上遠端,而且超過 30 天沒動」。這種副本最麻煩:做好的檔案留在副本裡,主資料夾看不到,做好了卻找不到。

我逐份對了一下官網主線:

  • 5 份的文章其實已經上線了。我的上線流程會把一篇文章的所有修改壓成一個新的 commit 合進主線,所以副本裡原本那串 commit 看起來「沒推上去」,內容早就在網站上。
  • 22 份的文章不在主線上。可能是寫到一半放著、可能是改了方向,也可能是真的做好了忘記上線。這些要我自己一份一份看,AI 不能替我決定。

這是這次盤點最有價值的部分。空間清出來是附帶的,真正要緊的是發現有 22 份工作,只存在這台電腦的某個角落。

不想等硬碟爆了才發現:掛進每月健檢

這次是剛好看到有人提才去查。為了不靠運氣,我把工作樹盤點加進每個月 1 號跑的知識庫健檢,規格是:

  • 每月記一次各專案的份數、佔用空間、可清份數、可能遺落成果的份數,跟上個月比
  • 只盤點,不清。清不清由我點頭,AI 照上面三個原則動手
  • 可能遺落成果的那幾份,逐份列出來給我看

判斷「能不能清」的五個檢查點寫成一支只讀不寫的小腳本,每月健檢跑同一支,結果才比得起來。這支腳本和規格也交給另一家 AI 審過一輪,審出 5 個必改:除了上面提到的 gitignore,還有「只看資料夾最外層的修改時間,會把正在改深層檔案的副本誤判成閒置」、「git 指令失敗時被當成沒問題」這類漏洞,都已經改掉。

延伸閱讀

可以直接貼給 AI 的盤點提示詞

貼給 Claude Code 或 Codex 都可以。它會先列清單,你看過說可以才動手:

幫我盤點[填你放程式專案的資料夾路徑]底下所有 git 工作樹(worktree),先只列清單,不要清任何東西。不要掃整個硬碟。

先對每個有工作樹的專案跑 git fetch --all --prune,再逐份檢查:
1. 有沒有沒存的改動(git status --porcelain)
2. 有沒有被 gitignore 的檔案(git ls-files -o -i --exclude-standard --directory,node_modules 這類可以重新安裝的不算)
3. 最新進度有沒有推上遠端(git branch -r --contains HEAD)
4. 有沒有被 lock
5. 副本裡所有檔案最後一次修改是幾天前

用表格列出每一份的專案、分支、大小、五項結果。
五項都沒問題、而且 7 天以上沒動的,標成「可清」。
沒推上遠端、而且 30 天以上沒動的,標成「可能遺落成果」,並查主線上有沒有同樣的內容。

我確認後才清。清的方式:
先試 2 份,確認沒問題再做其他的;
整個資料夾搬到垃圾桶,不要用 rm 刪除;
在垃圾桶裡另開一個帶日期時間的資料夾,按專案分開放,避免同名覆蓋;
搬之前再重驗一次第 1 到 4 項;
分支不要刪;
搬完跑 git worktree prune,最後再列一次清理後的表格。
這篇提到過的
再往前後延伸