你跟 AI 谈一个任务,中途说「要不把数量改成 22?」随即又补一句「算了,还是按原来的」。按理说模型该当无事发生——被拒绝的改动等于没说。但 10 月 5 日挂上 arXiv 的一篇论文实测:光是提及过一个被拒的改动,就足以把任务执行带偏。

一个专门测「改主意」的基准

港科大与腾讯的团队构建了 Intent-Eval:从 LiC 基准改造出 414 个源任务,覆盖工具调用(BFCL)、代码、数据库(Spider)、数学(GSM8K)四个领域。每个任务渲染成四种多轮条件——Original 正常分轮、Neutral 追加澄清、Retained 提出改动但被拒、Revised 同一改动被接受——配四个单轮对照组,每模型 3,312 个实例,把任务难度和多轮干扰拆开。LiC 先前已证明信息全给、只是拆开说性能就会掉;这篇往下追一层:改动被拒绝之后呢?

被测十款模型、六家厂商:Qwen3.6-27B、Llama-3.1-8B、GPT-5.6-Luna、DeepSeek-V4-Flash-0731、Claude-Sonnet-5、Gemini-3.7-Flash、Gemma-4-26B-A4B 等。

多轮先掉 36 个点,「拒绝过」再掉 8 个

三个数字值得记住。第一,同样的信息拆成多轮说,八个主表模型平均准确率比单轮直叙低 36.30 个百分点——总表从单轮 91.73% 掉到多轮 55.43%。第二,插入两轮不改变任何需求的澄清,还要再掉 4.43 个点:纯粹「话说多了」就有成本。第三也最反直觉:Retained(改动被拒)平均比 Original 再低 8.06 个点,Revised(改动被接受)低 5.55 个点——被拒绝的改动,掉分比真改动还多。

而且伤害会累积:同一需求反复「提出-拒绝」四轮后,Retained 比 Original 低 20.77 个点;决策定下后再聊四轮澄清,Retained/Revised 还要分别再掉 2.72、3.50 个点。

病根:分不清「说过」和「生效」

错误分析给它起了名:mentioned-as-in-effect confusion——模型把对话里出现过的内容当成仍然生效的需求。数学领域的解释尤其扎心:推理是链式的,改动数值前提要重算多个中间结果,旧计算被原样复用,被拒数值就一路污染到底。「当我没说」没用:对模型,提过就在上下文里,上下文即需求。

解法:让单轮的自己,教多轮的自己

团队提出 Intent-OPSD:冻结一个 Teacher,把「按用户最终决定合成的完整单轮任务」喂给它;Student 从同一模型初始化,在完整多轮对话上做 on-policy 蒸馏。四个模型、四个领域平均比基座拉回 10.81 个百分点(总均值 40.31% → 51.12%),其中工具调用涨 21.46 个点,代码类收益最小;推理时既不需要 Teacher 也不需要单轮提示。论文随附开源仓库 junle-chen/intent。

所以呢

这篇论文(arXiv:2610.06496)戳中的是 Agent 产品的日常:真实用户从不一次说完需求,而是不断提、撤、改。单轮榜单再漂亮,也代表不了这种场景。工程提示很直接——要么在上下文管理里显式清除被拒绝的内容,要么像这篇一样,把「哪些需求还活着」变成训练信号。下次你撤回需求模型却照做不误,先别骂它笨:它只是记性太好,分不清哪些话该忘。