为什么有了AI,我们依然很难打磨出“完美”

ChangYo ·
·

这篇文章,是我在大量Vibe Coding实践后对自己使用AI行为的一些思考。这篇文章在两个月前就想要动笔,只是个性懒惰,迟迟不开动。

前不久GPT-6 Astra发布,网上各种令人惊叹的Computer Use demo满天飞,我自己体验下来也发现代码能力提升不小,于是又想到了这个问题。我觉得把我的思考链路记录下来,也是一种很好的反思。

非程序员 + AI > 程序员 ??

先回答我对这个最核心问题的看法:不会

回答的这么干脆,并不意味着我从一开始就是这么认为的。我的观念在这个最核心、社区讨论最多的问题上反复横跳过许多次。最终到现在,我越来越认为答案是“不会”。

在我最开始接触到Coding Agent 的时候,我对AI的能力是十分惊讶的:只需要给一段提示词,然后就可以看着电脑屏幕一片绿闪闪地瀑布般涌出代码。原来可能要古法编程数个小时的代码量,AI只需要几分钟就可以给你完成。更重要的是,他还会自己启动终端跑测试,收到运行结果,然后回去定位bug,修复后再跑一次,循环往复。

对我而言这简直不亚于爱迪生发明了灯泡,即便当时Agent能力还十分粗糙,我已经明显地感觉到,我现在的水平,已经被AI取代了


在后面一段时间,Token的价格还不太贵的时候,我用AI制造过许多的“小垃圾”。比如做一个音乐播放器,比如一些格式转换器,比如做一些文件解析器。每次我都像许愿一样,给AI一段或长或短的提示词,然后抱着拆盲盒的心情,希望AI做出一个能用的东西。

事实是,东西确实能用,但是各种细节和体验,让人一言难尽。

每次遇到一些小bug或者不舒服的体验,我又回到对话框,像个小孩子请求自己母亲一样,“请把界面做的好看些”,“请把动画做的流畅些,不要遮挡到这个按钮”,“请把颜色变得舒适一些”……

模糊的提示词往往带来潦草的应付,结果就是“道理越讲越不清”。

许愿,恰恰是没有专业知识的人最初接触到AI时一直在做的事情,不是说专业的人不许愿,只是专业的人很快会发现许愿的质量实在不稳定,会更快的收敛。

而问题很多时候在于:非专业者不知道怎么去收敛AI的输出。


一个前端照片墙,如果一个用户不了解前端的术语,可能这样描述:

照片从上往下排列,每个照片的宽度固定,高度不固定,列与列之间间距相等,对于每一列,照片会自动向上补齐空白。

这个描述还算比较详细了。但是如果让专业前端开发的人来讲,可能是

照片墙采用 Masonry 样式

一个懂前端相关知识的,在prompt的设计上,天然就擅长将自己专业领域的术语代入。而AI的输出本质是 下一个token的预测,所以聚焦些,AI输出的效果也更好一些。

再比如:

把这个文字和边框的间距变大些,然后边框和上面的部分的间隔也大些,每个按钮的间距还可以增大些

如果让专业的人来说,或许就是:

相对应的增大 padding 和 gap

这些例子都是在说明,完成同一件任务,如果在这个领域有相关的知识,验收的质量其实往往更好,大模型输出的结果也更加稳定可预测。

专业素养

垃圾的输入会产生垃圾的输出,垃圾的输出再继续作为垃圾的输入,最后得到的是无穷无尽的屎山。

任何写出的代码,从诞生的时候起,就会慢慢地开始腐朽。不投入精力去有意识的精简和不断地小范围重构,最后只会变得实在难以维护而被抛弃。

自从Coding Agent出来后,GitHub上各式各样 Vibe Coding的项目层出不穷,或许你在各个网络平台都能看到作者的宣传。

但是如果我们长期追踪,会发现90%以上的项目在最后都不了了之。立项之初频繁地迭代,但维护没过多久,就基本无人问津。

这并不是针对没有编程经验的人,很多程序员有几十个抛弃不管的仓库也是不少见的。但我们来想想如果想要让一个项目持久下去,需要怎样的投入呢?

至少,对于整个架构需要有个比较深的理解;至少,对于一个系统的行为和预期有个大致的判断;至少,知道这个模块用来负责什么业务,能不能删,删了会影响其他什么模块。

简单而言,不能把他当成黑盒(除非你只是做着玩)。

而如果我只是一个遇见报错就复制给AI说一句“修这个bug”,从不考虑改动对其他模块影响只是顺着心情说一句“把这块动画变成XX样”的用户,天才知道AI到底造了多大的屎山呢?到了最后,发现屎山已经达到连AI自己都处理不了,这时候该怎么办呢?

当然,有人会说了现在 GPT Astra在架构的设计上比大部分人类还强,这还有什么好担心的呢?这没错,但是“判断这个架构好,为什么好”,是不是依然要有专业知识的储备呢?

心态最重要

讲了这么多,终于到了我觉得和标题关联最强的一个部分了。也是我认为可以让我接受的一个解释,那就是──心态的不同。

现在AI如此强大,每个人获取到Token的成本其实已经十分低了。当人们有了大量的Token之后,就会愿意花费──或者说“浪费”──Token。比如扔给AI一段模棱两可的提示词,然后期待着AI做出让人惊艳的作品。大多数情况下,结果并不那么惊艳,偶尔有少部分,或许由于“天时地利人和”,的确给人一个惊喜。

而这些寥寥不多的惊喜上传到了社交媒体,不专业的人看到这些炫酷的demo,下意识的会认为AI强大了,AI可以取代人的创作力了。

都说“隔行如隔山”,在使用AI上也是如此。大众对于这个领域并没有一个正确的认知,就容易将花哨的demo等效为这个领域最需要的能力。然后真正进入到专业领域,会发现一个昙花一现的demo意义不大,行业需要的是一个稳定运行的系统,需要的是一套稳健,能够持续演进和沉淀的工作流。

能快速做出一个玩具,并不等同于能做出一个大家都愿意用的产品,更不等于能长期维护这个项目。而想要长期维护,最重要的就是人的投入。AI可以帮你把项目立起来,但让一个项目活下去的,从来都是项目后面那个人。

专业软件从来不只是把软件操作一遍,给出一个看得过去的作品,它还包括目标怎么拆,工具怎么选,结果如何判断以及做错后从哪里改。── 浮之静

写到这里,标题里那个问题,我也可以给出自己的答案了。

就像我现在维护的这个博客,不少代码就是和AI一起写的,AI给出的版本当然能用,但每一个让我自己满意的细节,几乎都是我开着页面一遍遍看、一遍遍亲手改出来的。AI把从0到“能用”的路缩短到了几分钟,可从“能用”到“完美”的那段路没有任何捷径,它枯燥、缓慢,也没有demo可以炫耀──但恰恰是这部分,AI替代不了。

这大概也算是一种安慰吧:最难的那部分,依然是我们自己的。