規則
真正讓人擔心的不是浪費空間,而是遺失工作。Devbroom 的規則正是為此而設,而且沒有一條是可以關掉的設定。
掃描只會讀取
掃描不會更動任何一個檔案。除非你在「自動維護」中把某條規則設為「自動執行」,否則沒在預覽中看過並確認的東西都不會被碰。
每個判定都附帶理由
沒有任何一項會毫無理由地被判定為可清理或已鎖定。每個判定的理由都顯示在該項旁邊,在命令列中則透過 --details 顯示。
已鎖定和不確定無法選取
這是一項限制,而不是偏好。需查看的項目只有透過「仍要加入」才會清理;在命令列中對應的是 --include-review,它會在終端機中要求確認。
刪除前再檢查一次
按下「清理」時,每一項都會根據當下正在執行的程序再檢查一次。掃描後判定或內容有所變化的項目不會被動,並會告訴你為什麼略過。
先進垃圾桶
預設移到垃圾桶,每一項都可以從「歷史紀錄」放回。永久刪除是另一個獨立的選擇,需要按住按鈕來確認;你所屬的組織可以關閉它。移到垃圾桶的空間在你清空垃圾桶之前不算已釋放。
Worktree:從不 --force
- 含有尚未 commit 的變更,或含有未追蹤或已暫存檔案的 worktree 為已鎖定。沒有
--force,git 不會移除它;Devbroom 從不使用--force。 - 被忽略的檔案會讓它成為需查看,因為
git worktree remove會不經詢問就刪除它們。 - 移除 worktree 時,分支上尚未推送的 commit 會保留;在分離的 HEAD 上則不會。因此移除前,Devbroom 會把 HEAD 儲存在
refs/devbroom/removed下;如果無法儲存,就不移除。 - worktree 操作只有三種:移除(
remove)、清除(prune)和修復(repair)。
不碰進行中的工作
如果該資料夾或其上層資料夾有代理工作階段在執行、有程序從這裡執行,或其中有檔案被開啟佔用,這一項就是已鎖定。對於建置資料夾,上層資料夾有工作階段在執行時,會判定為需查看。
Devbroom 從不碰執行中代理工作階段的程序。只有在你同意、並再次檢查之後,它才會請代理遺留下來的程序結束;從不涉及系統程序或其他使用者的程序。
光憑名稱不夠
資料夾的名稱本身不算證據:
| 資料夾 | 判定為可清理的條件 |
|---|---|
node_modules |
旁邊有 package.json |
.next |
旁邊有 Next.js 設定或 package.json |
.turbo |
旁邊有 turbo.json 或 package.json |
target |
裡面有 Cargo 的標記(CACHEDIR.TAG) |
.venv |
裡面有 pyvenv.cfg |
DerivedData |
裡面有 Xcode 的檔案 |
dist、build、vendor |
旁邊有專案檔案,而且有建置腳本產生它 |
沒有標記時,該資料夾維持需查看。它還必須是 git 忽略的資料夾,而且裡面沒有 git 追蹤的檔案。
真實大小
透過硬連結和 APFS 複製檔與其他資料夾共用的空間(pnpm 就是這樣做的)不計入。你看到的數字就是刪除後能釋放的空間。不會跟隨符號連結,已掛載的卷宗會被略過。
依代理自己的方式
從不碰代理的資料庫和憑證。如果代理有自己的清理指令,就用那個指令來清理,或者把它告訴你。Claude Code 的歷史要嘛用 claude purge 刪除,要嘛封存:對話會先寫入 Devbroom 資料夾中的封存檔,並與原始檔案核對驗證,之後才移到垃圾桶;專案的記憶(memory/)保留在原處,封存檔可以從「歷史紀錄」重新開啟。對於 Codex 工作階段,會顯示 codex delete。其他代理的工作階段只會讀取。
一切都在你的 Mac 上
不需帳號,沒有遙測;不會傳送任何關於你的資訊。App 會檢查更新;如果你輸入 Pro 授權,它會啟用一次,之後大約每月悄悄重新檢查一次(只傳送授權金鑰和你 Mac 的名稱)。沒有授權時,檢查更新是唯一的網路請求。從工作階段日誌中它只取 token 數和模型名稱;搜尋工作階段時在當下讀取日誌,不保留任何索引或紀錄,並在摘錄中隱藏看起來像機密資訊的字串。詳情請見隱私權頁面。
最後更新: 2026年10月7日