AI 最大的风险,不是写错代码

Ethan9527 2026-07-16 07:44 1

《软件工程经济学》④


AI 最大的风险,不是写错代码


有一种 Bug ,我怀疑以后会越来越常见。它不是代码写错,甚至测试全部通过,问题从代码生成之前,就已经发生了。


一个电商团队的退款规则是这样的:正常商品七天无理由,预售和定制商品不适用;退款要扣除已使用优惠券的折算部分;余额提现过的用户二次退款需要走审核。


他们把这套规则交给 Agent 。代码生了,测试补了,构建全绿,验收用例跑通。


上线之后,退款金额开始出错。


不是所有情况。只有当用户同时持有两张不同类型的优惠券、只用了其中一张的时候。


排查了半天,问题不在代码。是没有人想到过这种组合。Agent 用自己推断的最合理方式补全了这个从未被提及的情况。测试一样跑通。


这不是孤例。另一个团队让 Agent 做权限模型改造,需求文档里写的是"管理员拥有所有权限"。


而系统里其实有管理员和超级管理员两类角色——测试全部通过,上线一段时间后才发现,两类权限被悄悄合并成了一套。


Agent 没有写错代码,它只是忠实执行了一份没有区分两者的描述。


有没有发现,这两个 Bug 很像?


代码没有逻辑错误。测试全部通过。构建全部成功。


问题不在实现,而在理解。


这种 Bug 和传统的代码 Bug 不一样。传统的 Bug ,你能在代码里找到出错的行。但这种 Bug ,你找到的每一行代码都是"对的"——它正确地实现了一个错误的理解。




为什么这种事在过去不那么容易一路带到上线?


过去,需求和代码之间,总有一个人。


程序员不只是写代码的。他还有一个很少被正式承认的角色——需求的持续质疑者


产品经理说"订单可以修改",程序员在实现过程中,脑子里的追问会自然冒出来:支付中的能改吗?已发货的呢?修改哪些字段?


这些问题没人要求他问。是实现过程逼出来的。


Agent 不一样。


Agent 收到描述,直接走到执行。它不会在实现过程中停下来问"这里是不是还有没说清楚的地方"。不是因为它不能问。而是质疑不是它的默认工作模式。执行才是。


这里真正变化的,不是模型能力。而是理解和实现,不再发生在同一个地方。


过去,它们都发生在程序员脑子里。今天,它们被拆开了。


他理解需求,然后实现需求。理解过程中产生的问题,会自然影响实现。发现不对,就停下来,回来问,需求被修正,再继续。


理解和实现之间存在一个天然的反馈回路。理解错了,实现过程中会暴露。暴露了,就修正。


当理解和实现开始由不同主体完成,这个反馈回路就断开了。AI 只是第一次把这种断裂放大到了整个工程过程。


今天,你描述意图,Agent 理解意图,Agent 实现意图。理解和实现被分开了,交给两个不同的主体。中间那个"理解过程中发现不对就停下来问"的环节,没有了。


不是 AI 不如人仔细。是理解和实现被解耦之后,那个天然存在的纠错机制,不再自动运行了。


所以,同样一个理解偏差,过去和今天的后果完全不同。


过去,偏差只影响几十行代码,实现过程中就暴露了,修复成本不高。


今天,同样的偏差可能被 Agent 在几分钟内扩展成几千行代码、几十个文件、完整的测试套件。全部内部自洽。全部能够运行。全部建立在同一个误解之上。


真正危险的,不是一个错误理解产生了错误的代码。而是一个错误理解,被高质量地实现了。


还有一件事。


Agent 默认相信它收到的信息。如果文档说一条规则是这样,注释说是那样,Agent 会做出选择,然后执行。它不会停下来问"这些信息互相矛盾,我需要人来确认"。


当执行能力足够强,忠实执行本身就变成了一种风险——如果输入不可靠的话。


所以,软件工程真正在变化的事情,也许不是"代码怎么写"。


而是:


过去,我们最怕代码写错。


以后,我们更应该怕理解错。


但如果这些"理解"所依赖的上下文——文档、注释、决策记录、历史讨论——本身就已经过期、冲突或者失真了呢?


下一篇,聊这件事。




最后留一个问题。


你的团队里,有没有一种情况:代码完全没问题,但上线之后才发现,大家从一开始对需求的理解就不一样?

最新回复 (9)
  • xJogger 07-16 08:14
    1
    有时候想转人工,有时候想转 AI。现在是想转人工。
  • knktc 07-16 08:18
    2
    经常会有这种情况,现在标准化流程化的东西都用 AI 搞完了,然后压力就到了各种 Corner Cases 的处理了
  • yyysuo 07-16 08:40
    3
    这 ai 总结的文章看得实在是难受。
  • lucifer9 07-16 08:41
    4
    要不试试 grill-me ?
  • goumadantui 07-16 08:42
    5
    “81%的企业承认它们缺乏对 AI 生成代码的可见性——你甚至不知道代码库里到底有多少是 AI 写的。

    这给故障排查带来了一个很隐蔽的麻烦:AI 生成的代码通常语法完美、lint 检查全过、单元测试覆盖率还不错。它的问题不在"这段代码跑不通",而在"这段代码在特定条件下的行为不是开发者预期的"。这个 gap 叫 intent gap——模型产出的东西和开发者真正想要的东西之间的距离。”

    建议看这篇文章 https://www.fuzhoupyy.work/index.php/archives/449/
  • kenshinhu 07-16 08:45
    6
    AI 和 人类之间的价值观有偏差所导致吧?
  • HeyWeGo 07-16 08:47
    7
    相当少边界调整没有完整列出,可能 ai 思考过程也会将一些边界条件考虑进去,但是也会出现考虑不全的情况。
  • cat9life 07-16 08:49
    8
    这中问题类似“从前车马慢,一生只能 ai 一个人”。不是问题不存在,只是慢,所以显示少
  • ajaxfunction 07-16 09:33
    9
    遇到过,这类问题本质上是 你潜意识中默认 AI 和你的想法是通的,你知道的 ai 也肯定知道。 给出条件的时候省略了太多东西。
    人和人之间在同一团队,会有很多约定俗成的东西,不用说也知道,所以这个问题很少。但不是没有
* 帖子来源V2EX
返回