乐于分享
好东西不私藏

从零到一上架 eDots, 我的原生 iOS 产品研发复盘|VibeCoding 实战手记

从零到一上架 eDots, 我的原生 iOS 产品研发复盘|VibeCoding 实战手记
落地 eDots 这款 Apple 原生 App,本质上是作为拥有十年 UX 与前后端开发经验的我给自己设下的两场实验:
其一,依托 AI 编程工具的加持,常年深耕 Web 全栈的开发者,能否低成本、高效率切入 iOS 与 Swift 原生开发领域;
其二,当下大火的 VibeCoding 模式,究竟只能产出观感亮眼却无法落地的演示 Demo,还是真能支撑打磨出一款可正式上架、面向真实用户使用的商用 App。
如今试验落地:eDots 已正式登陆 App Store,也收获了第一波喜欢它的用户。
eDots 是一款纯正苹果原生应用,核心定位是收纳日常生活里细碎的「生活的点滴」:灵光一闪的想法、目的地、菜谱、待读书目、待养成的习惯、值得珍藏的细碎回忆 ……
所有零散内容都能分门别类归入专属合集,同时支持列表、卡片、日历、地图、语录视图、桌面小组件等多维度查阅;
除此之外,随机抽取内容、记录打卡频次、补充备注、批量导出、iCloud 跨设备同步与内容分享等实用能力全部内置(也算对 Apple 的技术生态摸了个底)。
产品官网:👉🏻 https://dots.e-studio.ai/
本文无意单纯做产品推广,更多是复盘整个开发周期:我如何借助 Agentic Coding完成全流程开发,以及在落地一款真实产品的过程中,沉淀下来关于AI辅助编程的落地思考。

一、eDots 的诞生:源于无处安放的 Dots

我一直有随手收集碎片化信息和认真管理一些个人清单的习惯,但这些内容和常规结构化笔记截然不同:书中摘选的短句、种草的线下门店、待追的漫画、规划中的旅行目的地、烹饪菜谱、和家人敲定的小计划、重要的纪念日倒计时,还有无数凭空迸发的瞬时灵感 ~
市面上工具虽多,却没有一款适配这类零散素材的「收纳容器」。于是eDots 最初的产品初心应运而生:专为偏爱整理收纳的J人,打造专属的生活碎片收纳空间。
从产品定位上,我刻意避开了两个误区:它既不是一款迭代优化的新型笔记软件,也绝非套着 AI 外壳的聊天式记事本,一旦锚定这两个方向,产品内核就彻底跑偏。
eDots 的本质,是一款安静克制、遵循苹果设计规范的私人生活 Dots 花园,帮用户收拢散落的日常碎片,串联成线,方便日后重温回溯,也能按需分享给身边重要的人。
我始终把产品核心锚定在五大关键词:碎片 Dots、合集 Collections、多视图浏览、内容重温、内容分享,任何新增功能都需要证明自身具备不可替代的实际价值。

二、落地 eDots,七条 Vibe & Agentic Coding 实战干货

1. 优先选择 AI 「擅长」的技术栈

很多开发者在用 AI 写代码时,习惯让模型从零摸索陌生技术栈、自定义产品规范,这也是大量 AI 项目止步 Demo 的关键原因。我的思路恰好相反:立足 AI 已有海量学习素材的成熟领域。
苹果人机交互规范 HIG 公开且体系完善,SwiftUI、SFSymbols 体系、原生导航逻辑、系统组件、桌面小组件Widget、CloudKit云同步、地图框架MapKit、本地通知、快捷指令 App Intents 等相关文档、开源案例、社区讨论存量巨大,都是AI训练数据里的高频内容。
落实到开发约束上,统一给 Agent 划定标准:遵循苹果原生设计语言、严守 HIG 规范、优先使用系统原生控件与SF Symbols图标、杜绝网页化UI风格;iOS独有震动反馈通过条件编译做环境隔离,Mac端单独适配专属侧边栏与菜单栏。
有明确成熟的参考标尺,AI开发即便偶尔跑偏,也能快速拉回规范轨道。
我同步定下整套产品设计准则,最终全部转化为项目硬性约束,避免项目沦为流水线生成的 CRUD 工具:
  • 从用户体验倒推开发,而非以技术实现为优先级;
  • 持续聚焦需求、主动做功能删减;
  • 对全链路端到端使用体验全权负责;
  • 坚持有取舍的产品决策;
  • 把复杂逻辑封装在系统底层,不将使用成本转嫁用户;
  • 产品质感藏在细节之中;
  • 打磨完善产品(MLP),不用最小可行产品(MVP)当做粗放开发的借口。

2. 选用原生技术栈,借用平台现成的杠杆

对独立开发者而言,技术选型从来不是炫技,核心是最大化借用成熟平台能力,降低自研成本。eDots全链路采用苹果原生技术栈:
  • SwiftUI:统一实现iPhone、iPad、Mac多端界面;
  • Core Data:本地数据持久化存储;
  • CloudKit:依托iCloud实现跨设备同步与内容分享;
  • WidgetKit:桌面小组件,实现日常内容快速回看;
  • MapKit:落地地理位置类合集的地图视图;
  • UserNotifications:系统原生提醒服务;
  • StoreKit 2:应用内购体系;
  • App Intents+快捷指令:打通系统自动化入口;
  • Xcode Cloud:自动化打包与发布流水线。
