一个周末,我用 Claude Code 做了两个 iOS 项目(然后都放弃了)
但这个过程,才是最有价值的。
前言
我是一名 iOS 开发者,日常工作中已经用 Claude Code 辅助开发了大半年。可以这么说——我现在写所有需求,不需要手动写任何一行代码。
这个周末,我想挑战一下:能不能用 Claude Code 做出一个"颠覆性"的开源项目?类似 Vue.js 对前端生态的影响,但在 iOS 领域。
结果我做了两个项目,都放弃了。但这个过程本身,让我对"AI 时代该怎么做技术选型"有了全新的认知。
第一个项目:Prism — iOS 原生的 Server-Driven UI 引擎
灵感来源
Google 在 2025 年底发布了 A2UI(Agent-to-User Interface)协议,让 AI Agent 能通过 JSON 描述来生成 UI。但官方只有 Web 和 Flutter 的渲染器——iOS 原生渲染器是空白的。
我想:这不就是我的机会吗?
核心理念
一份 JSON 描述 UI 结构,不同 App 注入不同主题,渲染出不同外观的原生界面。
同一份 A2UI JSON
│
├── App A: PrismEngine(theme: .blue) → 蓝色商务风
├── App B: PrismEngine(theme: .green) → 绿色清新风
└── App C: PrismEngine(theme: .dark) → 暗黑科技风
适用场景:团队有多个 App,共享 API,UI 大同小异。
Claude Code 帮我做了什么
我全程没写一行代码。以下所有内容都是 Claude Code 生成的:
协议解析层 — 完整的 A2UI v0.9 协议解析,包括 4 种消息类型、JSON Pointer 数据绑定、动态类型处理。
渲染引擎 — PrismEngine 核心引擎,递归渲染组件树,支持组件注册表扩展。
16 种原生 UIKit 组件 — Text、Button、Image、Row、Column、List、Card、TextField、Divider、CheckBox、Tabs、Slider、ChoicePicker、Spacer、ZStack、Gradient。
主题系统 — 颜色、字体、间距、圆角、阴影,一套 JSON 换个 Theme 就是不同的 App。
Style 行内样式 — 每个组件支持 margin、padding、fontSize、cornerRadius 等精确控制。
PrismViewController — 一行代码接入:
let vc = PrismViewController(jsonString: json, theme: .appA)
完整的 Demo App — 5 个示例页面,包括一个从真实 Figma 设计稿转换的页面。
11 个单元测试 — 全部通过。
这些从零开始到 Demo App 在模拟器上跑起来,大概花了 2 个小时。
为什么放弃了
用一个真实的设计稿来验证时,问题暴露了:
学习成本高 — 开发者要学 A2UI 协议、JSON 写法、组件体系,但产出不比直接写 UIKit 更快。
表达能力弱 — 稍微复杂的 UI(品牌首页、营销落地页)就搞不定,只适合结构化页面(列表、表单)。
收益有限 — 为了"不写 Swift"而去"写 JSON",并没有让事情变简单。
最致命的一句自我拷问:
这个工具给开发者用,学习成本不低,但收益感觉很有限——很难推广。
经验
**快速验证,快速放弃。 ** 有了 Claude Code,从想法到可运行的 MVP 只需要几小时。这意味着你可以用极低的成本验证一个方向是否值得继续。以前可能要花两周写代码才能发现走不通,现在两小时就能看清。
第二个项目:Anvil — AI 代码生成 CLI
灵感来源
Prism 失败后,我重新思考:真正的痛点不是"用什么描述 UI",而是"让更多人能写 iOS 代码"——产品经理、QA、设计师,甚至新入职的开发者。
核心理念
把项目的架构模式、命名规范、目录结构、技术栈选型写成一份配置文件(我们叫它"项目 DNA"),然后任何人只需要用自然语言描述需求,AI 就能生成符合团队标准的 Swift 代码。
# anvil.yml — 项目 DNA
architecture:
pattern: "MVVM"
ui_framework: "UIKit"
conventions:
rules:
- "ViewController 必须在 viewDidLoad 中调用 setupUI() 和 bindViewModel()"
- "网络请求统一在 ViewModel 中发起"
# 任何人都能用
anvil generate "做一个货物列表页,支持搜索和下拉刷新"
# → 自动生成 ViewController、ViewModel、Model、APIService、Tests
Claude Code 帮我做了什么
同样全程没写一行代码:
-
Swift CLI 工具(基于 Swift Argument Parser)
-
YAML 配置解析(项目 DNA → prompt 上下文)
-
Claude API 集成
-
代码文件解析和输出
-
两种模式:有 API Key 直接生成 / 没有 Key 生成 prompt 喂给 Claude Code
从零到 CLI 可运行,大概 40 分钟。
为什么又放弃了
写完之后,我突然意识到:
-
anvil.yml本质上就是 CLAUDE.md -
anvil generate本质上就是 Claude Code 的 skill/slash command -
整个 Anvil 就是给 Claude Code 写了个壳
**这不是脱裤子放屁吗? **
Claude Code 已经是一个足够强的工具了。我不需要再造一个工具来包装它。
收获:两个项目都失败了,但我学到了什么
1. AI 时代的技术选型要反过来想
以前的思路:发现痛点 → 设计方案 → 花两周实现 → 发现走不通 → 沉没成本太高,硬着头皮继续。
现在的思路:发现痛点 → 让 AI 两小时做出 MVP → 立刻验证 → 走不通就换方向。
**失败的成本趋近于零,这才是 AI 带来的最大改变。 **
2. 不要试图替代 AI,要站在 AI 上面
Prism 试图用 JSON 替代 Swift 来描述 UI — 但 AI 写 Swift 比人写 JSON 更快。
Anvil 试图包装 Claude Code — 但 Claude Code 本身就够好了。
这两个项目的共同错误:**试图在 AI 已经解决的层面上再做一层抽象。 **
正确的做法是:找到 AI 目前做不好的事情,在那里发力。
3. 你的经验才是真正的护城河
今天最大的发现:同样用 Claude Code,不同人的效率差距可以是 10 倍。关键不在工具,在于——
-
你怎么拆分需求
-
你怎么写 CLAUDE.md
-
你怎么 review AI 的产出
-
你怎么引导 AI 修复问题
**这些"怎么用 AI"的经验,才是真正有价值的、别人拿不走的东西。 **
技术细节彩蛋
虽然两个项目都放弃了,但如果你感兴趣,所有代码都在 GitHub 上:
-
Prism:A2UI v0.9 iOS 原生渲染引擎,16 种组件,主题系统,完整 Demo
-
Anvil:AI 代码生成 CLI,项目 DNA 配置,Claude API 集成
两个项目加起来大概 3000+ 行 Swift 代码,全部由 Claude Code 生成,我没写过一行。
如果你也在用 Claude Code 做 iOS 开发,欢迎交流。我的下一步计划是把"怎么高效使用 Claude Code"这件事系统化地分享出来。