我在未阅读代码的情况下发布了生产 iOS 应用:“Vibe Coding”的现实

发布: (2026年1月8日 GMT+8 16:03)
10 min read
原文: Dev.to

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 代理规则和规范。除此之外,一个你单独永远无法到达的全新天地正等待着你。

在此查看本实验的结果:

https://dumppp.com/

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...