Mole 如何從 Shell 腳本長成 Mac App
很多年來,我一直留著一份私人 shell 腳本,只用來清理 Mac。
我喜歡電腦保持輕快,所以像照料花園一樣反覆打磨它,從 500 行寫到 2000 多行。2025 年 10 月,磁碟又滿了。我試了幾款知名清理軟體,效果都不明顯,最後執行自己的腳本,一次清掉幾十 GB。
這件事值得分享出去。
當時我在三亞度假,坐在飯店泳池邊,決定把腳本做成開源命令列工具。鼴鼠前肢有力,擅長鑽進地下尋找東西,正像這份腳本會深入 macOS 容易堆積雜物的角落。所以它叫 Mole。第一個版本的橫幅寫著「can dig deep to clean your Mac」,直到今天也沒變。
社群把它帶到了更遠的地方
最初只期待有幾百位使用者。六個月後,GitHub 倉庫超過 5 萬顆星。更重要的是,使用者提交了近 800 個 issue,補充我從沒見過的清理路徑,社群貢獻了約 300 個功能 PR,世界各地 120 多位開發者成為貢獻者。
每台開發電腦都會在不同位置留下建置產物,社群繪出的地圖遠比我一個人更完整。
覆蓋變廣也帶來更難的一課:每增加一個清理目標,就增加一個誤刪位置。路徑清單遠遠不夠,還需要統一路徑保護、受保護目錄、活動行程檢查、逾時、操作前檢查,以及鎖住拒絕邊界的測試。
社群不只增加了功能,也迫使一份私人腳本長出通用的安全模型。
真正讓我意識到規模的,是一張帳單。README 裡兩張截圖透過 Vercel CDN 提供,有一週流量把額度跑超了,我因為兩張圖片欠了 80 美元。
為什麼又做 Mac 應用程式
很早就有使用者說:父母想用,妹妹想用,但他們永遠不會打開終端機。
我把想法擱置了幾個月,因為命令列版還不夠成熟。到 2026 年春天,基礎終於穩了。我用幾個週末完成應用程式,並在 2026 年 5 月 11 日晚發布 Mole for Mac。涵蓋兩台 Mac,終身更新,發布時給了早鳥價,算是感謝一路測試命令列版的使用者。
應用程式不能只是呼叫腳本的按鈕。圖形工具要把探索與刪除分開,支援取消,說明權限,在掃描時保持視窗穩定,還要給從未讀過 shell 指令的人一份可檢查、可還原的計畫。
命令列版告訴應用程式該找什麼,應用程式則迫使整個過程變得可見、可中斷。
五顆行星
它本可以只是一個帶清理按鈕的選單列工具。但世界上已經有太多 AI 產生的雜物軟體。既然要投入 token,我希望最後得到的是一個讓人舒服的東西,而不是又一件污染時間軸的產品。
小時候我喜歡看行星。十年前剛學前端時,最想學 WebGL,也是為了畫它們。做這款應用程式,終於讓兩件事碰到一起:
- 「清理」是地球,山間雨水洗去舊塵
- 「軟體」是火星,紅色沙土掩埋舊痕
- 「最佳化」是水星,離太陽最近,飛得最快
- 「分析」是木星,擁有最遼闊的眼睛
- 「狀態」是太陽,從不休眠的光
行星紋理取自天文影像,地球參考了 NASA 的藍色彈珠。每顆行星都換過十多次,旋轉方向和相對速度參照真實天體,操作完成時的小小飛行效果也是如此。
嚴格來說,這和鼴鼠沒有太大關係。更像是一隻地下的小動物,從洞口抬頭看見很大的天空,然後安靜下來。
發布那一晚
晚上十點左右,我發布了應用程式。朋友們轉發後,手機開始大約每十秒震一次,提示新的購買。訂單來自法國、德國,還有我沒見過的貨幣。iPhone 只是顯示通知,就熱得不停掉電。
我關掉郵件提醒去睡覺,第二天早上訂單還在來。不少人只是因為命令列版曾經善待他們,就願意購買 Mac 應用程式。
應用程式還有不少空缺。很感謝大家願意為一個漂亮的小玩具付費,也願意等我慢慢補齊。
我喜歡讓事情按自己的節奏成熟。Mole 花了很多年,從私人腳本走到開源命令列工具,再走到付費應用程式。整段路上,最珍貴的是長期迭代,以及與世界各地開發者建立的友誼。這些比銷售數字更值得記住。