← 文章

Mac 硬碟快滿,乾脆讓 AI 做一張空間地圖

· 7 分鐘閱讀 · 157 次閱讀
macOS 磁碟空間 AI Agent 開源
Hoard 的圖示:一隻松鼠
開發心得

Mac 硬碟快滿,

乾脆讓 AI 做一張空間地圖

Hoard 是我為自己做的磁碟空間工具。這篇講它從想法到開源的兩天,跟我以前做工具的方式差在哪裡。

發想

硬碟快滿了,現成的工具卻要等

2026 年 10 月,我的 Mac mini 硬碟快滿了。系統設定的「儲存空間」只給一條彩色長條,最大的一塊叫「系統資料」,點進去也看不出是什麼。

系統設定的儲存空間:已使用 409.67 GB,最大的一段灰色是系統資料
系統設定的「儲存空間」:中間那一大段灰色是「系統資料」

我先用了 Mole 這套免費的 Mac 清理工具。它能用,但每次掃描都要等一陣子。Hoard 做出來之後,我把兩邊放在同一台機器上量,按下面的按鈕可以照實際秒數看一次。

第一次掃描 ~/Library (約 48 萬個檔案)
Hoard
3.2 秒
Mole
9.3 秒
第一次掃描的時間(秒,越短越快)
兩邊都從頭走一遍。同一台 Mac mini,2026 年 10 月 23 日,5 輪的中位數
Hoard Mole
~/Library · 約 48 萬個檔案
Hoard
3.2
Mole
9.3
我的專案資料夾 · 約 83 萬個檔案
Hoard
3.6
Mole
7.1
0510 秒
資料夾HoardMole
~/Library3.17 (2.39–7.51)9.31 (8.05–12.10)
我的專案資料夾3.63 (3.57–6.67)7.10 (6.07–8.64)

2026 年 10 月 23 日,同一台 Mac mini。Hoard 0.6.3 對 Mole 開源的命令列版 V1.62.0,兩個工具輪流跑 5 輪,取中位數(括號是最快到最慢),單位秒。量的時候機器上還有別的工作在跑,秒數整體偏慢,請看相對差距。我平常用的 Mole.app 圖形版是另一套程式,沒有量到。

第一次掃描,兩邊都從頭走一遍,Mole 要花 Hoard 二到三倍的時間。兩邊也都有快取,重開剛掃過的資料夾都只要一兩秒。差別在快取準不準:Mole 的快取看的是資料夾的修改時間,檔案變大時資料夾沒變,它就會回報舊數字。我對一個檔案追加了 50 MB,Mole 用快取回報的還是原本的 150 B。Hoard 讀完快取後,會用 macOS 記下的檔案變動紀錄補上之後的變化。另外 Mole 把 node_modules 這類資料夾整包估算,在 ~/Library 只實際數了大約一半的檔案。

我要的是掃一次就準,之後點到哪看到哪,所以決定自己做。

想法

這次的第一步不是寫程式,是先量

以前工具不合用,我會換一個,或忍著用。這次換了一個順序,整個過程我主要做決定,寫程式交給 AI。

先量,確定做得出來才動手

我讓 AI 先寫一支小實驗,只量「完整走一遍資料夾要多久」。10 月 20 日,我的專案資料夾當時約 88 萬個檔案,走一遍約 4 秒,比 Mole 只走三成檔案的 8 秒還快,我才決定做下去。

讀別人的程式,學想法

Mole 的命令列版是開源的。我讓 AI 讀它怎麼處理 APFS 的複製檔、讀不到的資料夾怎麼標示,借了這些想法,程式碼一行都沒抄。

我寫要求、看結果、退件

任務卡、實作、審查分給不同的 agent,我照之前那套〈多 agent 分工〉在跑。名字也是這樣定的:AI 第一輪提的 Meerkat(狐獴)和手繪圖示都被我退了,最後選了松鼠。牠會把堅果藏在很多地方,也記得藏在哪裡,英文名 Hoard 就是囤積的意思。

Hoard 的圖示,淺色版和深色版
松鼠圖示,淺色和深色兩版

10 月 20 日寫設計文件,22 日 Hoard 0.6.0 就在 GitHub 開源了。

設計

人看地圖,AI 問清單

Hoard 有兩種使用者:我自己,和我找來幫忙的 AI agent。同一次掃描,給兩種讀法。

給人的是空間地圖。每個資料夾畫成一塊,面積就是它的大小,最大的那塊一眼就看得到,點兩下就進去。

Hoard 的空間地圖:每個資料夾一塊,面積代表大小
空間地圖:面積越大,佔的空間越多(示範資料夾)

地圖之外還有三種清單:最大的檔案、檔案類型、很久沒打開的檔案。

