分享一下我用 AI 从 0 到 1 开发 App 的经验, the good, the bad, the ugly. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
dongsuo
V2EX    分享创造

分享一下我用 AI 从 0 到 1 开发 App 的经验, the good, the bad, the ugly.

  •  
  •   dongsuo 274 天前 2186 次点击
    这是一个创建于 274 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    先介绍一下背景。我的主业是后端程序员,在此之前我是专职前端程序员,在 2023 年 7 月份,我开始用 React Native 写一个 side project, 那时候 AI 的能力还比较弱,所以那个 app 绝大多数代码都是我自己写的,这是我个人的背景。今年下半年,我试用了公司内部和外部的代码生成工具,这时候的 AI 已经不仅仅是更强大的补全功能了,而是更像是一个 agent 了,我很兴奋,玩了一整天。上周五,我突发奇想,有了一个 idea ,于是我就想尝试一下尽可能地用 AI 去实现这个小项目,试试到底能做到什么程度。

    介绍一下这个项目

    这个 App 是一个 iOS App ,Life Progress, 很简单,用户输入预期年龄和生日,然后生成一个图表来展示用户的生命进程,最重要的是,支持 widget 。 技术栈是 swiftUI ,虽然我对 swift 一无所知,但是 AI 会。 除了这个 App 本身,我还制作了 App 的 icon 和落地页。这两个也是 AI 生成的。 时间上整个项目我花了三天时间,不过中间要工作、带娃、看剧、玩游戏,所以当然不是 72 小时,按小时计的话,我只能给一个估计,可能是十几个小时左右。

    App: https://apps.apple.com/us/app/life-progress-with-widget/id6740145361 落地页: https://lifeprogress.vercel.app/ Logo: https://i.imgur.com/hcgEiNh.png

    我用到的 AI 工具:

    Windsurf ChatGPT-4o Claude 3.5 Sonnet Gemini 2.0 Flash V0

    开发

    我是直接在 windsurf 上起项目,刚开始非常顺利,代码很快生成,文件结构也还 OK ,但是 iOS 项目的 .xcodeproj 工程文件没有生成,所以我需要手动在 xcode 中创建,这是一个小卡顿,但是不太影响。然后我就开始优化项目,提出新的需求和代码结构的优化,包括代码结构的优化、year/month 视图的创建、新增 tab 路由、新增 settings 页面。这一切都很顺利,几次迭代后,项目已经颇具雏形。当然这期间我也不断修改需求,好在这只是一个 AI ,不是真正的程序员,否则面对一天内改四五次需求的 PM 肯定早就暴走了。 不过这期间也有磕磕绊绊,主要是对需求的理解上,不过这怪我,没有表述清楚,AI 毕竟无法共情。 然后,我让 AI 开始实现 widget 部分,这部分出现了很多问题。主要是 1. 代码复用, 2. 新的 target 和项目配置

    1. widget 和主 app 需要代码复用这部分问题倒还好,但是由于代码复用,所以很多改动需要联动修改,AI 经常出现改了 A 处忘记改 B 处的情况,需要在 prompt 中主动 @ 。
    2. 新的 target 带来了新的项目配置问题,比如 iCloud 在两个 target 直接同步需要的配置、两个 target 需要配置 group ,以及复用的代码的配置等等,其实我目前仍然搞不明白这些配置到底要怎么做。但是 AI 更不明白,ChatGPT 和 Claude 都给不出来合理的解决方案,遇到错误给出的排查思路也没有什么帮助。但是 Gemini 2.0 Flash 给我很大的惊喜,能够给出一步一步的详细的指导,包括点击 xcode 的哪个菜单、修改具体哪一个配置项等等。所以到了后期我对几个 AI 的分工就变成了编码部分让 IDE 里的 Claude/ChatGPT 来做,debug 部分/配置问题部分让 Gemini 来做。

    最后快要上线的时候,发现需要一个 logo 和落地页,于是我用 AI 来做这两部分。logo 部分我优先想到是一些 AI 生成 logo 的工具,但是发现生成效果都很烂,基本上跟我几年前用的套模版的那些 logo 工具差不多,还要收费。于是我又尝试用 ChatGPT 直接出图,但是 ChatGPT 的效果我不太满意,而且生成的图不能直接用,不是纯粹的 logo 尺寸和格式。于是我又转而用 Gemini 生成,但是我用的那个套壳工具 Gemini 貌似不能直接出图,我只好让 Gemini 给我生成 svg 代码,最终几次调教后,生成了一个我觉得超出平均分的 logo 。 落地页部分我直接用了 V0 ,效果很惊艳,但是不知道是网络问题还是什么,后续的修改失败了,用完了我的免费额度,于是我只好用 Gemini 生成了最后一个 page ,手动改了一部分代码。

    感受

    如我标题所说,整个过程里充满了惊喜、失望,整体而言,我的感觉就是“未来已来”。 整体而言,这个项目大约 90%+ 的代码是 AI 完成的,编码部分可能只占用了整个项目的 10% 的时间,但是在项目的构建、配置、debug 部分,可能花了我大概 90% 的时间,但是 AI 能给到的帮助可能只有 50%,主要原因是我对 iOS 开发所知甚少,但是 AI 可能预设了我应该有一些背景知识了,所以能给到的帮助不大。关于这一点在很多其他文章也都提到,就是 AI 编程的 “The 70% problem”,相信未来模型和工程都会更好地解决这个问题。 但是 AI 面对复杂项目仍然有很大的问题,这个项目已经很简单了,但是 AI 仍然会偷懒,会忘记项目的 context ,代码之间的关联关系等等,导致出现很多问题,所以在公司里的生产项目里,我仍然不太敢过于相信 AI 。 正确合理的 prompt 可以极大地提高 AI 的效率,比如说有时 AI 会丢失上下文,所以保证在 prompt 时提及正确的文件、目的很重要。清晰的思路、指令、方案拆解等有有助于提高 Ai 的效率。

    未来

    LLM 才出现两年,就已经有如此大的影响,所以我觉得未来,软件工程一定会有巨大的变化,目前所有的 copilot 、IDE 、agent 都只不过是这个变化过程中的探索产物。过去我们所有的软件工程原则,都是面向人的,我们需要追求代码可读性、需要代码易于理解,服务划分、代码仓库、文件结构等等,都是以人的可读性为目的的,我们的 IDE 、仓库、构建工具、CI/CD 也都是面向开发者设计的,那么未来,这些软件工程的基础设施,是否会在设计时就考虑到 AI 的接入?我相信一定会的。 LLM AI 会替代程序员么?我觉得不会,LLM 目前的能力仍然不足以应对复杂项目,我觉得未来也不能,但是 LLM 会大幅提高程序员的效率,这一点是毋庸置疑的,但是 LLM 也会制造更多的工作岗位,我们要做的就是 be water ,学习这个新的工具,适应这个新的时代。

    7 条回复    2025-01-13 10:54:58 +08:00
    ohhow
        1
    ohhow  
       273 天前
    我也打算这个人生进度的网站,但不想建数据库做后台,不知道有没有一个公共平台能存储和读取 json
    dongsuo
        2
    dongsuo  
    OP
       273 天前   1
    @ohhow 可以用一些 saas 服务,比如 supabase/appwrite ,有免费额度,小项目够用了, 好像 mongo 也有,我这比较简单,是存在 iCloud 里的
    zenfsharp
        3
    zenfsharp  
       273 天前   1
    @ohhow riak 这个数据库可能会满足你的要求,它可以直接用 web API 访问数据
    ysyah2019
        4
    ysyah2019  
       273 天前
    请问 OP 是如何完成专职前端 -> 后端转型的?
    sc13
        5
    sc13  
       272 天前
    只有 ipad 版本能玩吗
    dongsuo
        6
    dongsuo  
    OP
       269 天前
    @sc13 iPhone 也能用啊
    dongsuo
        7
    dongsuo  
    OP
       269 天前
    @ysyah2019 公司内部有机会
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1093 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:15 PVG 07:15 LAX 16:15 JFK 19:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86