先来开个脑洞:
一款功能复杂、UI精美的macOS应用,从空文件夹到正式上架App Store,仅用了一周时间。项目总代码量超过2万行,其中95%由AI生成。这听起来是不是很像网络上的爽文段子?但这是真实发生的——来自一位资深Mac开发者的亲身实践,直接刷新了我们对AI编程能力上限的认知。
这位开发者名叫Indragie Karunaratne,从2008年就开始从事Mac软件开发。最近,他借助AI编程工具Claude Code,从零构建了一款名为“Context”的App,并成功上架。最终统计显示,他自己手写的代码还不到1000行,95%的开发工作由Claude Code完成。
“整个过程几乎没怎么写代码,反而像是在给一个特别聪明的远程实习生发指令。”Indragie把整个过程写成了博客,直接引爆了开发者社区。这已经不是简单的炫技,而是一套可复用的“人机协作”开发教程——教大家如何把AI工具调教成一个能扛起整个项目的主力,人类只需要负责动嘴和审查。
下面一起看看完整的开发历程,包括工具选型、各工具的优缺点,以及更重要的是——如何利用它们,最大限度提升代码产出质量,特别是当你也想构建一款原生应用时。

AI编程,究竟能做到什么地步?
这个“Context”App,是一款用于调试MCP服务器的原生macOS应用,基于苹果的SwiftUI框架。Indragie发现,市面上现有的MCP服务器构建和测试工具用起来相当繁琐,于是想尝试构建一个原生应用来解决问题,“Context”便应运而生。
Indragie摸索出的工作流,核心思想很明确:人类负责思考和决策,AI负责执行和试错。
他只会下达指令,不纠结代码细节;Claude会根据指令迅速生成一整块乃至一整个文件的代码。Indragie拿到代码后几乎不审查逻辑,只做一件事——全选、复制、粘贴到Xcode里,然后编译。接着,他把所有错误日志原封不动地甩回给Claude。Claude立刻理解错误并道歉,然后提供修复后的新版本代码。
这个“下指令 → AI编码 → 运行 → 甩回错误 → AI修复”的循环,就是整个项目的推进主轴。
Indragie给出了最直接的评价:搭载了最新Sonnet 4和Opus 4模型的Claude Code,代码能力极为出色。虽然不及“顶尖1%”的人类程序员,但其输出质量已明显高于普通开发者。
面对一个功能需求,Claude能做到的事情几乎覆盖了开发的完整闭环:
- 阅读理解:自主定位并阅读项目源码,理解相关上下文和代码风格。
- 学习消化:喂给它外部文档或API规范,它能自己啃下来。
- 代码生成:根据需求实现功能,并生成配套的测试用例。
- 构建测试:自主编译程序、运行测试。
- 自主修复:遇到编译错误或测试失败时能像人一样反复迭代、尝试修复,直到通过。
- 视觉调试:通过分析截图或控制台日志来定位并修复Bug。
AI最强大的地方在于能自主迭代,而人类最大的作用就是给AI建立反馈闭环。最让Indragie感到不可思议的是,完成这一切所花的时间,仅仅是人类开发者的一小部分:“这就像让一个对项目零背景的新员工,在短短几分钟内,完整交付一个功能。”
一句“Make it more beautiful”就能让UI升级
作者选择了最新的技术栈:Swift 6.1和SwiftUI。他很好奇,在训练数据远少于Python或JavaScript的情况下,Claude写Swift代码的表现会如何。
好消息是,Claude能胜任Swift 5.5之前的大部分语言特性。但对于之后引入的Swift Concurrency(并发),它就有点抓瞎——会固执地用老API,或者第一次写的UI丑得不能忍。
但它的学习和纠错能力极强。你只需点拨几句,经过几次迭代,它就能写出设计精良的现代化代码。更惊人的是,它甚至在遇到Swift编译器那个著名的“类型检查超时”错误后——The compiler is unable to type-check this expression in reasonable time——能够自主将复杂代码重构成更小的部分,在不破坏原有逻辑的前提下完美解决问题。
提升产出的核心:上下文工程
Indragie发现,AI越聪明,瓶颈就越不是“怎么问”,而是“它能记住多少”。“上下文窗口”是有限的,高效利用这有限的“记忆”,才是关键。
他总结了三个核心技巧:
1. “预激活”(Priming):先让AI学习,再让AI工作
别直接派活!在让AI开始工作前,先让它“预热”——阅读额外的上下文,以提高输出质量。比如先抛给它这样的指令:“阅读文件A.swift、文件B.swift和这篇网页上的文档,然后总结你学到了什么。”它会先去阅读和学习,这个“总结”的动作能强迫它思考,并将关键信息保留在上下文中,对后续任务的质量有极大提升。Claude还会贴心地显示剩余上下文容量的提示条,当token耗尽时系统会启动“对话压缩”机制。
2. 强制让AI“深度思考”(Ultrathink)
Claude有时会跳过充分思考,直接上手写代码,结果自然不理想。Indragie发现,Claude有一个“隐藏技能”——通过一些关键词可以促使它进行更深层的思考。这些关键词的强度依次为:think < think hard < think harder < ultrathin。ultrathink会消耗最多的token,但能产出最好的结果。在指令中加入这个词,它会先制定一个周密的计划,而不是直接动手写代码,从而有效避免走弯路。
3. 给AI清晰的需求文档
“一句话造应用”的梦还没照进现实。想让AI构建真正可用的复杂功能,前提是你能给出一份清晰的需求文档。“花点时间把想法写清楚,绝对比后面花大把时间调试它写的烂代码要划算得多。”垃圾进垃圾出——这铁律在AI时代依然有效。
建立反馈循环
如果说以上三点是与AI相处的技巧,那下面这点,则是Claude最让Indragie震撼的执行能力。它能够独立驱动一个“构建 → 测试 → 修复”的反馈循环。
全自动能力:
- 构建:Claude能直接运行swift build来编译Swift包。对于复杂的macOS应用,开发者需要预先配置好xcodebuild等工具,AI可以调用这些工具。
- 测试:同样,它可以自主执行swift test来运行单元测试。
半自动化能力:
- 收集、修复Bug:AI知道通过日志进行调试,但它无法自行操作应用界面来复现特定的Bug。因此,开发者需要手动操作应用,并将相关的控制台日志或错误信息粘贴给AI,AI才能进行分析和修复。
- 修复UI问题(迭代):对于UI的调整,也需要开发者先将应用运行到需要修改的界面,然后提供截图给Claude。开发者通过在截图上标记或用文字描述,来指导AI进行界面元素的调整和优化。
让杂活变得“免费”
除了核心编码,AI在干那些“吃力不讨好”的杂活上同样表现惊人。
- 秒级生成模拟数据:手动创建高质量的模拟数据(Mock Data)足以扼杀许多UI探索的灵感。而Claude能在几秒内生成以假乱真的数据,让开发者能快速迭代UI原型。
- “免费”的自动化发布流:对独立开发者来说,最痛苦的莫过于打包发布——代码签名、软件公证、生成更新日志、上传版本……一套流程下来身心俱疲。过去Indragie只能勉强拼凑一个简陋脚本,而这次,他通过与Claude迭代,生成了一个近2000行的Python发布脚本。这个脚本功能全面、界面美观,能自动完成从生成更新日志到打包签名、发布到GitHub、上传调试符号等所有繁琐工作。过去需要花费数小时甚至数天的任务,现在成了“一次点击,喝杯咖啡”的享受。
结语
Indragie算了一笔账:AI带来了“每天凭空多出5个小时”的感觉,让他重新找回了将项目打磨并成功发布的掌控感和乐趣。而获得这种开发“超能力”的代价,仅仅是每月200美元。
Indragie的实践并非个例。最近,Reddit上一个热帖《开发工作即将迎来彻底变革,而没有人做好准备》也引发了热议。发帖者激动地宣称,AI让他一周内完成了拖延十年的项目。
当然,评论区的反响并非一边倒的赞歌。许多开发者在肯定AI潜力的同时,也一针见血地指出:AI生成的代码依然存在大量冗余,上下文管理仍是巨大挑战,离真正高质量、可维护的大规模生产应用,还有很长的路要走。
这让网友们联想起传奇程序员肯特·贝克的观点:“你90%的编码技巧正在迅速贬值,但你10%的架构远见、设计品味和复杂性管理能力,正被放大1000倍。”
人类程序员的价值正在从“如何写”,转移到“写什么”和“为何写”。所以,真正的问题已经不是“AI会替代我吗?”,也不是“我该去学哪门新语言?”。而是:你那10%不可替代的价值,究竟是什么?以及,你准备好如何用AI,将它放大1000倍了吗?