这套技术栈帮我省去大量重复基建工作:依托 Apple ID 与 iCloud,不用从零搭建账号体系与跨端同步服务;借助系统通知框架,无需自研提醒后端;全端原生 UI 框架,规避跨端框架和苹果系统交互手感割裂的问题。
全程无自建后端,也是经过权衡的产品决策。个人用户数据全部存放在用户自有 iCloud 存储空间,不仅大幅缩减独立开发的服务器运维成本,在用户隐私层面也拥有天然说服力:用户的所有生活碎片,所有权始终归属于个人Apple账户。
当然 CloudKit 门槛不低,跨设备同步逻辑、内容分享、数据删除与误删恢复都需要精细化处理,但这份复杂度换来纯正的苹果原生体验,在我看来完全值得。

3. 给项目一份 AGENTS.md / CLAUDE.md,让 AI 读懂产品和工程灵魂

Agentic Coding 高效落地的关键,绝非每次开发临时写零散提示词,一个长期项目必须拥有定义项目准则的「SOUL DOC」。
在 eDots 项目中,`AGENTS.md` 就承担了这个角色。文档清晰写明产品定位、目录结构、技术选型、编译规范、测试要求、UI设计标准、数据边界、CloudKit禁用修改项、多语言本地化规则、跨平台差异化适配细则等。后续所有AI开发任务,都基于这份文档约束执行。
精简版项目灵魂规范原文参考如下(这里给出示意,具体根据项目做扩展):
Build native Apple experiences that stay simple in structure,feel polished in use, and remain practical to debug.- Apple frameworks first.- SwiftUI-native across iPhone, iPad, and Mac.- Core Data + CloudKit for persistence and sync.- Keep data access in services, not leaf views.- Keep UI adaptive and Apple-like.- Localize user-facing strings.- Guard iOS-only haptics and UIKit assumptions.- Preserve widget shared storage.- Add tests for persistence, import/export, widgets, and sync-sensitive behavior.- Prefer small, composable changes over broad rewrites.- Details are product quality: haptics, empty states, motion, defaults, copy.
我的结论是:任何打算长期迭代、落地正式版本的 AI 辅助开发项目,都需要一份文档。
篇幅无需冗长,但必须写清四点:产品核心定位、不可改动的底层规则、产品设计审美、编译测试与发布规范。
缺少这份约束,AI只会盯着单一功能局部完成;有了约束,Agent才能守住产品整体方向。

4. 云端 Agent 负责推进开发效率,本地 XCode 是最终验收标准

整个项目周期我搭配了Cursor、Claude Code、Codex 三款AI编程工具,并非盲目堆砌工具,而是根据不同能力做分工:Cursor擅长在现有项目代码库中查阅、迭代修改、梳理项目上下文;Claude Code胜任高复杂度逻辑开发与长链路代码推理;Codex Cloud 主打项目快速迭代提速,临时萌生新需求时,可交由远程Agent新建开发分支、编写代码并生成 PR,后续我拉取代码至本地调试。
很多时候,在路上我也用 Codex 云端工作,一些小想法可以得到很好的落地和验证 😄
我的参考开发闭环:
  1. 梳理新增需求或现存Bug;
  2. 交由云端AI Agent先行调研方案、输出代码PR;
  3. 拉取代码到本地Xcode环境;
  4. 编译、真机运行实测;
  5. 亲身感受产品实际使用效果;
  6. 确认合并、二次修改或直接废弃方案。
AI可以加速编码落地的过程,但永远无法替代开发者,以使用者的视角判定功能是否契合产品の初衷。
当然用好 TestFlights 自己和周边的朋友可以作为产品 GA 之前的试验场,发现问题并快速修复,省时省心 ~

5. 尽早搭建完整发布流水线,跳出 Demo 幻觉

AI 极速生成代码很容易带来错觉:代码落地即产品接近完工。可从可用代码到上架 App Store,中间隔着整套工程化落地流程。
eDots早早接入 Xcode 云端编译体系、Swift 自动化单元测试、App Store 打包规范与 Xcode Cloud 自动化流水线。这些没有酷炫 AI 黑科技的工程基建,才是把原型 Demo转 化为用户可安装正版应用的基石。
单元测试尤为关键,同步、数据导入导出、内购、应用状态、随机逻辑、CloudKit联动等模块,都是AI改代码时极易无意破坏的核心逻辑。独立开发不必对全部UI做自动化测试,但数据层与核心业务逻辑,必须完善用例覆盖。
依托 Swift+SwiftUI 的跨端能力,一套核心代码支撑 iPhone、iPad、Mac三端分发,仅针对平台独有特性做隔离:iOS独有震动反馈单独做环境判断,Mac定制专属侧边栏与菜单栏,桌面小组件遵循独立的存储与刷新规则。只要提前把跨平台规范写入项目约束,AI就能稳定按照规范完成适配开发。

