我有将近15年的前后端工程经验,以前每当一个需求被产品提过来,我能马上脑子里勾勒出来大致技术架构和关键问题。在产品提出需求的时候,能立刻给出来可行性的判断和关键问题的解决方案。慢慢的,我觉得几乎没有解决不了的工程问题。但是,做 AI Agent 开发这段时间,我感觉很无助,我总是想试图让一切链路变得可控,但是我发现越是想控制,越难以控制。比如有时候AI执行一个skill,第一次对话完美执行成功。但是多轮对话结果却不尽如人意,有时候skill 3分钟执行完成,有时候却是30分钟。于是我优化缓存,优化context,优化skill的描述,一套组合拳下来,最后发现成功率不降反升,skill越写越长,准确率反而越来越低。有时候能唤醒skill,有时候无法唤醒,有时候任务会被突然中断。于是又折腾换一个大模型,表现又完全不一样。对于一直追求确定性的我来说,这是完全不能接受的。回想以前做一个秒杀活动,如果库存没了系统表现怎么样,缓存击穿了怎么办,fullgc了如何处理,下游支付链路限流了,如何止损。这一切的一切都需要确定性结果,每次大促前压测 + 预案演练 + 异常告警,都是为了让各种异常可控,让结果清晰明了。然而,AI 的随机性,让一切不可控。为了解决AI的幻觉,不可控的问题:我尝试优化提示词,将返回结果数据进行工程化检测,将确定性链路尽量抽象成接口调用,甚至试图减少大模型的调用,提升系统可靠性,宁愿通过复杂的工程方案来让程序可控。这一切尝试让我非常的沮丧。我慢慢发现我还在用工程思维解决AI问题,我在用前朝的剑,斩本朝的官。大家都在说AI Native,随着项目的深入,我才慢慢意识到,这更多是认知问题。我承认,我被固有的工程思维禁锢。| 传统软件工程 vs AI Native以前觉得 AI 只是传统工程链路的一环。比如 AI 点奶茶,其实就是一个工程链路前端加了一个AI的语义识别。没有AI前也能做,但是语义识别不准,通过关键词匹配,或者再增加一些表单填写,也能解决。但是AI来了,识别用户意图准确率大大提升,体验更好了。但这算AI么?我觉得这只是 AI Added 并非 AI Native。AI Added只是用大模型解决一些传统软件产品中,某些连路上大模型可以更好解决的问题。传统软件偏向规则,通过层层可控,来提升稳定性和确定性。而 AI Native 更像人类,需要通过协作,评估,学习,监督等方式提升确定性。这是两条链路,可以互相借鉴,但是解题思路其实不一样,需要刻意的训练。| 互联网和AI是什么关系?如果AI的出现早于软件工程,也许就没有必要刻意训练,因为 AI Native 更像是人类的思维。人类的层层审批流程,就是通过评估对抗,提升结果的准确性。长期的工程化思维训练,让工程师更像是一个机器,而 AI 更像人类,有点讽刺。为什么思维转变很重要呢?因为环境,AI的出现,互联网公司是天然的孕育环境,互联网大厂有资本,有数据,有机器,有算法工程师,有软件工程师。AI 从互联网公司孵化出来,一切都变得自然而然。AI是一个新的物种,它需要发挥潜力,刚好周围有现成的工程师团队,于是原来的工程师和产品团队,自然成了应用层面的实践者。但是传统的互联网思维一下没有办法转变过来,大家也都还在摸索中。在摸索中,就容易经验主义,传统的DAU思维,转化率这些指标在AI产品中,也许不重要了,但是有些团队依然是这套打法。好在大家都一样,都需要摸索,走点弯路也很正常。| AI会替代掉程序员么?解释这个问题前,首先要先把维度区分开,这是三个维度的事情: