如何让AI写的程序看起来不像AI写的

关闭页面 回到首页 打印文章

作者:xxt8582753

发布日期:2026年5月29日

最近几年,vibe coding(AI编程)爆火让我们看到AI在代码生成方面取代人工的可能性。我也早在2024年就开始体验AI编程,在我眼中,AI编程无疑是利远大于弊的,它不仅缩短了工期,还提高了代码质量和效率,但很多人都不接受AI编程,甚至随意辱骂使用AI编程的人,它们的观点大多是这样:

对于这些保守派,我们都知道改变一个人的想法是很困难的,但是如果让AI编写的软件不再有“AI味”,也许能骗到这些讨厌AI的客户。

我并不喜欢深耕于算法,以下仅仅是分享前端设计的技巧,也就是用户“看起来觉得怎么样”

使用现成的UI框架锁死AI的创造力

我平时喜欢用AI写前端,但AI写出来的界面总是这样,一眼看出是AI生成的

为了解决这些问题,我们可以使用现有的UI框架。

做网页的话我推荐MDUI,首先是我个人很喜欢谷歌的material design,其次是这种严格但又家喻户晓的设计指南更能锁死AI的创造力。一般情况下我们只需要一句提示词,让它用MDUI写界面就行了,当然,界面最切忌的是混用,你需要检查界面的一致性,不要让AI自己搓轮子,除非万不得已,不要让它自己写CSS。

那桌面应用该怎么办呢?那选择就更多了。众所周知我喜欢fluent风格,又喜欢qt,那么qfluentwidget,启动!

需要注意的是这两种风格虽然自己看着爽,但不是所有人(尤其是中国人)喜欢。很多国人觉得md3丑,但国外对md3的接受程度还是很高的,毕竟都已经被各种类原生系统调好了 ,如果我们这边也推行md3的话我想也没有微信QQ京东淘宝一个软件一套UI还巨丑无比这种事了。

如果你想塑造自己的品牌标识,不想使用现有框架,那就注意别把阴影动画什么的玩太花就好了,可以参考一下2023年以前,那个AI还没强到能完完整整从0写出一个应用的时代人们是怎么做出美观又实用的界面的。

当然,最重要的是保持一致性,如果选定了一套设计系统,那就从布局到配色,从组件到图标都要统一,切忌多套设计系统混用,当然如果混搭好看的话也不是不行,我偶尔也会m3和m3e混用

不要用emoji代替图标

因为对于同一个emoji,安卓手机显示出来长这样:

win11长这样:

你现在用的浏览器长这样:

😀

这么差的一致性,确实难以让用户对你的产品产生一种稳定的印象,还有就是emoji在我们生活中随处可见,用在软件里反而造成了“廉价感”,最重要的是,emoji作为传达情绪的符号,本身所带的高饱和度和特异性状我想大部分软件都镇不住。

因此,正确的做法是让AI尝试现有的图标库。

比如Font Awesome、Material Icons这类经过设计验证的库,不仅图标样式统一,还能根据平台自动适配细节,避免不同设备上的显示割裂。让AI生成图标时指定这些库的风格,再微调细节贴合产品调性,既高效又能保证专业性。

另外,图标和文字的搭配也得注意。别为了“简洁”把图标做得太小,或者让文字和图标间距忽大忽小——很多用户反馈“点错按钮”,往往就是图标区域不够清晰、交互热区没对齐导致的。可以让AI先输出基础布局,再手动调整间距和大小,确保每个元素都“各司其职”又不显得拥挤。

警惕AI的邀功请赏

试想一个夜晚,困倦的你想用AI制作一个音乐播放器玩,AI很快生成了一个非常棒的播放器,美中不足的是播放列表不能拖动排序歌曲。

向AI描述这个需求后,AI给每个列表项最左边加上拖拽手柄,并在表头写着:播放列表(可拖动)

既然已有可见的拖动手柄,何须如此画蛇添足?AI就是喜欢邀功,新加的什么功能直接呈现在界面上,生怕大家不知道。这种行为无疑是不符合常规设计法则的,至少不像人写的。因此也能被一眼发现AI生成。

