我在未阅读代码的情况下发布了生产 iOS 应用:“Vibe Coding”的现实
Source: Dev.to
抱歉,我无法直接访问外部链接获取文章内容。请您把需要翻译的文本粘贴在这里,我会按照要求保留源链接并将内容翻译成简体中文。
“AI 代理时代”让人疲惫——我打造 dumppp(原生 iOS Notion 客户端)的历程
2025 年底,一场关于“AI 代理时代实际上让人感到疲惫”的讨论在日本开发者社区疯传。我深有同感。虽然本文标题看似相反,但读到最后,你会明白我为何觉得这个新纪元如此耗费精力。
这就是我如何利用 AI 代理,在不阅读任何逻辑代码的情况下发布 dumppp——一款原生 iOS Notion 客户端的故事。
注意: 为了本文的表述,我把通过 AI 编码且不深入阅读代码的过程称为 “Vibe Coding”。
作为指挥者的“痛苦”
“AI 会为你构建应用。”
几年前,我们会梦想这样的科幻世界并欢呼。但现在,这个世界已经到来——感觉如何?
说实话:这很累。
当 AI 代理充当“开发者”,以闪电般的速度生成代码时,人类被迫承担 指挥者 的角色,承担 100% 的责任。 “是 AI 写的,我不知道” 并不能成立。即使你不阅读代码,行为的责任、规格之间的矛盾以及用户体验的质量都回到了你的肩上。保持“决策纯粹性”需要的心理耐力远超我的想象。
“自我设限”:推动实验
我不想放弃科幻梦。我相信通过完成一个高难度项目——发布 iOS 应用——可以真正体会这种疲惫,并看到其背后是什么。因此,在 dumppp 项目中,我设定了一个宏大的约束:
“不阅读代码。”
我可能会瞥一眼构建错误,但我根本放弃了理解实现细节的尝试。为什么?因为我想实验 AI 能在多大程度上被视为 自主实现者,而不是仅仅一个补全工具。
在进行 “Vibe Coding” 时,我把所有资源倾注于:
- 需求定义 – 我们要解决什么问题?
- 营销 – 我们如何传播?
- 变现策略 – 我们如何实现可持续?
- UX 验证 – 使用体验真的好吗?
我还决定使用 Swift 开发原生 iOS 应用。虽然可以选择跨平台框架,但我坚持使用原生 API,以最大化用户体验。在这次实验中,原生开发的额外难度本身也是乐趣的一部分。
完全 Vibe Coding 的好处
我发现的收益令人惊叹:
- 一人“团队” – 我担任产品负责人/指挥者,AI 则是开发团队。这种明确的分工实现了大规模并行。
- 使用未知技术 – OAuth、Notion API、StoreKit 2(订阅)、AppIntents、SwiftUI。所有这些我都通过与 AI 对话实现,根本没有打开参考手册。
- 超快本地化 – 支持六种语言(日、英、中文、法、德)。让 AI 完成从翻译到实现的全部工作只用了几分钟。边洗澡边让它添加三种新语言,简直像魔法。
缺点:疲惫的核心
真正的“痛点”在这里:
- “够好”之外的地狱 – AI 能以惊人速度让你达到约 60% 的完成度。要达到 80% 以上的“可投产”质量——修复仅在特定条件下出现的微小 UI 问题或解决离线同步不一致——就是不阅读代码的债务到期的时刻。
- 4000 行“肥大文件”问题 – 没有严格的规则,让 AI 处理所有事务会导致文件划分混乱。我最终得到的文件有时高达 4000 行。AI 本身也开始失去全局视野,每一次修复都会引发大量回归。
- 质量保证的陷阱 – 你会觉得“它能跑!”,但边缘案例的 bug 接连出现。一次又一次地让 AI 重试,…
Source: …
over,只是因为我的意图没有传达清楚而让它重复同样的错误,这会带来一种独特的精神疲劳——不同于写代码时的疲劳。
解决方案:SDD(Specification‑Driven Development)
为了在这种混乱中生存,我使用 SpecKit 实现了 SDD:
- AI 生成规格 – 在编写代码之前,我让 AI 编写详细的 Markdown 规格说明。
- 人工审查 / 批准 – 我仔细审阅这些规格,和另一个 AI 讨论后,最终给出“OK”。
- 通过 Claude Code 实现 – 获批的规格成为 AI 实现的 唯一真实来源。
这几乎彻底解决了 AI “幻觉”出自己逻辑的问题。只要人类持有规格,Vibe Coding 的波动就会大幅降低。
移动端优化的开发体验
- GitHub Issues 与 Actions – 在 iPhone 上创建 Issue 会触发 GitHub Actions 上的 Claude Code 自动为规格和代码创建 PR。我可以在不触碰终端的情况下进行开发。
- 随时随地开发 – 这个环境让我可以在公交车上、洗澡时或床上完善规格和实现。
- 背包部署机器 – 为了在实体设备上部署,我把一台 MacBook 放进背包,通过 tethering 连接,并使用 Tailscale 进行远程访问。我用 Termius 通过暴力破解的方式解决了构建流程。
将 AI 用于代码之外的领域
我把 AI 用在所有事情上,包括营销。最有趣的技巧是使用 NotebookLM 把我的规格转化为播客。通过在洗碗或洗衣时收听 AI 生成的关于我自己策略的讨论,我能够从“第三方”视角发现逻辑漏洞或错误的变现计划。有时我甚至会让它“把这个项目吹到月球上”,以恢复我的动力(笑)。
结论
Vibe 编写 iOS 应用让我了解了 AI 开发的惊人潜力——但它也暴露了一个隐藏的代价:作为唯一的指挥者来管理本应自主的系统所带来的心理负担。通过转向 Specification‑Driven Development(规范驱动开发),我恢复了理智,减少了幻觉,并构建了一套工作流,让我能够利用 AI 的速度而不被其副作用淹没。
如果你想全盘采用 Vibe,请记住:AI 可能会写代码,但产品仍然归你所有。
这并不意味着 “生活变得轻松”。
阅读和编写代码的痛苦已经转移到审查规范并不断做决定的痛苦上。
然而,生产力已经提升到超越单纯“效率”的层次。我可以把更多时间花在开发之外的事情上。虽然我懂得作为编写代码的工程师的乐趣,但我相信 AI 驱动的开发是新时代的乐趣。对打破自己角色感到“过敏”是自然的,我也无数次想亲自写代码。
通过这次经历,我意识到前进的道路是把 AI 不仅仅视为工具,而是 “伙伴”,而人类则保持 “指挥家” 的自律。
首先,仔细编写你的 AI 代理规则和规范。除此之外,一个你单独永远无法到达的全新天地正等待着你。
在此查看本实验的结果: