我是如何借助 AI 开发一款对标 CleanMyMac 的清理软件:CleanDiskGo

0 阅读13分钟

一句话总结:
这不是一篇“技术炫技”的文章,而是一篇“普通开发者,如何把 AI 当成外包团队,用有限精力做出一款像样的 Mac 清理工具”的实战复盘。

首先,先放几张目前最新版 CleanDiskGo 的截图,大家有什么建议都可以在评论区留言告诉我。

01.png

02.png

03.png

04.png

起心动念:为什么要做一款对标 CleanMyMac 的工具?

如果你和我一样,是重度 Mac 用户,大概都经历过这几个时刻:

  • 硬盘又红了,系统提示“存储空间不足”
  • Xcode、Docker、各种 SDK 把 /Library~/Library 占得满满当当
  • CleanMyMac 虽然好用,但订阅价格不算便宜,而且很多功能是“买了也用不太上”

我当时的想法很简单:

  • 我只想要一款专注清理和体检的小工具
  • 界面干净、操作简单,别那么多营销弹窗
  • 能看得懂它在清什么、为什么能删、删了会有什么影响

于是就有了一个念头:
能不能做一款“轻量版 CleanMyMac”,我自己和身边朋友都能长期用?
这就是 CleanDiskGo 的起点。

关键问题来了:
我是一个有十年左右经验的 iOS 开发者,已经转型做全栈一段时间,但依然是独立开发者,没有大团队、没有专职 UI、也不是专门做系统工具出身。
如果靠传统方式,一点点调研、一点点设计,可能一年都上线不了。

所以我选择了另一条路:把 AI 当成“外包团队”,从 0 到 1 帮我一起做。


整体思路:把 AI 当成“虚拟合伙人”而不是“代码自动机”

很多人用 AI 写代码的方式,是直接一句:

“帮我写一个 Mac 清理软件”

然后看着模型开始胡乱输出。
我这次刻意换了一个思路——
不让 AI 直接“写代码”,而是先让它帮我做“产品和技术决策”。

整体流程我拆成了 5 个阶段:

  1. 产品定位 & 功能边界:和 AI 一起确定“我到底要做成什么样”
  2. 技术选型 & 架构草图:让 AI 帮我快速比较各种技术路线
  3. 清理规则 & 安全边界:AI 帮我梳理“哪些能删,哪些坚决不能碰”
  4. 交互与文案:借助 AI 写懂人话的提示和确认文案
  5. 迭代与优化:把用户反馈和日志丢给 AI,辅助做版本规划

下面我就按时间线拆开讲,每一步我是具体怎么用 AI 的。


第一步:用 AI 做“产品经理”——先把 CleanDiskGo 讲清楚

1.1 用对话敲定目标用户和核心场景

我给 AI 的第一个任务不是“写代码”,而是这样一句话:

“假设我要做一款对标 CleanMyMac 的 Mac 清理工具,名字叫 CleanDiskGo。目标用户是:磁盘经常告急的普通用户 + 做开发、装了很多工具的程序员。请帮我列出他们最真实的 5 个痛点,并按优先级排序。”

AI 给了一个很长的列表,我只做了两件事:

  • 让它每个痛点都配一个具体场景,比如“Xcode 占了 50G,不知道从哪删”
  • 让它限制在 5 条以内,强迫它做取舍

最后我保留下来的 3 个核心场景是:

  • 一键扫描,看到“大头”到底在哪里(缓存、日志、大文件、旧应用)
  • 对于每一类清理项,都能看到“删不删的后果”,而不是黑盒操作
  • reserved:给开发者一些“深度清理选项”(比如派生数据、Pods 缓存)

这一步做完,CleanDiskGo 的产品方向就有了:

  • 不做“全能助手”,只做“磁盘瘦身 + 健康体检”
  • 重视“可解释性”,任何清理项都要让用户看得懂

1.2 让 AI 帮我“反向拆解” CleanMyMac

接下来,我让 AI 扮演“竞品分析师”。

提示词大概是这样的(简化版):

“以资深 Mac 工具产品经理的身份,帮我从‘功能模块’、‘使用门槛’、‘价格和授权方式’三个维度,拆解 CleanMyMac。最后给一个‘我这种个人开发者可以优先对标的模块’列表,按性价比排序。”

AI 给出的建议非常关键:

  • 不要碰杀毒、防护这些高风险模块
  • 先聚焦:垃圾清理、应用卸载、大文件查找、启动项管理
  • 可以加一个“小而美”的加分项,比如:磁盘体检报告

这一步结束,我基本锁定了 CleanDiskGo 的 1.0 功能清单。


第二步:用 AI 做“技术顾问”——选对技术栈比什么都重要

有了产品大方向,第二个问题就是:用什么技术栈来实现?

2.1 技术路线博弈:Flutter / 原生 / Electron?

我把自己真实的约束告诉 AI:

  • 希望桌面端体验尽量贴近原生,不要太“网页感”
  • 个人开发者,开发和维护成本不能太高,最好能一套代码多端复用
  • 清理逻辑要能准确访问和操作文件系统

