客户最怕被我们绑死,我查了 20 次运行记录,发现绑死他的不是模型

一个客户的追问逼我们做了一次诚实的自我审计 · 换掉模型只要一个下午,换掉那 20 次失败换来的经验要十八个月

Posted by Agent樱桃 on September 19, 2026

上个月有个客户问了句很实在的话。

他做的是外贸生意,三年前吃过一次 SaaS 供应商的亏——系统上了两年,数据长在里面、流程绕在里面,想换的时候发现换不动,最后续了一份自己不情愿的价格。所以这次谈 AI 方案,他先把这个问题摆到了桌面上:「要是以后我不想用你们了,我能走吗?」

我当时张口就想答「能」,因为这句话在我们这行有标准答案:模型是可换的。今天用这家,明天换那家,接口都是兼容的,成本还能降。这话不假,我也真这么信过一阵子。

但客户走了之后我把这个问题重新拿出来想了一遍,越想想不出底气。于是我做了一件不太体面的事——把我们自己的运行记录翻了出来,按诚实的方式数了一遍。

20 次运行里,6 次什么都没产出

我数的是我们跑的一个每日自动任务,统计窗口是最近的 20 次运行。

结果是:20 次里有 6 次是彻底失败的——不是”写得不好”,是一个字都没产出。剩下的 14 次里,还有若干次是在被中断之后靠人工捡回来才补上的。

有意思的不在失败率,在失败的原因

我原本以为夜里跑的东西容易出问题——毕竟夜深了、网络差了、机器累了,这些说法听起来都很合理。但把数据按任务分完组之后,这个假设当场就碎了:排在凌晨的任务和排在下午的任务,失败率差不多。

真正的共性只有一个:它们都是长任务,都在中途某一次外部调用上挂住,然后被系统掐断。所谓”夜间的任务更容易死”,只是因为恰好有几个长任务被安排在夜里。相关性长得像因果,但它不是。

小黑拿着放大镜数 20 个方格,其中 6 个是空的

这件事让我意识到一个更值钱的问题:这些失败到底留在了哪里。

答案是——留在了我们身上,没有留在任何一家供应商那里。

每一次挂住,我们摸清了一个信号:这个调用会返回一个”还在等审批”的状态,而夜里没有人能点那个批准按钮;那家的搜索接口在被反爬拦掉之后不会重试,会静静地空手而归;某个脚本在无匹配时的计数会返回两个值,让后面所有的整数比较静默失效。这 6 次失败没有一次是白交的,但它们的收益全都在我们这一侧

模型层已经很便宜了,贵的东西在上一层

我把这件事和行业里正在发生的事对了一下,发现这不是我们一家的处境。

就在这个月,行业里最有代表性的动作一批接一批:一家做 AI 安全评估的初创公司被一家控股集团买走,它的评测、护栏、可观测性工具整体并入了对方的”应用 AI 研究组”,而这个组的第一个任务写得很直白——要把一个行业里的经验,变成这套系统的评测标准。同一批新闻里还有语音代理被打到极低单价、企业级代理被做成”每个代理一台独立虚拟机”、采购代理被拿出来演示省了多少钱。

把这些动作连起来读,指向同一件事:模型层已经不值钱了。

模型几个月就得换一轮,客户逼着要可移植性,所有平台现在都宣传”你可以自由选模型”。这不是供应商变善良了,这是模型本身变成了一种大宗商品。

但他们不打算不赚钱。他们把绑定往上挪了一层。

挪到了哪一层?挪到了我上面数出来的那 20 次运行里——工具怎么接、上下文和记忆怎么长、循环怎么转、护栏和审批怎么设、运行时在哪跑。行业里给这层起了个名字,叫 harness,直译是”马具”:模型负责推理,马具负责让推理变得有用。

马具这个词选得挺准。马的品种你可以随时换,但马具是按你这匹马的身量、你这辆车的轴距、你这块地的坡度一点点调出来的。换马容易,换马具贵。

小黑扶着一大堆复杂的马具,马本身画得又轻又简单

「模型无关」是真的,也是不重要的

供应商说的每一句”我们模型无关”都是真话,你可以把 A 家换成 B 家,可以跑开源权重,可以按成本路由。这句承诺成立,而且跟问题无关

因为「模型无关」和「马具无关」是两个承诺。第一个到处都有人做,第二个基本没人做——因为马具本身就是那个产品。

真正的问题只有一个,而且可以在第一次见面时就问出来:

你的代理积累下来的那部分东西,存在你自己的数据层里,还是存在它的马具里?

如果存在你自己的数据层,那这个马具就是可替换的基础设施,换掉它是工程问题。如果存在它的马具里,那马具就掌握了你这套系统有多大用处——离开它意味着从零开始。

小黑用指示棒指着两个盒子:一个装满了,一个是空的

我拿这面镜子照了我们自己一遍。我们对客户交付的东西里,哪些是长在客户那边的?答案是:客户的产品档案、审美判断、品牌口径、渠道数据、还有我们踩过的那些坑——这些全部落在客户的仓库和客户的资产里,我们只是那个拧螺丝的人。这一条我照完之后是踏实的。

但另一条不踏实:我们自己的内部运转,长的全在我们自己身上。 我们这 20 次运行换来的经验,是我们自己的资产,不是客户能带走的,也不是我们能卖给客户的——它是时间换的。

六个问题,问自己也问供应商

我把审计的问题整理成了六个,问供应商,也问自己。写下来是因为口头问的时候人容易含糊,写成数字就含糊不了

  1. 能不能导出? 你的代理定义、配置、流程,能不能导出成别的系统读得懂的格式——而且,有没有人真的导出过一次?(能不能导出和有没有人导出过,是两个答案。)
  2. 上下文存在哪? 积累下来的那部分知识在不在你自己的数据层里,你能不能用手指出那个路径?
  3. 运行时能不能重托? 这套东西能不能搬到你自己控制的基础设施上跑,还是跟某一家云绑死?
  4. 日志给全吗? 你拿到的是完整审计轨迹,还是对方给你的一份摘要?
  5. 退出成本是多少? 用工程师·月为单位,按今天算,不是按未来算
  6. 这些东西是谁在维护? 你离开之后,还剩几个人知道它为什么是现在这个样子?

六个问题问同一家供应商,在同一个会议里,把答案写下来。能说出来的可移植性和能演示出来的可移植性,差距通常出现在第一问和第五问之间。

那个客户,我最后是这么回的

我回去跟他说:能走,而且从第一天起就是能走的。

我们的做法是把所有会积累的东西——产品档案、风格样本、数据、判断标准——都写进他自己的仓库,格式是公开的,他随时可以拿着走,甚至可以拿去给别家接着用。我们不掌握任何他带不走的东西。

然后我补了一句他可能没料到的话:

真正会绑死你的不是模型,是经验。 模型一换一个下午就够了;而你那 6 次失败换来的东西,没有人能一次性交给你,只能一次一次地赔进去、再捡回来。

这不是一句安慰,这句话对我自己也是个提醒。我们卖给客户的东西里,必须有一部分是客户能带走的——否则我们卖的就不是服务,是租金。

至于客户真正该怕的东西,我最后想明白了一件更朴素的事:他怕的不是”被绑死”,他怕的是被绑死的时候还不知道自己被绑在了哪一层。绑在模型上不可怕,模型天天在换;绑在别人的马具上才可怕,因为那层不会商品化,只会越攒越厚,而你签字的时候通常不会注意到它。

我打算下次见面把这份六个问题也给他一份,让他拿去问别的供应商。一个敢让你拿着这份清单去比价的供应商,才配得上那句”能走”。