For the complete documentation index, see llms.txt. This page is also available as Markdown.

AI所感

今天是2026年的4月2日,凌晨,我开始写这篇文章。这篇文章涉及到的所有技术,也仅仅局限于今天的AI发展水平,未来或许会有变动。

为什么写本文

最近(生成式,下略)AI已经不能称之为大热了,可以说是红的发紫,紫的发黑,黝黑发亮。AI也是我近几年见过的最具有生产性,最激动人心的技术之一了。自从ChatGPT 3.5取得成功以来,资本的关注迅速提升。企业用AI为借口融资,也以AI为借口裁员。 他们用从银行借来的钱,购买了尚未被生产出来的显卡与内存,来满足不知道用户在哪里的未来算力需求。 资本从来都不想被时代落下,上一次卷积神经网络的AI爆发如此,虚拟货币,NFT,元宇宙也是如此。

更加重要的是,AI确乎展现出了它的神迹,它已经通过了图灵测试。如同珍妮纺纱机一般大幅度提高生产效率,淘汰落后产能已经就在眼前了。

我作为一个码农,平时也大量使用AI写代码和文档,Claude和Codex我都使用。我也从中感受到了莫大的便利。 但是,面对最近的AI热,我总想说一些使用体验——虽然有些可能近乎泼凉水。

AI有什么缺陷

为什么开篇要说缺陷?有两个原因:

第一、是我们已经足够熟悉AI带来的各种神迹了,无须赘述。 第二、是我们需要清晰认识到AI的边界,才能更好的利用AI。

幻觉

首先,AI幻觉的问题从来没有被真正的解决。AI的幻觉问题在最新的大模型中被抑制了,但是仍然如同斩不断的乱草一般。

相信大家一定看过那张梗图:“我家距离洗车店50米,我应该开车去还是走路去?” 好多的AI(包括我亲测了Gemini)都推荐走路去。 为什么?因为简单来说就是P(走路|50米)>P(开车|50米),当然不是很严谨,大家看个意思好了。50米这种短途举例在开车中不常见,而问题本身更是可以上弱智吧的程度,导致AI从来没见过。 AI仍然是基于统计的方式进行训练,那么就不可避免的有统计的问题。AI从来没有真正拥有过逻辑思维。

如果是一个人,应该怎么回答?

  • “不开车去你洗你自己吗?”

  • “你是要去洗车店上班吗?”(老白:对啊)

这是训练模型的时候的胎里毛病,不是增加数据量或者增大模型就能解决的。

除此之外,AI没有长期记忆——这一点靠MCP工具以及上下文压缩等等外挂技术已经有所改善了。

至于我工作中,遇到的缺陷主要还是来自于幻觉,AI会幻想不存在的API接口,会尝试把问题糊弄过去,头疼医头脚疼医脚。 在设计程序的时候,AI并不是自顶向下的设计,导致AI写出来的代码冗长繁琐,过于拘泥于很小的细节。

需求

与其说是AI的缺陷,不如说是软件工程本身的问题。这里面涉及到需求的暧昧性和测试覆盖的范围。

首先说说需求的问题。

比如说,我让AI写一个购物网站,我给AI的预期是:当用户跳转到购物车页面的时候,默认勾选所有活跃的项目,所谓活跃项目,就是用户最近30天内添加或者修改的项目。 这个时候AI吭呲吭呲的写好了,测试的时候发现,写需求的时候忘记写了,要先检验一下购物车里的商品是不是还都有效,否则一下单,后端API出错了。 好不容易加上,结果又有问题,还得检测一下商家的库存够不够,否则一下单,商家库存变负数了。 这些还是明显会想到的、会导致错误的部分。其实还有一些不会出错的小设计问题,是需要人类反馈问题以后修改设计文档的,那就更多了。

这样的问题人类开发者也有,我们即使假设你有了完美的AI,需求的确定本身不是毫无成本的。

其次是,AI自己写单元测试,通过了以后就真的没问题了吗?

举个例子,我让AI写一个素数判断函数,AI写出来以后测试了 2,3,4,5,6,7,8 都对。但是9可能就出错。 当然这个函数同样存在输入1的时候要不要返回结果,输入0和负数怎么办等等需求问题。

验证

软件写好之后,验证这个软件是否按照预期工作的成本——也就是测试成本,被严重的低估了。

我经常看见的一个论调是:以前写汇编,后来写C,用编译器生成汇编,再后来写Java,内存也自动管理,至于Python就更像自然语言了。 现在没人写汇编写机器码了也没有任何问题,所以AI革命以后自然语言会成为新的编程语言。我一直以为这样的论调Too young too simple, sometimes naive!

我们必须关注一个程序写好之后到底是不是按照你的预想在工作,比如用Go,Java或者Python这样的高级语言,我们确实不用关心底层的机器码(或者字节码之类)了,但是无论哪一种语言,其行为总是确定的,哪怕是个BUG,也是可复现的。像C++中的未定义的行为或者单片机跑飞了,都是少数情况,而且大多源于访问了不该访问的内存。使用高级语言之后这种事情是很少的。

至少我可以保证我创建了一个数组之后这就是个数组,不是HashMap或者HashSet。

