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

48 阅读14分钟

落地 eDots 这款 Apple 原生 App,本质上是作为拥有十年 UX 与前后端开发经验的我,给自己设下的两场实验:

  1. 依托 AI 编程工具的加持,常年深耕 Web 全栈的开发者,能否低成本、高效率切入 iOS 与 Swift 原生开发领域;
  2. 当下大火的 VibeCoding 模式,究竟只能产出观感亮眼却无法落地的演示 Demo,还是能真正支撑打磨出一款可正式上架、面向真实用户使用的商用 App。

如今试验落地:eDots 已正式登陆 App Store,也收获了第一波喜欢它的用户。

eDots 是一款纯正苹果原生应用,核心定位是收纳日常生活里细碎的「生活的点滴」:

灵光一闪的想法、目的地、菜谱、待读书目、待养成的习惯、值得珍藏的细碎回忆……

所有零散内容都能分门别类归入专属合集,同时支持:

  • 列表视图
  • 卡片视图
  • 日历视图
  • 地图视图
  • 语录视图
  • 桌面小组件
  • 随机抽取内容
  • 记录打卡频次
  • 补充备注
  • 批量导出
  • iCloud 跨设备同步
  • 内容分享

也算是对 Apple 技术生态摸了个底。

Screenshot 2026-06-06 at 00.16.28.png

产品官网:👉🏻 dots.e-studio.ai/

本文无意单纯做产品推广,更多是复盘整个开发周期:我如何借助 Agentic Coding 完成全流程开发,以及在落地一款真实产品的过程中,沉淀下来关于 AI 辅助编程的落地思考。

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

我一直有随手收集碎片化信息和认真管理个人清单的习惯。

但这些内容和常规结构化笔记截然不同:

  • 书中摘选的短句
  • 种草的线下门店
  • 待追的漫画
  • 规划中的旅行目的地
  • 烹饪菜谱
  • 和家人敲定的小计划
  • 重要的纪念日倒计时
  • 无数凭空迸发的瞬时灵感
  • ...

市面上工具虽多,却没有一款真正适配这类零散素材的「收纳容器」。

于是,eDots 最初的产品初心应运而生:

专为偏爱整理收纳的 J 人,打造专属的生活碎片收纳空间。

从产品定位上,我刻意避开了两个误区:

  • 它不是一款迭代优化的新型笔记软件;
  • 它也绝非套着 AI 外壳的聊天式记事本。

一旦锚定这两个方向,产品内核就彻底跑偏。

eDots 的本质,是一款安静克制、遵循苹果设计规范的私人生活 Dots 花园。

它帮助用户收拢散落的日常碎片,串联成线,方便日后重温回溯,也能按需分享给身边重要的人。

我始终把产品核心锚定在五大关键词:

  1. 碎片 Dots
  2. 合集 Collections
  3. 多视图浏览
  4. 内容重温
  5. 内容分享

任何新增功能,都需要证明自身具备不可替代的实际价值。


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

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

很多开发者在用 AI 写代码时,习惯让模型从零摸索陌生技术栈、自定义产品规范。

这也是大量 AI 项目止步 Demo 的关键原因。

我的思路恰好相反:

立足 AI 已有海量学习素材的成熟领域。

苹果生态恰好是一个非常适合 AI 辅助开发的领域:

  • Apple Human Interface Guidelines 公开且体系完善
  • SwiftUI
  • SF Symbols
  • 原生导航逻辑
  • 系统组件
  • WidgetKit 桌面小组件
  • CloudKit 云同步
  • MapKit 地图框架
  • UserNotifications 本地通知
  • 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 辅助开发项目,都需要一份有「灵魂」的文档。

篇幅无需冗长,但必须写清四点:

  1. 产品核心定位
  2. 不可改动的底层规则
  3. 产品设计审美
  4. 编译测试与发布规范

缺少这份约束,AI 只会盯着单一功能局部完成。

有了约束,Agent 才能守住产品整体方向。


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

整个项目周期,我搭配了三款 AI 编程工具:

  • Cursor
  • Claude Code
  • Codex

这并非盲目堆砌工具,而是根据不同能力做分工:

工具更适合的任务
Cursor在现有项目代码库中查阅、迭代修改、梳理项目上下文
Claude Code高复杂度逻辑开发与长链路代码推理
Codex Cloud快速迭代提速、远程新建分支、编写代码并生成 PR

很多时候,在路上我也会用 Codex 云端工作。

一些临时萌生的小想法,可以很快得到落地和验证 😄

我的参考开发闭环是:

  1. 梳理新增需求或现存 Bug;
  2. 交由云端 AI Agent 先行调研方案、输出代码 PR;
  3. 拉取代码到本地 Xcode 环境;
  4. 编译、真机运行实测;
  5. 亲身感受产品实际使用效果;
  6. 确认合并、二次修改或直接废弃方案。

AI 可以加速编码落地的过程,但永远无法替代开发者,以使用者的视角判定功能是否契合产品初心。

当然,用好 TestFlight,也可以让自己和身边的朋友成为产品 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 和商业化产品最本质的差距,从来不在技术实现,而在于开发者有没有长期打磨优化的耐心。

首先,你自己得是「第一用户」。

484ea88a59c0fc311816bbfc73115b11.jpg

作为 eDots 的开发者,自己必须是它的头号玩家。

一段时间后,我自己也「爱上」了它。

这非常重要。

目前我已经创建了:

  • 700+ 条 Dots
  • 38 个集合
  • 114 个标签 🏷

它已然成为了我日常生活的一部分。

其次,就是「深度打磨」。

截至目前,eDots 累计提交 434+ 次代码

我的长期目标是迭代至 1000 次提交,至少这样才意味着某种「工匠精神」得以体现。

当然,提交数字本身没有意义。

但产品细腻的使用质感,恰恰来自一次次细碎优化:

  • 调整更合理的默认参数
  • 优化弹窗弹出逻辑
  • 打磨空页面引导文案
  • 修正小组件边界异常
  • 优化文件导入安全逻辑
  • 微调图标配色

所有不起眼的细节,最终堆砌成产品体验。

也是出于对苹果原生软件质感的偏爱,我从一开始就聚焦 Apple 全平台,深耕:

  • 液态玻璃
  • SF 图标
  • 系统原生控件
  • 震动反馈
  • 小组件
  • 系统分享面板

这些苹果独有的设计细节。

倘若开局就全平台通吃,最后往往所有端的体验都会沦为平庸。

给独立开发者的建议是:

不必追求全平台全覆盖。找准一个足够细分、自己拥有审美和使用共鸣的垂直赛道,深耕打磨就足够。

eDots 瞄准的就是生活碎片收纳:

  • 习惯做清单的 J 型用户
  • 内容创作者
  • 语录收藏爱好者
  • 旅行规划爱好者
  • 注重生活记录的人群

一个个真实使用场景,反向推着产品持续迭代优化。

少即是多的前提,是精准洞悉每一项冗余功能想要解决的真实诉求。


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

项目前期,我也曾计划在 App 内堆砌大量 AI 功能。

目前开发环境虽保留了碎片 AI 生成的试验能力,未来也可能拓展:

  • 图片转碎片
  • 合集智能对话
  • 本地内容洞察

但我找到了更贴合苹果生态的落地思路:

依托 App Intents + 系统快捷指令实现 AI 联动。

把新增、查看、修改、删除碎片的能力通过系统快捷指令接口对外开放,各类外部 AI 工具即可通过苹果原生系统能力调用 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 下载:

🔗 apps.apple.com/cn/app/edot…

希望我的经验对你有所帮助 🥳

Happy Agentic / Vibe Coding ~~~