6. 摒弃 Demo 思维,打磨一款自己日常在用的产品

AI 生成 Demo 和商业化产品最本质的差距,从来不在技术实现,而在于开发者有没有长期打磨优化的耐心。
首先,你自己得是「第一用户」。
作为 eDots 的开发者,自己必须是它的头号玩家, 段段一段时间,自己也「爱上」了它,这非常重要,我创建了 700+ 条 dots,38 个集合,114 个标签 🏷,它已然成为了我日常的一部分。
其次,就是「深度打磨」:
截至目前 eDots 累计提交434+次代码,我的长期目标是迭代至 1000次提交,至少这样才意味着「工匠精神」得以体现。当然提交数字本身没有意义,但产品细腻的使用质感,恰恰来自一次次细碎优化:调整更合理的默认参数、优化弹窗弹出逻辑、打磨空页面引导文案、修正小组件边界异常、优化文件导入安全逻辑、微调图标配色……所有不起眼的细节堆砌成最终的产品体验。
也是出于对苹果原生软件质感的偏爱,我从一开始就聚焦 Apple 全平台,深耕液态玻璃、SF图标、系统原生控件、震动反馈、小组件、系统分享面板等苹果独有的设计细节。倘若开局就全平台通吃,最后往往所有端的体验都沦为平庸。
给独立开发者的建议:不必追求全平台全覆盖,找准一个足够细分、自己拥有审美和使用共鸣的垂直赛道,深耕打磨就足够。eDots瞄准的就是生活碎片收纳:习惯做清单的J型用户、内容创作者、语录收藏爱好者、旅行规划爱好者、注重生活记录的人群,一个个真实使用场景,反向推着产品持续迭代优化。少即是多的前提,是精准洞悉每一项冗余功能想要解决的真实诉求。

7. AI 能力真的不必硬塞进 App,依托系统生态是更优解

项目前期我也曾计划在App内堆砌大量AI功能,目前开发环境虽保留碎片AI生成的试验能力,未来也可能拓展图片转碎片、合集智能对话、本地内容洞察等功能,但我找到了更贴合苹果生态的落地思路:依托 App Intents+系统快捷指令实现AI联动。
把新增、查看、修改、删除碎片的能力通过系统快捷指令接口对外开放,各类外部 AI 工具(Agentic)即可通过苹果原生系统能力调用 eDots,App 本体依旧保持简洁安静的原生形态,无需强行植入臃肿的AI对话面板。
相比在应用内生硬添加AI按钮,这套方案更契合苹果产品设计理念:应用做好本职的内容收纳,自动化与AI交互交给系统生态承载,用户收获干净纯粹的原生工具,各类 Agent 也获得标准化调用入口。

三、我的 VibeCoding 落地实操配方

结合 eDots 全流程开发经验,整理出一套适合所有独立创作者用 AI 落地产品的实操清单:
  1. 选定一个细分、真实且你愿意从头到尾做完的产品方向;
  2. 优先选择公开资料充足、AI 擅长的技术领域;
  3. 借力平台原生能力做基建,避免从零重复造轮子;
  4. 在大规模启用 AI 编码前,撰写定义项目边界的 Soul File,以及各类加速研发流程的 Skills(这块未来我还可以单出一篇文章细细展开)
  5. AI 负责提速开发迭代,本地真机编译实测掌握产品最终决定权;
  6. 为数据层与核心业务逻辑补充单元测试;
  7. 早期搭建自动化打包、发布的工程流水线;
  8. 学会持续拒绝不合理的需求与冗余功能;
  9. 自己成为产品首批重度用户,在日常使用中发现优化点;
  10. 保持持续迭代提交,在反复打磨中让产品细节趋于自然。
AI辅助编程大幅降低了代码编写的体力成本,却不会免费赠送产品判断力:工具减少了编码摩擦,但一款产品该面向谁、保留什么功能、最终使用手感如何,依旧需要人做决策。

写在最后

AI 确实大大重构了软件的开发效率,真正缩短了从想法到代码的距离,但一件具备质感的产品,永远离不开开发者持续的细节打磨、长期投入与审美把控。
优质 UX(用户体验) 体验绝不会仅凭一句「帮我开发一款App」就由 AI自动生成,它根植于清晰的产品信仰、严谨的开发约束、对平台生态的深度理解,以及首版可用之后沉下心反复优化的耐心。
eDots 是我第一款正式落地的苹果原生应用,也用真实上架的结果完成了最初的试验:VibeCoding 不只是一时兴起的趣味开发,依托合理的项目约束与人为把控,完全可以落地通过 App Store 审核的正式产品。
当然如果你也需要一款隐私可控、苹果原生风格的生活碎片收纳工具,欢迎体验 eDots ~
App Store下载:
🔗 https://apps.apple.com/cn/app/edots/id6754982386
希望我的经验对你有所帮助 🥳 and Happy Agentic / Vibe coding ~~~

相关学习资料