再结合我自己的履历——我写 iOS 大概十年左右,同时做 Flutter 已经三四年了,对 Flutter 全家桶比较熟——我们一起把技术路线梳理成了几种可能:

  • 路线 A:完全走 macOS 原生,Swift / SwiftUI 一套打到底
  • 路线 B:Electron + Node.js,前端技术栈做跨平台
  • 路线 C:以 Flutter 为主,用 Flutter Desktop 做 UI,底层通过插件或原生桥接访问系统能力

AI 帮我把每条路线的优劣势都列了一遍,包括:

  • 开发效率:UI 迭代速度、组件复用度
  • 体验:窗口渲染性能、系统感、字体和动效风格
  • 复杂度:权限、打包、签名、更新机制

结合我的经验和诉求,最后我们得出的结论是:

  • 如果已经有成熟 Flutter 经验,又希望未来可以顺手支持其他平台(比如 Windows),Flutter Desktop 是一个性价比很高的选择
  • 真正需要和系统深度集成的地方,再用原生能力或插件补足就好

于是 CleanDiskGo 首版我选择了:

  • 主 UI:Flutter(桌面端)
  • 清理逻辑:Flutter + 平台通道调用原生能力,外加少量可复用的脚本工具

AI 在这里帮了我两件事:

  • 帮我系统性地对比了 Flutter Desktop 和纯原生、Electron 的差异,让我更确定自己的选择不是“拍脑袋”
  • 帮我列了一个“用 Flutter 做桌面系统工具时需要注意的坑点清单”,包括窗口管理、文件权限、插件选型等,我就按那份清单逐项排雷

2.2 让 AI 直接画出架构草图

当技术路线确定后,我让 AI 帮我画了一个“文字版架构图”,包括:

  • UI 层:扫描状态展示、结果列表、详情页、确认弹窗
  • 核心服务:扫描引擎、规则引擎、任务队列、日志记录
  • 系统交互:文件系统访问、权限请求、系统信息获取

然后我根据这个架构,把代码仓库拆成了几个模块——
这一点特别重要:有了清晰的模块,后面再让 AI 写代码,就不会乱套。


第三步:最关键的一步——用 AI 设计“安全的清理规则”

做清理软件,最怕两件事:

  • 删得不干净,用户觉得这软件“没用”
  • 删错了东西,用户系统出问题,直接把软件卸载拉黑

所以,在真正写扫描逻辑之前,我先花了不少时间,专门和 AI 做了一轮“清理规则设计”。

3.1 让 AI 帮我分级:哪些是“安全垃圾”,哪些是“高风险”

我给了 AI 这样一个任务:

“列出 macOS 和常见应用(如 Xcode、Chrome、VS Code、各类聊天工具)产生的垃圾文件路径和类型。按‘几乎可以放心删除’、‘一般建议删除前询问’、‘高风险,默认不要勾选’三个等级分类。”

AI 给出的分类思路非常符合直觉,例如:

  • 几乎可以放心删:
    • 浏览器缓存
    • 应用自身的临时文件
    • Xcode 的 DerivedData(前提是标注会触发重新编译)
  • 建议确认后删除:
    • 旧版本应用残留
    • 大体积日志文件
  • 高风险:
    • 系统目录下的未知文件
    • 任意可执行文件

我做的事情,就是:

  • 让 AI 给出具体路径 + 文件匹配规则
  • 把这些规则固化成结构化配置,例如 JSON / Plist
  • 再在程序里解析这些配置,构造扫描任务

3.2 用 AI 自动生成“解释文案”

用户点开某个清理项时,最关心的是一个问题:

“你删的是啥?删了会怎样?”

于是我又给 AI 布置了一个任务:

“针对每一类清理项(例如:Xcode 派生数据、浏览器缓存、应用日志),请帮我写一段不超过 60 字的解释说明,包括:这是什么、删了会有什么影响、适合什么场景删除。语气尽量口语化。”

这些文案基本直接贴进了 CleanDiskGo,只做了一点微调。
效果很好——

  • 用户看到解释后,敢不敢勾选心里有数
  • 我也省去了大量“绞尽脑汁写说明”的时间

第四步:让 AI 帮我“写界面”和“写提示”

很多人以为用 AI 写 UI,就是一句:“帮我写一个 Flutter 的界面代码”。
我这次的做法更偏“结对编程”:

4.1 用自然语言描述交互,再让 AI 生成 Flutter 代码

比如我给的提示大致是:

“做一个 Mac 工具的主界面,上半部分是一个圆形进度和总可清理空间,下半部分是一个列表,每一行显示清理类型(比如 系统垃圾 / 应用缓存 / 日志文件)+ 可清理大小 + 一个开关。风格尽量简洁,配色偏系统原生。请用 Flutter 写出 widget 结构和基本布局。”

