Mac 的空间快满时,我最先看到的往往不是几个明确的“大文件”,而是一堆散在不同工具目录里的缓存、构建产物和本地数据。

对开发环境来说,目录大不等于可以直接删除。node_modules 和 Cargo target 通常可以重建,Docker volume 里却可能放着数据库;Xcode DerivedData 清掉后会重新生成,但下一次构建要付出时间。真正需要判断的是:它属于什么工具,能不能恢复,删除后会影响什么。

开发环境里常见的占用

这些数据不会集中在同一个位置,macOS 的存储页面也很难解释每个目录和当前项目的关系。最后看到的通常只是“磁盘快满了”,而不是一份可以直接执行的清理清单。

我为什么不想做黑盒一键清理

开发缓存并不等于垃圾。

同样是 20 GB,占用的含义可能完全不同:一份可重新下载的依赖缓存、一组正在使用的 Docker 数据、一个已经归档但仍需要保留的构建结果。只按大小排序,很容易把“释放空间”变成“破坏本地环境”。

我更愿意把扫描结果分成三类:

等级 含义
Safe 可重建的缓存或临时数据,通常可以清理
Caution 可能影响当前开发流程,需要先确认
Danger 可能包含重要数据,默认不应选择

这个分类不能替用户做决定,但至少能把风险放在点击删除之前。

一个更稳的清理顺序

我认为开发者清理工具至少要完成三件事:

  1. 扫描:找到开发缓存、构建产物、包管理器缓存、IDE、Docker 和 Xcode 数据。
  2. 解释:说明目录来自哪个工具,是否可重建,删除后可能发生什么。
  3. 预览:在真正删除前展示范围、体积和风险等级,让用户最后确认。

我正在做的 Zen Clear,就是从这个顺序开始的。它面对的不是所有 macOS 用户,而是磁盘里长期堆着多个项目、工具链和本地环境的开发者。

我把本地扫描作为产品边界:清理判断应尽量在用户自己的 Mac 上完成,而不是先把文件内容和扫描结果交给云端分析。这个选择让产品更克制,也意味着工具必须把本地规则、风险解释和恢复边界做得更清楚。

产品页面:rustzen.dev

反馈邮箱:support@rustzen.dev

我更希望第一次使用 Zen Clear 的人先把它当成一次开发磁盘体检。先确认空间被什么占用,再决定哪些东西值得清理。