# Mole 如何從 Shell 腳本長成 Mac App

> 私用清理腳本如何變成開源 CLI、更嚴格的安全模型，以及為可見、可中斷工作設計的原生 App。

Published: 2026-05-11 | Updated: 2026-09-05

很多年來，我一直留著一份私人 shell 腳本，只用來清理 Mac。

我喜歡電腦保持輕快，所以像照料花園一樣反覆打磨它，從 500 行寫到 2000 多行。2025 年 10 月，磁碟又滿了。我試了幾款知名清理軟體，效果都不明顯，最後執行自己的腳本，一次清掉幾十 GB。

這件事值得分享出去。

當時我在三亞度假，坐在飯店泳池邊，決定把腳本做成開源命令列工具。鼴鼠前肢有力，擅長鑽進地下尋找東西，正像這份腳本會深入 macOS 容易堆積雜物的角落。所以它叫 [Mole](https://github.com/tw93/mole)。第一個版本的橫幅寫著「can dig deep to clean your Mac」，直到今天也沒變。

## 社群把它帶到了更遠的地方

最初只期待有幾百位使用者。六個月後，GitHub 倉庫超過 5 萬顆星。更重要的是，使用者提交了近 800 個 issue，補充我從沒見過的清理路徑，社群貢獻了約 300 個功能 PR，世界各地 120 多位開發者成為貢獻者。

每台開發電腦都會在不同位置留下建置產物，社群繪出的地圖遠比我一個人更完整。

覆蓋變廣也帶來更難的一課：每增加一個清理目標，就增加一個誤刪位置。路徑清單遠遠不夠，還需要統一路徑保護、受保護目錄、活動行程檢查、逾時、操作前檢查，以及鎖住拒絕邊界的測試。

社群不只增加了功能，也迫使一份私人腳本長出通用的安全模型。

<figure class="blog-diagram">
  <video src="https://mole.fit/img/blog/mole-contributors.mp4" width="1600" height="900" autoplay muted loop playsinline></video>
  <figcaption>半年提交歷史：每個叢集是一角程式碼，每個身影是一位貢獻者。</figcaption>
</figure>

真正讓我意識到規模的，是一張帳單。README 裡兩張截圖透過 Vercel CDN 提供，有一週流量把額度跑超了，我因為兩張圖片欠了 80 美元。

## 為什麼又做 Mac 應用程式

很早就有使用者說：父母想用，妹妹想用，但他們永遠不會打開終端機。

我把想法擱置了幾個月，因為命令列版還不夠成熟。到 2026 年春天，基礎終於穩了。我用幾個週末完成應用程式，並在 2026 年 5 月 11 日晚發布 [Mole for Mac](https://mole.fit/tw/)。涵蓋兩台 Mac，終身更新，發布時給了早鳥價，算是感謝一路測試命令列版的使用者。

應用程式不能只是呼叫腳本的按鈕。圖形工具要把探索與刪除分開，支援取消，說明權限，在掃描時保持視窗穩定，還要給從未讀過 shell 指令的人一份可檢查、可還原的計畫。

命令列版告訴應用程式該找什麼，應用程式則迫使整個過程變得可見、可中斷。

<figure class="blog-diagram">
  <video src="https://mole.fit/img/blog/mole-mac-demo.mp4" width="1440" height="1074" autoplay muted loop playsinline></video>
  <figcaption>Mole for Mac：清理、軟體管理、最佳化、磁碟分析與即時狀態。</figcaption>
</figure>

## 五顆行星

它本可以只是一個帶清理按鈕的選單列工具。但世界上已經有太多 AI 產生的雜物軟體。既然要投入 token，我希望最後得到的是一個讓人舒服的東西，而不是又一件污染時間軸的產品。

小時候我喜歡看行星。十年前剛學前端時，最想學 WebGL，也是為了畫它們。做這款應用程式，終於讓兩件事碰到一起：

- 「清理」是地球，山間雨水洗去舊塵
- 「軟體」是火星，紅色沙土掩埋舊痕
- 「最佳化」是水星，離太陽最近，飛得最快
- 「分析」是木星，擁有最遼闊的眼睛
- 「狀態」是太陽，從不休眠的光

行星紋理取自天文影像，地球參考了 NASA 的[藍色彈珠](https://visibleearth.nasa.gov/images/57752/blue-marble-land-surface-shallow-water-and-shaded-topography)。每顆行星都換過十多次，旋轉方向和相對速度參照真實天體，操作完成時的小小飛行效果也是如此。

嚴格來說，這和鼴鼠沒有太大關係。更像是一隻地下的小動物，從洞口抬頭看見很大的天空，然後安靜下來。

## 發布那一晚

晚上十點左右，我發布了應用程式。朋友們轉發後，手機開始大約每十秒震一次，提示新的購買。訂單來自法國、德國，還有我沒見過的貨幣。iPhone 只是顯示通知，就熱得不停掉電。

我關掉郵件提醒去睡覺，第二天早上訂單還在來。不少人只是因為命令列版曾經善待他們，就願意購買 Mac 應用程式。

應用程式還有不少空缺。很感謝大家願意為一個漂亮的小玩具付費，也願意等我慢慢補齊。

我喜歡讓事情按自己的節奏成熟。Mole 花了很多年，從私人腳本走到開源命令列工具，再走到付費應用程式。整段路上，最珍貴的是長期迭代，以及與世界各地開發者建立的友誼。這些比銷售數字更值得記住。

---

Canonical HTML page: https://mole.fit/tw/blog/the-story-of-mole
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
