换个壳就差 4.5 分:模型和壳其实是同一个产品
深度思想,谈 AI 与向往 —— 字节深思圈
终端编程模型的公开评测榜上,有一个反直觉的排位:同一个 Claude Opus 4.6,配 ForgeCode 这个壳能跑到 79.8 分,配 Capy 只有 75.3 分。权重一模一样,一个字节都没改,差了 4.5 分。在这种每 0.1 分都要死磕的榜单上,这几乎是一个代差。
更夸张的例子来自 Cursor。他们的团队公开复盘过:同一个模型,没换权重,只改壳,榜单排名从三十名开外冲进了前五。
工程师 Nicolas Bustamante 围绕这件事做过一次很彻底的拆解,把几个主流编程 Agent 的内部实现逐层扒开,得出的结论是:模型不是单独存在的,壳是模型的一部分。这个判断,值得每个做 AI 产品的人认真想一遍。
模型是冲着壳训练的
先解释为什么换个壳就掉分。
模型不是只对着通用 API 做后训练的,它是冲着具体的壳做后训练的。壳里的每个细节,工具叫什么名字、输入 schema 长什么样、引用标签怎么写、技能文件放哪里、计划协议什么格式,都会被烤进训练里,变成模型的本能。
把模型拖出它熟悉的壳,性能损耗就发生了,而且是拿不回来的那种。这就是为什么每个号称"模型无关"的 Agent 都撞过同一堵墙:你没法就这么换个模型。要干净地换,得把壳一起换掉,工具面、schema 形状、记忆格式、引用契约、系统提示词结构,一连串东西都得跟着动。错配也不会直接报错,它会变成一种安静的退化:工具调用漏掉,推理强度不对,该记住的东西没被记住。
把几个主流壳拆开看,会发现它们不是同一个东西的三种写法,而是三种完全不同的协议。一个模型被训练成"发提交、读事件"的思维模式,另一个被训练成直接在对话里打出工具调用,第三个被训练成派出子进程、自己当监督者。模型学到的是协议的精确形状,换一套,本能就失灵了。
一个六个字符的标签,讲完整个故事
最能说明问题的是一个小小的引用标签,oai-mem-citation。
某个壳的设计里,模型每次用到记忆,都会在消息末尾挂上这个 XML 块,告诉壳"我引用了哪条记忆"。壳解析它,给对应记忆的使用次数加一。有引用,记忆就活下来;长期没人引用,记忆会被当成没用的旧数据清掉。靠这六个字符,模型和壳完成了一次心照不宣的合作:你用了哪条就告诉我,我负责奖励它。
换个壳,问题立刻出现。带着引用习惯的模型去了不解析这个标签的壳,会把一串原始 XML 直接吐给用户,记忆系统里也留不下任何"被用过"的信号。反过来,不挂标签的模型去了依赖标签的壳,明明在好好用记忆,系统却认为这些记忆从没被使用,几周之内就按衰减规则悄悄淘汰。同一批权重,同一段记忆,换个壳,一条路越用越好,另一条路慢慢腐烂。
技能文件的情况类似。表面上大家都是 SKILL.md,格式几乎通用。但一个技能文件真正依赖的,是它 body 里点名的那些工具:写着"第一步调 TodoWrite"的技能,在一个没有这个工具的壳里,只会默默失败,或者跑出一个残血版本。“格式通用"和"契约一致"之间,隔着一整套看不见的工具语义。
诚实的产品怎么做
面对这种耦合,做得诚实的团队有一个共同思路:不再假装壳是中立的,而是把对的方言喂给对的模型。
有个多模型支持的壳给出了参考做法:给不同家族的模型配不同的工具面,被训练用补丁格式编辑文件的模型只拿到补丁工具,被训练用字符串替换的模型只拿到替换工具;给某些模型开延迟加载工具的回路,给另一些模型一次性展示全部工具;连审查环节都用互补的模型来互相挑错。代价是它坦率承认:同一个产品,装 Claude 和装 GPT,是两个不同的产品,不存在中间的公约数。
Cursor 研究团队的建议同样直接:除非有特殊理由,一个会话里只用一个模型。中途切换的代价是三件事同时发生,对话历史变成新模型不熟悉的分布,已缓存的上下文全部失效,工具表换成了另一套形状。真需要另一个模型,最干净的办法是派一个子代理去用,而不是切换主对话。子代理开新的上下文,没有旧对话的偏置,从第一轮就站在自己的工具面上。
对做 AI 产品的人意味着什么
把这件事翻译成产品判断,有三层。
第一,别再拿"模型无关"当卖点了。多模型策略是真实的竞争维度,但它不是免费选项。在模型之间换来换去,付的是隐性迁移税:性能损失、工具重构、记忆丢失。“换模型只要改个 API”,是只看到账单、没看到成本的说法。
第二,把壳当产品战略,而不是基础设施。壳里的每个组件,本质上都编码了一个"模型自己搞不定某件事"的假设:要提醒它先验证、要帮它压缩上下文、要给它固定的记忆仪式。这些假设会随着模型成熟而过期。有个观察很生动:为上一代模型造的脚手架,在新模型身上变成了死重,得整个砍掉。想待在能力前沿,新模型发布的时候,你很可能要删掉大部分现有代码。这是这个行业的工作方式,不是事故。
当然也有反方。协议标准化在推进,工具调用和技能格式正在收敛,长期看耦合会减轻;榜单上的分数差距,也可能有一部分是各家针对基准刷出来的,不能全当真实能力的差距。这些反驳都成立。但方向性的事实没变:模型和承载它的产品形态,正在长成彼此的一部分。你今天定的每一个工具名、每一条驯化模型的规则,都会变成产品不可复制性的一部分,也会变成将来改起来最贵的那部分。趁现在就把它们当战略设计。
要点:同一权重换壳差 4.5 分,Cursor 只改壳排名从三十名外进前五;模型是冲着壳做后训练的,错配表现为安静退化;记忆引用标签决定记忆存活,格式通用不等于契约一致;诚实做法是给对的模型喂对的方言;壳编码的"模型弱点假设"会过期,新模型发布常要删掉大部分旧代码。