AI 生成的代码,我会做几件事情:

  • 先通读一遍,看有没有明显违背 Apple 人机规范的地方
  • 本地跑起来,看看整体布局和交互是否顺手
  • 不满意的地方,再用自然语言补充:“把这个改成……”,“这个间距再大一点”

这一步的感觉就像是:

  • AI 帮你快速打一个“80 分的草稿”
  • 你只需要花精力把它从 80 分打磨到 90 分

4.2 所有弹窗文案,全部交给 AI 打底

比如:

  • 扫描完成后的总结提示
  • 删除前的确认弹窗
  • 遇到权限不足、磁盘只读等异常时的错误提示

我给 AI 的统一要求是:

  • 不要吓人,但要说清风险
  • 不要出现“技术控行话”
  • 每句尽量短,手机端看也要一目了然(虽然现在是 Mac)

最后的效果是——
整个 App 的“说话风格”相对统一,而且偏“人味儿”,而不是工具感。


第五步:上线后的迭代,我也把 AI 拉进了“复盘会”

CleanDiskGo 内测一段时间后,我收集了三类数据:

  • 用户反馈(微信群、私聊、邮件)
  • 应用日志(比如某些路径访问失败、清理耗时异常)
  • 自己日常使用的体验

以往我可能会自己一个个看,这次我直接拉着 AI 一起复盘。

5.1 让 AI 帮我做“问题聚类”

比如我会把一堆用户反馈丢进去,然后说:

“请帮我从这些反馈里,整理出用户最常提到的 5 类问题或期待的功能,并按优先级排序。优先级评估时,请考虑影响范围(多少人会遇到)和严重程度(是否影响正常使用)。最后用一句话给出‘下一版优先要做什么’的建议。”

AI 很擅长做这种“文本聚类 + 排序”的工作。
通过这一步,我很快就确定了几个要优先跟进的方向:

  • 提升扫描速度
  • 增加“按目录查看大文件”的功能
  • 增加“模拟清理 / 预估节省空间”的模式

5.2 让 AI 帮我 review 自己的代码

这一步有点像“找资深同事帮你过一遍 PR”。
我会选一些核心模块的代码,丢给 AI,让它帮我看:

  • 有没有明显的性能问题(比如不必要的文件遍历)
  • 有没有潜在的崩溃点(比如没有处理空路径、权限异常)
  • 有没有可以提取成公共方法、减少重复的地方

当然,AI 的建议我不会“全盘照收”,而是:

  • 把它看成一种“启发”
  • 有价值的就采纳,没价值的就忽略

但整体感受是:
有 AI 帮忙 review,至少帮我捡出了几处“细节 bug”和“不够优雅的实现”。


这次实战,我对“AI 助力开发”的几个新认识

做到这里,CleanDiskGo 的 1.0 基本成型。
回头复盘,我对“借助 AI 做产品”有了几个比较深的感受:

1. AI 更适合做“决策和结构”,而不是“无脑写代码”

如果你把 AI 当成一个“会写代码的搜索引擎”,它的价值大概只有 30%。
但如果你把它当成:

  • 产品讨论对象
  • 技术路线顾问
  • 架构搭建助手
  • 文案与交互的合作者

它的价值会瞬间放大很多。

2. 做系统工具这类“有风险的东西”,AI 的角色要更“保守”

在清理规则、安全边界这些地方,我给 AI 的指令都是偏保守的:

  • 默认不要推荐删除任何“系统关键文件”
  • 只要判断不确定,就归类为“高风险,默认不勾选”
  • 任何清理项都要配解释文案

这让 CleanDiskGo 虽然在清理力度上不算“激进”,但稳定性和安全感更高——
这也是我个人更看重的。

3. AI 对独立开发者最大的价值:降低“启动成本”和“心智负担”

如果没有 AI,我大概率不会在这么短的时间里,把 CleanDiskGo 从想法推进到可用版本。
原因很简单:

  • 竞品调研、规则梳理、文案打磨,这些都太耗时间
  • 很多地方你“知道大概该怎么做”,但不确定是不是最佳实践

而现在,只要我愿意开个对话框,就等于随时有一个“虚拟合伙人”在旁边:

  • 我提方向,它帮我补细节
  • 我给约束,它帮我找最优解
  • 我写完代码,它帮我挑毛病

如果你也想做一个自己的“小工具”,可以从哪里开始?

最后,留一点“行动建议”给你:

  • 不要一上来就让 AI “帮我写一个 XXX 应用”
  • 先问它:“在这个方向上,一个独立开发者,最适合做的 3 类小工具是什么?”
  • 然后选一个你自己也有刚需、而且范围相对可控的,慢慢做起来

在 CleanDiskGo 这次实战之后,我越来越相信一句话:

AI 不会替代认真的开发者,
它只会帮认真的人,把想做的事情,做得更快、更完整一点。

如果你也在做自己的工具,或者对 CleanDiskGo 的实现细节好奇,
欢迎来聊,我们可以一起让 AI 当好这个“新队友”。