使用 Agentic Coding 的方式构建一个 App 不靠谱
最近,AI 真的很火,尤其我自己使用 CodeX 去辅助自己的构建的时候,发现真的如有神助。小红书上,各种经验分享贴,我也看得很多了,激动人心,只是我从来没有试过。
然而,在我亲身尝试之后,我只能判断说,根本不靠谱。
结论
我自己就是专业的程序员,我会用 CodeX 辅助我自己去构建自己熟悉的项目,确实效果不错的。
这种不错当然建立在我是专业程序员,兼且,在构建我熟悉的项目上。那么,一个不懂技术的人,用这个方式,去任意生产各种 App,这靠谱么?我自己亲身试过后,结论是完全不靠谱。
构建一个 App
根据我们程序员日常聊天中经验,我们普遍认为,AI 在构建一个从 0 到 1 的 App 或者服务的时候,可能是靠谱的。当然,我们也普遍认为,应该再施加一个先决条件,就是必须是逻辑非常 Common 的那种。
比如,我老板经常举例子的就是,“给我一个 OA”,然后,ChatGPT 的 CodeX 给做出来了。第一,OA 的业务逻辑其实非常 Common,第二,他自己是熟悉 iOS 开发的,有那个判断力,AI 到底做得对不对。
于是他得到了一个 OA 的 App,竟然还不错,然后他进一步写提示词,就把整个 App 写得很完善了。这里也有一个前提,第一,他非常熟悉 OA 的业务逻辑,因为这么多年一直在思考,第二,他非常清楚在一个既有的 OA App 的基础上,叠加功能的正确顺序是什么。
所以,才能如此顺利,且惊人的完成任务。
为什么普通人不行
我这个周末,就突发奇想,我一直以来有一个创意,就是去做一个 iOS 的 App,那么我能不能学习老板的样子,写个提示词,就让 AI 给我干出来呢?
我实践了,还是用我最近都在实践的 Spec Driven Development 的方式和流程。
简述一下,我要做的是一个什么 App,因为这个事有关的信息。
我想做一个整理照片的 App,用户可以选择一个时间周期,比如某年的,或者某月的,也可以选择一个类型,比如某相册的照片,然后开始逐张遍历。在遍历的过程中,用户用手指滑动单张照片,来记录自己的决策,左滑,就是删除当前照片,并进入下一张,右滑,就是收藏当前照片,并进入下一张,上滑,就是退出当前正在遍历的“会话”,下滑,就是直接跳过当前照片,进入下一张。
用户在退出“会话”后,可以选中“删除暂存区”,或者“收藏暂存区”,把刚才删的照片彻底删掉,或者把刚才收藏的照片,收藏的动作给同步到系统相册里。
我简述这个需求,就是想告诉大家,不知道你们能不能看懂这个 App 的基本逻辑,可能有人用过类似的,反正我自己是用过的,但是我只能说,这个东西绝对不 Common,你不能像“三件套”(特指记事本、记账、ToDo 三种 App)那样,在 GitHub 找到海量的开源实现。而我,也不是一个典型的 iOS 程序员,甚至我完全不了解怎么使用 Swift 语言和 SwiftUI。
我只是一个职业的后端程序员,兼且我一直在实践 AI 编程。
结果
在我的不断引导和迭代之下,我一期就写出了 6 个 Spec,包括初始框架构建,以及初始的功能。
在 AI 跟我迭代 Spec,也就是需求的时候,我发现很多关键决策,我无法做出正确判断。比如,是否要给 UIKit 留一个占位,你是要使用 SwiftUI 的 MVVM 还是什么别的,这些问题,我极其陌生,只能回答说,请根据你的经验,给我一个最佳实践的配置。事后证明,这留下了很多我都判断不了是不是坑的东西,我检验的标准就是,8 轮 10 轮提示之后,依然会卡在同一个地方,不是坑还能是什么呢?
在我觉得 Spec 差不多了,我让 AI 去实现的时候,才是真正检验效果的开始。
最终,那个初版的 App 出来了,竟然能够运行起来,我已经很感动了。
我想说的是,写好的全部 Swfit 代码,怎么在 Xcode 里跑起来,我都费了九牛二虎之力,因为我并不熟悉一个 iOS 开发项目的脚手架,以及项目构建基本配置。我只是让 AI 帮我写完了全部逻辑代码,但是这个东西部经过编译,根本跑不起来的。
写写代码 15 分钟,我让这些代码在 Xcode 里顺利启动,运行在模拟器里,花了一天,别提多挫败了。
实际运行的时候,问题也很严重,比如我点开了那个照片的遍历界面,但是完全无法“滑动”,手势识别的是完全错误的。
6 个 Spec,只有第 2 个被标记为完成,其他 5 个都有无法 Close 掉的 Task。而我根本不知道怎么办。
Unit Test 根本没法运行,首先,要运行第一步也是要单独构建一个 Target,这是我不知道的,但是我也不能判断对不对。
为了完成这个 Target 配置,我花了 2 个多小时,终于能够构建了,但是 Test 是完全通过不了的。在执行 Test 的时候,一旦卡住,Xcode 就会拼命 Clone 模拟器,很快就把我电脑的内存和硬盘都打爆了,最终也没跑过测试。我不知道使用了单元测试是不是一个大坑。
感受
首先,我是一个专业人士。
只是,我在 iOS 和 Swfit 上并不专业。我这么说并非谦虚,看过历史博客,应该知道,我是用 Flutter 写出过双端 App 的人,通过 Flutter 的脚手架,我完成了双端 App 的构建,发版等等,都做过的。所以我对 Xcode 还是用过一些的,毕竟我写的 iOS App 上架过。只是,不是使用原生开发的方式,而是跨平台的方式。
但是,就算如此,我在使用 iOS 原生开发的时候,那感觉也是如此的陌生和差劲,毫无掌控力。
就是我甚至不能给 AI 一个合理的建议,或者拦阻 AI 无意义的尝试,只能眼睁睁看它耗光我所有的 token。
最后
AI 编程能力很强,也一定行(在未来),但是现在,我觉得,在我们这种专业人士手里,在我们各自的专业领域,AI 编程可以让程序员提效,这没错,但是,如果你说一个非专业人人士,想用 AI 去一天产出 20 个产品,大卖特卖,那就是搞笑了,至少我是不信的。