除了这种显眼的标签,AI还喜欢在用户操作后弹出“操作成功”“数据已更新”之类的Toast提示,仿佛在提醒用户“看,我能干活了”。真人开发的程序只在必要时才反馈,而不是什么都弹窗。你要做的是:让AI写出功能后,手动删掉那些多余的提示和标注。

使用优雅的动效

如果你已经使用上文所述的设计框架,并且已经有了动画设计令牌,请忽略本节,保持你的风格一致性。

如果是自己搓的UI,不要搞鼠标移上去就阴影发光然后还转两圈,正如我所说,ai就喜欢邀功请赏,它也有时会以为人类喜欢花里胡哨的动画。除非你真的是想做一个很酷的主页,按理来说让元素“有理由才动”——比如一个卡片,按下去才会稍稍变暗就足够了。

手写readme

我相信很多人都喜欢给agent扔过去一句话:帮我生成readme.md,但你要是真这样把文档生成好,然后上传到github或者分发给用户那才是完蛋了。

你也别说什么“请用诙谐幽默的语气”,AI生成的文章,就是和人类有很大不同。

那正确做法是什么呢?

首先,记住AI生成的文档所列出的技术要点,然后关掉那个文档,自己重新仿写一边。

对,你可以模仿AI生成的框架,因为大家都喜欢有条理的文章,但具体语言真的要你自己去组织。不管你语文学的咋样,请你先试一试,如果实在不想自己写,也可以不写,让用户根据程序内部的指引自己探索。

不完美才是人

知乎上有这样一个趣问:“用一个字证明你不是机器人,你会选什么字?”有的人回答“爱”,有的人回答“错”,有的人回答“欲”……

而让我选择,我会选择“缺”而不是“错”。诚然,即使AI高速发展,目前最先进的LLM也会出现幻觉,AI也会给人类提供错误答案,但是AI在自己的能力范围内永远不会有缺陷,它们会让自己的工作天衣无缝,即使是错的。 所以,在程序中可以少量保留几个错别字,或者一些没对齐的边距,当然,前提是不能破坏用户体验,让用户觉得这就是一个bug,从而对你的专业信任下降。

除此之外,如果你在做开源项目,也可以适量堆点屎山:驼峰蛇形混用、大小写不统一、使用“temp““i““j”等毫无意义的变量名——只要你的屎山不破坏协作者的心情,其实也是能给程序加入一点活人味的,如果不太想让代码不好看,也可以试试不严格使用约定式提交之类的。当然,如果公司review有这方面要求还是算了。

让AI审查代码

我认为让AI给自己写出来的代码来一个静态审查是很重要的,之前vibe了一个项目,临近release的时候让AI审查一遍,结果发现同样一个方法竟然被重复声明了3次!同时,我们也发现大量未清除的死代码。如果直接将这种代码公之于众,后果不堪设想。由AI自己迭代的代码确实很容易出这种迭代漂移,因此我的建议是每次经过大量迭代后就审查一次,并且一开始就要想好解耦以及可扩展性。对于很大的项目让AI一次性审查估计人家眼睛都要看花了。

我的一些看法

总此七思,简能而任之,择善而从之。文章的最后,我想讲讲我个人对vibe的看法。

我看到很多开发者因为vibe被嘲笑,甚至被网暴,我也看到很多开发者十分抵触vibe coding,认为这是侵蚀自己思想,让自己丧失能力的洪水猛兽。其实我认为这些都是不可取的。说到底,伪装不是为了欺骗,而是为了让那些对AI有偏见的人,先愿意用你的软件,再用实力让他们闭嘴。对于我这种青少年信息爱好者,vibe能让我尝试我从来没试过的框架,降低新手准入技术世界的门槛。比如我根本没学过c#,但借助AI我能制作出EntertainingIsland,之前我的项目QQListener也是人机合写,在github上也获得了较高的评价。我们只需要关注一个程序好不好,是不是真正在为用户着想,至于它的实现方式用户是看不到的。

作为高中生,我编程的时间非常少,但是借助AI能极大降低试错的时间成本,一个问题如果在几年前我要跑遍CSDN,现在只需要问Agent,它就能完美解决问题。也许有人认为新手使用AI会降低学习效率,丧失自己的思维,但我以编程为乐,而不是以编程谋生,那又有什么关系呢?