最大的檔案清單
最大的檔案
檔案類型分布
檔案類型
很久沒打開的檔案清單
很久沒動的檔案

給 AI 的是命令列和 MCP。每個指令加上 --json,就會輸出程式讀得懂的格式。我在 Claude Code 裡問「哪些可以清」,它會去問 Hoard,拿回一份附理由的清單,例如哪些是可以重新下載的快取。

在 Claude Code 問哪些可以清:AI 用 Hoard 跑完掃描,分成 Hoard 標為可安全清除的、AI 自己判斷要人確認的、建議保留的三組
在 Claude Code 問「哪些可以清」:Hoard 給出附理由的清單,AI 再補上自己的判斷(示範資料夾)

人用眼睛找大東西,AI 用問的拿清單,背後是同一次掃描。

過程

第一版之後的功能,是讓 AI 讀完留言挑的

第一版能用之後,我請 AI 去讀 Hacker News 和 Reddit 上約 1,600 則討論 Mac 磁碟工具的留言(2026 年 10 月)。被讚美的地方照著學,被抱怨的地方避開。

最多人許願的是「上次掃描之後,什麼變大了」。Hoard 剛好已經有,叫「最近變動」,我就把它挪到說明的第一條。

最近變動:和上一次掃描相比的變大、變小、新增與移除
最近變動:和上一次掃描相比,哪些變大、變小、新增、消失

還沒做好的幾件,在接下來的版本補上。「系統資料」拆出量得到的部分,像交換檔、快照、讀不到的資料夾。在 Finder 按右鍵就能用 Hoard 打開,清單也能匯出成 CSV。查不到的大小一律標「不明」,不寫成 0。

「可以清掉的」頁面:看不到的空間卡片列出虛擬記憶體、其他磁區、快照、讀不到的資料夾,下面是附理由的清理建議
「看不到的空間」:交換檔、快照、其他磁區、讀不到的資料夾各佔多少;下面是附理由的清理建議

第一版之後補的細節,大多來自這些留言。

開源

這種工具很難收費,不如開源

我想過要不要收費,想到最後覺得很尷尬。Hoard 做的事說得出來:掃描、畫地圖、列清單。把這些說明交給任何一個 AI agent,它就能照著重做一套,甚至直接逆向這個 app。

所以我用 MIT 授權開源。換到的是另一種東西:有人拿去用、回報問題、交流做法,別人也看得到我做的東西用不用得下去。對我來說,這份信用比授權費更值得累積。

開源也有代價:維護是公開的。我在 README 寫的是「盡力維護」,issue 不保證回覆時間。

收費擋不住重做,開源至少能換到交流。

試用

想試用之前,先知道這三件事

  • 沒經過 Apple 公證(公證要付費的開發者帳號),第一次打開會被擋,要到「隱私權與安全性」按「強制打開」。
  • 掃整顆硬碟要給「完整磁碟取用權限」,而且每次更新後都要重新給一次。
  • 只為 Apple 晶片建置,Intel Mac 沒有測過。
brew install operonlab/tap/hoard

這三件能接受的話,可以裝起來掃一次自己的硬碟。

帶走這段

複製給你的 AI Agent

先看是誰佔了空間,再決定要不要清。

想知道 Hoard 適不適合你的 Mac,把下面這段貼給你的 AI,讓它照你的實際環境判斷。

# 複製給你的 AI Agent 請先讀這篇文章:https://blog.joneshong.com/zh/blog/hoard-disk-map 文章介紹 Hoard,一個 macOS 的磁碟空間工具,命令列有這些指令: - hoard doctor:檢查它依賴的 macOS 機制 - hoard scan ~ --top 10:最大的資料夾 - hoard stale ~ --days 180 --min-size 50MB:半年沒打開的大檔 - hoard diff:和上次掃描相比多了什麼 - hoard hidden:「系統資料」裡量得到的部分 每個指令加 --json 會輸出 JSON。 請幫我評估: 1. 先確認我的 Mac 是 macOS 14 以上、Apple 晶片,有沒有裝 Homebrew。 2. 符合的話用 Homebrew 裝,跑 hoard doctor 和 hoard scan ~ --top 10 --json。 3. 告訴我前三大的資料夾是什麼,哪些看起來是可以重新產生的快取。 如果我的機器不符合條件,或硬碟根本沒有空間壓力,直接說不需要,不用硬裝。

延伸閱讀

資源為什麼重要
operonlab/hoard原始碼、安裝說明和四種語言的 README;文中的速度和功能都能在這裡對照。
把手邊的工具和額度用好,一次多 agent 分工的嘗試Hoard 的程式就是照這套分工寫出來的:誰寫任務卡、誰實作、誰審查。
✦ 帶走這段