有时候觉得自己也陷入了有福不享,没苦硬吃的境界中。过去几年一直在全球各种浪浪浪,今年本来规划的台湾玉山行,自己取消了。马来亚庇行,自己取消了,上个月回国只浪了20天就匆匆回来了。哎,真是没事找事,今年给自己立的flag,含泪也要继续下去。4月初发布产品后,回国浪了20多天,然后回来继续,发现后续的前进越来越艰难。直说就是,AI开发原型真的快,细节调优全是坑。有些理解为什么很多程序员不太热衷于使用AI开发了。之前很多人觉得我的工具选择有问题,那么我现在继续汇报一下。最开始我用的是vs code + copilot pro,10美刀1个月,跑的是claude 3.7 AI模型。然后开始尝试使用Vs Code 的Augment 插件,免费期疯狂体验了几天。后来在很多读者和朋友的建议下,决定再试试 Cursor pro,直接氪金,20美刀1个月,体验一些所谓最新最强的AI模型。但很遗憾,从我的体验来说,可能各种宣传预期太高了,直接使用的体验是差强人意。这个题目缘起也是,在我看来,AI创建了巨大的代码屎山,然后又要在屎山中寻找一条按照需求前进的路线。顺便,继续保持0代码编程,但再也不敢提任何零基础的事情。Cursor是真乱来啊,动不动就把已有的东西改的面目全非,我现在遇到不符合预期的交互结果,我已经不敢直接让它修改了,我都是小心的说,你先把什么什么的信息,在终端输出出来,同时强调不要在ui里输出(游戏产品,ui输出调试信息的话,交互体验就不存在了,但AI真这么干过)。然后重新执行,一行行的看调试信息,结合交互操作,一行行比对调试信息,去还原和揣度Cursor实现逻辑中的问题,再把这种调试信息扔给他,然后谨慎的约束边界,只允许修改什么部分,不可以修改什么,然后还要盯紧它输出的修改描述,但凡发现不对劲立即终止并拒绝变更。有时候担心是AI模型不对劲,换额外付费的最新模型(cursor pro会员费之外,还需要一些最新AI模型的接口费,5美分一次请求),然后就是,两三天十来个美金花出去了,最后git restore . 重头再来。现在迭代步骤也变得非常小心谨慎了,只要AI的改进有一点点进步,就赶紧 commit 一次,之前都是想凑一批改动commit,然后被现实各种教育,没法凑,前面改动了一个小问题还行,然后再改第二个问题的时候就改的各种崩溃了。最开始用AI做小游戏的乐趣已经被消磨的差不多了,而且体验游戏的乐趣也被消磨了,本来都是为自己无聊杀时间的游戏,现在习惯于一步步的操作,一步步的盯着调试日志,只有压力,哪来乐趣。第二个产品延期了,(其实手机上的原型我自己最近已经用起来了,但是产品化太多细节暂时没精力去做了,因为第一个产品的优化时间表明显超出预期)。第一个产品需要继续跑通一些流程和改进。本来说今年应该能用AI搞出来四五个产品,要给自己打脸了,希望年底两个产品能正常跑起来就可以了。后续计划6月份要带娃回国,7月份预定的欧洲徒步,所以想在出行前把第一个产品做个大的版本更新发布,压力还是蛮大的。(还欠着知识星球年中福利课呢!)中间有点跟自己较劲,有个功能,其实我觉得玩家不是那么需要,一度我都准备放弃了,但是后来想想,我做的目的是什么,是为了更好理解AI编程的优缺点,能更好掌握AI编程,更好的跟读者进行分享和交流,所以一个非常鸡肋的功能,我硬是消耗了四五天的时间,反复纠错,反复调整,反复和AI较劲。1、AI没有全局观,哪怕是所谓能读整个目录的最新AI引擎,在你提供的提示之外,它不会顾及太多其他的兼容性考虑,所以就出现过很可怕的事情,就是为了某个特定小游戏的能力,它去修改了公共库,而公共库是我好不容易把逻辑抽离出来,为了后续版本重要迭代,便于管理的。修改了公共库,导致了其他所有小游戏的调用全部出错,然后陷入一系列崩溃。还有一次,我让它修改一个词汇的翻译,其实就一行代码的事情,它居然修改了翻译文件里的变量名,修改变量名意味着前端交互地方的请求全是错的。也是只能全部回滚。没有全局观还体现在对问题处理的思路上,比如说,我提供一些调试日志,证明他们最后出现的数据逻辑是有问题的,其实这时候,我认为最大的问题是这些有问题的数据逻辑是怎么产生的,需要溯源去解决,但是它的思考方式是,如何在最后一步校验有问题的数据并提供一些屏蔽策略,这就莫名其妙了,我好几次要跟AI讲,你这不是解决问题,我不需要你最后一步做太多重复的,莫名其妙的校验,我要你去回顾和反思前面数据生成和采集的逻辑是什么。我之前常说,所谓低耦合,高复用,是系统架构很重要的一个基础认知。但这一点目前AI似乎并没有主动性,必须是开发者自己掌控,而且要盯紧AI的修改过程,否则你精心打造的低耦合,高复用的结构,在AI自以为是的大刀阔斧的修改中,会成为系统最大的雷区。特别是当你使用 Agent模式的工具。我其实给AI打开所谓公共库,是让它去理解里面的逻辑,好修改代码,但它认为,既然给它打开了,那就是可以随意修改。我觉得以后AI开发工具应该提供一个功能,对哪些文件给AI设置只读功能,需要它读这些文件代码,但千万别修改。AI接受我的指令,设计系统的时候,它会有一些隐藏想法,可能它认为是产品设计的一些基础,但其实不是我要求的,然后这个隐藏想法,它在会话窗口没有告诉我,然后它基于这个想法,设计了一个隐藏规则,这个规则,也没有告诉我。当然,如果只有这个想法和规则,也不是问题,问题是,它会和我设计的规则,发生冲突,这问题就来了。那么它怎么处理这种冲突呢,它会做一个降级处理,用一个很奇怪的方式去解决,但它也没有告诉我。然后我就发现为什么交互输出十分诡异,特别因为我看到的是游戏的交互界面,我就让他修改某个诡异的情况,它说都是按照我说的,并且已经修复了,但是我看到的视图依然诡异。这个问题困扰了我很久,因为我觉得没理由如此简单的需求我用了最强的AI引擎怎么还会做不出来,直到我发现它调试输出和游戏配置文件里的某项数字存在明显不一致,我追问数字差异的来源,才知道因为它的一条隐藏规则导致的。找到这个原因,问题秒解。隐藏规则,降级处理,我遇到的两次困扰几天的诡异问题,都可以用这个来解释。其实如果AI能直接告诉我,这些问题都不难处理,但是在它不告诉我的时候,我又真的没有去读代码(大坨大坨的屎山),就真的很难解。我现在已经是完全调试状态,每天让AI加各种调试数据输出,逐行逐行比对分析,感觉自己真的是一言难尽。当然,当然,我知道,有些人会很容易想到,AI的隐藏想法,还不是因为你的需求不够具体,不够明确,它才会去自己猜测么。其实我用AI编程也是做一步看一步,坦白说有时候我提需求的时候甚至自己都不知道最后应该是什么样子,我也是想看看它做出来的样子后,再决定该怎么调整和优化。甚至我都不能确定它可以实现到怎样的效果,所以也都是先从最简单的需求提起来,看看它的实现效果,再决定是否值得继续优化,调整,或者直接裁撤。其实也有一些尝试简单试两版就直接放弃了,因为我觉得它实现的完全不是我想要的,而且我也很难精确表达,算了算了,也不是非做不可对吧。那你说,我吐了这么多槽,是不是说AI编程不可行,不好用,不实际。不是的,吐槽的目的是,希望读者少走弯路,少犯我犯过的错误,多多去更好的使用AI编程,不要神话它,也不要无视它。很抱歉我不是那种特别有说服力,有成功案例的博主,可以给大家打鸡血,你们也能几小时做出一款爆款产品!我做不到,我水平有限,但我希望,通过我分享的一些我对AI编程第一手的认知,各种真实踩坑的反思,让更多小伙伴能更好的规避问题,更好的找到驾驭AI的方法,至少都能做得比我好。我的AI编程项目还在继续,我的目标是,更多考虑不同场景下AI编程的实现,更多尝试在不同的编程领域使用AI,从而更好的理解AI编程的机会与问题。苹果市场,谷歌市场均可下载,英文名叫作 Boring time,中文名叫做 无聊时光(苹果市场没有提交中文名,对市场信息发布不熟悉造成的,后下个版本会增加),希望六月初可以发布一个大的更新迭代版本。👇 我的知识星球,三天内自行退出免费100%退款承诺。

