Vibe 了 7 个月,我一个人用 AI 写了 67000 行代码,上架了一个 iOS App

· 2 min read
AI Vibe Coding iOS

先说结果

7 个月,632 次 commit,67,064 行 Swift 代码,一个人完成了一个 iOS App 的从零到上架。

这个 App 叫 WorkValue,利用 iOS 系统的地点感知能力自动记录你每天在公司待了多久,录入工资后算出你的真实时薪。不用手动打卡,不常驻后台,不上传服务器,所有数据留在本地。

WorkValue App 截图

为什么做这个

一直想记录自己的上班时间,算算 Work Life Balance 到底怎么样。讽刺的是,一直太忙,没时间做这件事。

去年 8 月接触了 Claude Code,发现 Vibe Coding 搭一个 App 原型的速度远超预期。8 月 16 日,我开了这个坑。

当时的想法很简单:一个人 Vibe 一个月,上架,收工。

蜜月期

前两个月是真的爽。

8 月 152 次 commit,9 月 199 次,两个月 351 次提交,占了整个项目一半以上。每天跟 AI 对话,说几句话就能看到一个新页面、一个新功能。SwiftUI 布局、SwiftData 数据层、定位服务、Widget 小组件,功能像搭积木一样往上堆。

月份Commits状态
8 月152起步,激情满满
9 月199巅峰,功能井喷
10 月56减速
11 月42疲软
12 月13几乎停滞
1 月55缓慢回暖
2 月32低频维护
3 月83冲刺上架

信心满满,觉得 App Store 近在眼前。

整个项目的 commit 热力图,8-9 月那片亮绿色一目了然:

WorkValue 开发热力图

现实的暴击

10 月开始,一切变了。

Vibe Coding 让写代码变得很快,但没有人帮我回答「这个功能到底要不要做」。经常花一整天 Vibe 出一个页面,用了两天觉得不对,全部推翻重来。产品方向不清晰的时候,写代码越快,走弯路也越快。

与此同时,Bug 开始堆积。当时用的 Sonnet 3.5,模型能力有限,写出来的代码质量参差不齐。一个 Bug 修好了,两个新的冒出来。更要命的是,我对整个 App 的架构正在失去掌握。很多代码是 AI 写的,我只看了个大概,出了问题改起来无从下手。

创造性的工作结束了,剩下的全是产品功能的取舍和边界条件的处理。这些事情既不新鲜也不好玩,偏偏还只能自己想。12 月,我只提交了 13 次 commit,项目几乎停摆。

回头看,这大概是 Vibe Coding 最容易被忽略的部分:AI 能帮你把想法变成代码,但不能帮你想清楚你到底要做什么。编码门槛降低了,产品思考的门槛一点没降。

转机

转折点是今年 Opus 4.6 的发布。

我抱着「好歹收个尾」的心态把项目丢给它。结果出乎意料,它能看懂之前那些乱七八糟的代码,而且能系统性地重构。之前 Sonnet 3.5 留下的屎山,Opus 4.6 一个个理清楚了。所以我现在有了一个新的信念:AI 写的屎山,可以让未来更强的 AI 来重构。

功能一点点收敛,该砍的砍,该改的改。3 月冲刺了 83 次 commit,把所有松散的部分收拢到位。

3 月 10 日提交审核,被苹果打回了一次,修了一些隐私描述的问题后重新提交,3 月 16 日正式上架。从第一行代码到 App Store,整整 7 个月。

怎么做到不耗电的

很多人好奇:一个记录工时的 App,怎么做到不用手动打卡、不常驻后台、还几乎不耗电?

答案是苹果的 CLVisit API。

大多数定位 App 的做法是持续获取 GPS 坐标,然后判断你在哪里,这很耗电,需要 App 常驻后台。CLVisit 的思路完全不同:它是苹果系统级的「地点访问」检测服务,综合 GPS、WiFi、蓝牙、蜂窝基站和运动传感器,由系统自己判断「用户到达了某个地点」和「用户离开了某个地点」,然后把事件推送给 App。

WorkValue 要做的就是拿到到达和离开事件后,判断这个地点是不是你设定的工作地点。是的话就自动记一条工时。

最妙的是,就算 App 被系统杀掉了,下次打开时系统会把这段时间里遗漏的事件补发过来。所以你完全不需要让 App 保持后台运行,一天下来打开一次,所有工时就自动补全了。这也是日耗电量低到可以忽略的原因:它根本不做持续定位,只是被动接收系统推送。

当然 CLVisit 不是完美的。它的检测有 5-10 分钟的延迟(系统需要确认你是真的停留而不是路过),偶尔也会把在车里等人误判为一次访问。去重、合并短暂离开、过滤低置信度的记录,这部分代码反而占了整个定位模块的大头。

七个月下来的体会

Vibe Coding 确实让一个人独立完成一个完整 App 成为可能。67000 行代码、16 种语言本地化、Widget、iCloud 同步,如果纯手写,这个体量大概需要一个小团队干几个月。

但真正耗时的从来不是写代码,而是想清楚做什么、怎么取舍、哪些功能该砍掉。AI 帮不了你做这些决定,甚至因为写代码变得太容易了,你会更频繁地走弯路。反正重写也不贵嘛,那就先写了再说吧。然后就掉坑里了。

Vibe Coding 真正省时间的地方,其实是那些重复性的苦力活。16 种语言的翻译,AI 批量生成,我只抽查关键语言的质量。每次改了 UI 要重新截 App Store 的图,每张图截 16 遍,我让 AI 用 Python 写了截图合成脚本,一键全部重新生成。发版提审也是,Fastlane 自动化搞定构建、上传、多语言升级文案填充、提交审核,一条命令跑完。这些流水线式的工作让 AI 搭好之后,省下来的时间可以花在产品本身。

上架两周的成绩单

既然文章都写了,也晒一下真实数据。上架两周,100 次下载,18 次内购,12 个活跃订阅,App Store 页面转化率 13.9%。因为订阅有首月免费,所以目前收入基本为零,苹果后台收入栏显示的是「数据不足」。

App Store Connect 后台数据

成本这边,Apple 开发者账号 99 美元/年是固定的。AI 工具的费用是 Claude 订阅 100 美元/月加上 Codex 20 美元/月,不过这些也同时用在工作上,不算纯粹为这个项目花的钱。没有服务器费用,没有设计师费用,没有任何额外开支。一个人的项目好处就在这里,成本压得很低,不赚钱也不会亏太多。

所以如果你也想 Vibe 一个 App,我的建议是先想清楚你到底要做什么,再动手。Vibe Coding 加速的是落地,不是思考。


WorkValue 现在可以在 App Store 免费下载。如果你也想看看自己的真实时薪是多少,欢迎试试。

现在有个限时活动:打开 App → 会员订阅页 → 选「兑换代码」→ 输入 WORKVALUE,免费领 3 个月会员(领完可以立刻取消订阅,不会扣费)。活动截止到 4 月 15 日。