90% 的 AI Agent 项目会翻车,我天天授权 agent 改仓库,最难的从来不是模型不够聪明

cover

哈喽,我是飞飞。

这两天又看到那句话在转:90% 的 AI Agent 项目会失败。配着一堆吓人的图表,标题一个比一个狠。我先泼盆冷水,这个「90%」你别太当真。说实话,我顺着它挖了一圈,哪一份正经研究都没精确给出这个数,它更像是好几个数字被搅在一起反复引用出来的「业内常被引用的说法」。RAND 的研究说的是超过 80% 的 AI 项目失败、是普通 IT 项目失败率的两倍,但人家指的是泛 AI 项目,不是单说 agent;MIT 那份 NANDA 报告说的是 95% 的生成式 AI 试点没能规模化上线。几个口径不一样的数,被各路自媒体一锅烩成了「90% 的 Agent 必死」。

真正有权威机构背书、口径也清楚的那个数,是 Gartner 在去年六月底给的预测:到 2027 年底,超过 40% 的 agentic AI 项目会被取消。注意是「被取消」,不是「技术跑不动」,原因 Gartner 写得很明白,成本失控、看不清业务价值、风险管控不到位。

40% 和 90% 差了一大截,但方向一致:这玩意儿翻车率确实高。我天天授权 coding agent 在自己的真实仓库里改代码,这一年踩下来越来越确定一件事,Agent 项目栽跟头,绝大多数时候真不在「模型够不够聪明」,在你有没有给它配上一道道人能看见的闸。下面这几个坑,都是我真金白银、真删真改踩出来的。

先说最疼的那道闸,钱

agent 是个很自信的烧钱机器。

很多人对 agent 的成本认知还停在「调一次 API 几分钱」。但说白了,agent 干一件正经活,跟你一问一答聊天完全是两回事。它是循环着来的:读上下文、想一步、调个工具、看结果、再想再调。一个稍微复杂点的任务,它能自己转十几二十轮。每转一圈都在烧 token,烧的是真金白银的算力额度。

我每个月给 Anthropic 的钱不算少。所以让 agent 干一件正经活之前,我都会下意识地在心里过一遍秤,掂量这活值不值得动用 Opus 这种贵家伙,杂活就手动切个便宜模型省点额度(来源在我自己的 Claude Code 使用记录里)。这种「用之前先过秤」的绷着感,就是成本最真实的体感。

公司里推 agent 项目的成本失控更隐蔽。一个 demo 阶段跑得好好的 agent,给十个人用没事,铺到一千个人天天用,token 账单是非线性涨的,因为每个人的任务都在让它多转好几圈。Gartner 把「成本失控」列在取消原因第一位,一点不冤。

它会一本正经地骗你,还会假装工具调成功了

钱的闸守住了,下一个更要命,幻觉,外加跟它孪生的工具调用失败。

幻觉这词被说烂了。但你别说,放到 agent 身上要命的地方在于:它不只是答错一道题就完了,而是会基于一个错误的判断,接着去动手改你的东西。

去年我用 agent 把一个七千多行的 SpringBoot 老项目迁成 Kotlin,一个工作日就迁完上线了,听着很爽。但我跟你交底,那天真正耗掉我时间的,根本不是它写代码的速度,是我逐行 review 它写的东西(来源在我的迁移笔记里)。它会很自信地把一段空指针判断顺手「优化」掉,会把某个分支的逻辑悄悄改岔,还会把 git 提交历史写得乱七八糟。这些它都不会主动告诉你,它觉得自己干得漂亮极了。要是我当时图省事直接合了,那几个被抹平的空判,迟早在某个边角线上炸给我看。

工具调用失败是另一种「假装一切正常」。我真装真跑过小米的 MiMo Code,有一次用非交互模式直接 mimo run 喂任务,它挂死了整整十四分钟,零输出、也不报错,我盯着屏幕一度以为是网断了(来源在我的 MiMo 实测记录里)。后来才搞明白,它那个免费匿名通道得先手动跑一次「铸 token」,没铸之前调用就是悄无声息地卡死。agent 系统里这种「工具明明没调通、它却以为调通了往下走」的环节,多到你想不到。

不过这里也有让我改观的一面。同样是 MiMo,我让它写个带测试的小工具,第一轮五个用例挂了两个,结果它自己写的测试抓出了自己的 bug,读着报错自诊断,一次把那个写错的正则收紧了,重跑五个全过。这条「写测试、测试抓出 bug、读报错自己改、再验一遍」的自我修正闭环是真能收敛的。能不能给 agent 配上它,往往就是一个项目稳不稳的分水岭。

上下文不是无限的,它会悄悄把你交代的事忘掉

再说上下文。

现在动不动就宣传「百万 token 上下文」「无限上下文」,听着像是你可以把整个项目一股脑塞进去它全记得。我以前也这么想,后来发现没那么美。

还是 MiMo 那次,它主打「无限上下文」,我扒了下实现,所谓无限其实是工程上的取巧:在预算用到 20%、45%、70% 这几个点提早把关键信息提取出来,快到上限了再重建一遍(来源在我的 MiMo 实测记录里)。思路没毛病,但你得清楚,这等于它在不停地做「划重点」和「忘掉一部分」的动作。

落到 agent 干活上麻烦就来了。一个长链路任务跑到中段,你早期千叮咛万嘱咐的那条约束,很可能在某一次压缩里被「划」掉了。然后它就开始干你明确说过别干的事,你还纳闷它怎么突然失忆了。它没叛逆,纯粹是上下文窗口这个物理限制被「无限」两个字给盖住了。做 agent 项目的人如果把上下文当成真无限来设计,长任务一定会在某个点上崩。

没人盯着的时候,失败会悄无声息地堆积

接着是系统稳定性,我想说的是它最隐蔽的那一面。

我的博客整条发布流程都是自动化的,push 上去自动构建、自动部署。前阵子我踩了个血淋淋的坑:负责部署到镜像站的那个令牌过期了,部署连续静默失败了一整天(来源在我的 Claude Code 运维记录里)。构建明明是绿的,只有最后一步推送悄悄红了,但没人盯着这个状态,我是隔了一天自己想起来去查才发现的,镜像站就这么挂了一天没人知道。

这件事给我上的课是:自动化最贵的隐藏成本根本不在算力。它藏在另一个地方,当没有人盯着的时候,失败会悄无声息地堆积。

agent 项目把这个问题放大了。一个 agent 一天能自动跑成百上千次,里头偶尔有几次工具调失败、有几次结果跑歪,单看都是小概率,但它们会安静地累积,等你某天发现数据不对劲回头查,已经错了一大片。全自动的链路必须给「失败」本身配一个人能看得见的告警,光让它跑得欢是不够的。

最后是那个最难的问题:该不该让它自己按下去

前面那几道闸都还算技术活,最后这道,是我觉得最难、也最值得较真的,权限。

我用 Claude Code 改代码这么久,敢放手让它跑,靠的是一个底气:它再怎么莽,也是在我划定的那个仓库里动,它干的每件事都落在 git diff 里,看得见、回得去。前面说的那次七千行迁移,它一把梭把好些空判抹平了,但因为有 git 兜底,我能盯住、能一键 revert。这是代码这个域特有的安全感。

可一旦你把 agent 的手伸到「合并代码」「发邮件」「调接口扣款」这种会产生不可逆后果的动作上,性质就变了。我现在的习惯是,能让它端到端跑出一个 PR 这步乐意全放权,但「合进主分支」那一下我攥在自己手里,自己过一遍才点。产出可以全自动,定夺这一关我必须自己过手。

Gartner 把「风险管控不到位」列为项目被取消的三大原因之一,戳的就是这个。很多翻车的项目,恰恰是太早把不可逆的动作权,交给了一个还会幻觉、还会忘事的 agent。卡耐基梅隆有个评测,让最强的模型之一去干真实办公室任务,完成率也就三成左右。说真的,一个十次里干砸七次的家伙,你敢让它自己按下那个收不回的确认键吗?

翻不翻车,差的就是这几道闸

绕回开头那个数。90% 也好,Gartner 那个相对实锤的 40% 也好,背后真正的故事都不是「AI 不行」三个字能概括的。问题出在太多项目把 agent 当成一个装上就能自动出活的黑箱,没给它配成本的秤、幻觉的 review、上下文的预期、失败的告警、还有权限的那道闸。

这几道闸,没一个是模型升级能替你补上的,全得靠做项目的人自己清醒地守着。我天天授权 agent 改仓库还能睡得着觉,就是因为这几道闸我一道都没撤。

那道兜底的闸,你会划在哪一步?是合代码之前,还是发出去之前?要是你也在公司里推 agent 项目,最让你头疼的是这五个坑里的哪一个,评论区聊聊。