但是AI做不到这一点,现在主流的生成式模型的输出是在概率分布上采样生成的,采样这个行为本身具有不确定性。即使我们固定了Hash,你也只是保证针对这样的输入能得到固定的输出,你甚至无法保证对于类似的问题(比如改一下语序)就能得到一样的回答。

这种情况下AI的生成必须被逐字逐句的校验,被人类理解。

然而,这是一个痛苦的过程,我经常是让AI写300行代码,理解,然后指出问题,然后AI删了100行,新增150行,我继续阅读修改的部分。 最后,AI完成了一个500行的程序,但是我Review了2000行的代码。我经常痛苦的想,早知道如此不如我自己手写来得快。

AI能做到什么,我们应该怎么使用AI

其实在我看来,AI最擅长的还是飙垃圾话、小片儿汤话。 比如说写公文(类似于“我们需要拿出新举措,聚焦新态势,切实把握群众所需所想”这种鬼话),翻译文件,或者技术文档里面要向读者阐释基本的东西但是懒得自己写的时候。

如果是进行软件的开发,一定要:

  1. 在沙盒里面运行或者严格限制权限,毕竟你也不想被AI rm -rf / 对不对?

  2. 要能够切实检验AI的产出,而且是效率越高越好。比如回归测试,比如直接打开AI写的前端页面试看看。如果能让AI自己执行那就更好了。

  3. 自己一定要有清晰的设计思路,如果你糊弄AI,那么AI也会糊弄你。我曾经尝试用AI在我不懂的领域写代码,那是一个在仿真器里面添加新算法并且测试看看性能如何的工作。结果就是,AI写的代码到处都是漏洞,但是在我自己搞懂项目结构和每个变量的概念之前,我也不知道AI到底犯了什么错误,我想AI自己也不知道。

  4. 一定要理解AI干了什么,一定要逐句Review(审阅)AI生成的代码,不能因为代码是AI写的就偷懒不去弄清楚。那样的话即使通过定义测试、回归测试等等方法确认了AI的产出,但是代价是整个项目熵增了,以后的维护会越来越艰难。

AI对我们的未来有什么影响

上面是一些技术相关的碎碎念,那么下面就更多的是政治了。

最近甲骨文也好,Amazon也罢,都在以发展AI为借口裁员。其实在大企业工作过的我们知道企业内部的低效与抽象根本就不是AI能治得好的。企业的问题在于长远目标的设立,通过这个目标获取未来的一席之地;而企业运营中实际关注的却是短期的盈利。不然怎么可能就这么巧,大家突然就都觉得AI是自己的长远目标了呢?

比如甲骨文,我理解的甲骨文的Oracle数据库虽然也是屎山源代码(听说),但性能就是很强,变态的那种强。AI可以用来重构,可以用来整理源代码和测试用例,甚至可以基于过去的经验开发新的数据库,但是唯独不是自己去搓AI。当然,我只是举个例子,甲骨文也是大企业,没准有自己的想法和其他的业务。

根本的原因还是在于资方也好,公司的高管也罢,都愿意追新潮,走捷径。有的是脑子只能理解新潮技术的表层,有的则是懒得说服前者去沉下心来经营更难的,更大的计划。

我相信不是大公司的领导不懂技术,而是这些技术大牛需要给手里握着钞票的,脑满肠肥的老登解释自己怎么样才能保证盈利。而老登的见识则不足以让他们理解新潮技术以外的更加深刻的东西,于是你就看到一众企业像是被饵料吸引的鱼群,时而冲过去撕咬虚拟货币,NFT,时而冲向元宇宙,最近又冲向了AI。

AI热也好,AI裁员也罢,根本的原因不在于AI,而在于急功近利的资本,在于严重不对称的劳资关系和巨大的贫富差距。

一个预测

最后还是说一下我的预测好了:AI将会大量取代低阶的岗位需求。AI相当于给每个程序员配了一个脑子不太好但是干活贼快的免费学徒,企业暂时失去了招新培养的动力,而且考虑到要买的显卡,现金流也不是那么充足。这样一来,市面上受过传统训练的工程师数量会逐渐减少,随后招聘成本上升,企业逐渐意识到培养新人更加便宜的时候会重启招新。但是考虑到AI的影响,市场仍然会相对萎缩一些。

考虑到现在市面上工程师过剩的局面,这个过程可能要持续几年。也就是说,这几年的计算机的毕业生会更加难以找工作了。而且更悲催的是,即使等到市场回暖的时候,企业也一定更倾向于招聘应届的,身体皮实的年轻人,这几年的计算机学生可能会成为“冰河时代”。考虑到这一点,及时转变方向或者读书是比较好的解决方案。

市场方面,定制化开发的成本将会下降,可能会卷死一批外包企业——毕竟他们糊出来的代码和AI难分伯仲。但是整体系统——特别是长期使用的大型系统的设计,以及靠近底层的部分,仍然需要人力进行大量的设计工作。

我相信肯定有智障企业觉得啥都可以用AI代替然后把程序员开得七七八八然后靠PM全面拥抱AI的。我100%相信这些企业会在未来为它们的愚蠢付出相应的代价。

愿我们迎来的是一个美好的未来。

最后更新于