# Mole 如何从 Shell 脚本长成 Mac 应用

> 一份 500 行私人脚本，怎样变成 5 万星开源项目，再走到带五颗行星的原生 Mac 应用。

Published: 2026-05-11 | Updated: 2026-08-16

很多年来，我一直留着一份私人 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/zh/)。覆盖两台 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/zh/blog/the-story-of-mole
Blog index for agents: https://mole.fit/zh/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
