Agent 做到一半,用户改了主意——这篇论文想治这个病
如果你用 Agent 干过持续半小时以上的任务,大概率遇到过这个场景:跟它说到第三步了换个思路,它礼貌接受,然后继续按旧逻辑调旧 API,反复在一个无关函数上打转,直到 token 烧完或者直接关掉重开。
目前工具调用类 Agent 有一个结构性缺陷——意图漂移。用户的真实意图在执行中途发生变化时,模型没有机制区分「当前有效的指令」和「已经被覆盖的历史约束」,旧上下文像噪音一样稀释注意力,最终引发灾难性偏离和无限 API 循环。
8 月 3 号上 arXiv 的一篇新论文,把这个事当成了核心命题来攻。
论文标题很长,叫 IACM-RL,全称是 Intent-Aware Context Management and Reinforcement Learning for Complex Tool Invocation under Dynamic Intent Fluctuations。作者阵容不小,25 个人,复旦背景居多,通讯里有 Tao Gui、Qi Zhang、Xipeng Qiu、Xuanjing Huang 这些熟悉的名字。
痛点到什么程度?
论文里建了一个新评测集叫 DynamicIntent,覆盖了 13 种意图波动的细粒度场景。不是简单的「用户改口」,而是包括:中途追加约束、撤回之前的要求、在子任务层面切换优先级、甚至同时维护两条矛盾指令最后再裁决——这些在真实业务里太常见了。
拿数据分析 Agent 来说,用户先说要按地区聚合,看了两个结果又说按品类看,然后说不对还是按地区但要加一个过滤条件——每一轮都在覆盖上一轮的意图,但模型记住的往往是「所有历史」。
现有方案怎么做?隐式历史扫描、文本压缩、或者直接拼完整对话历史。论文管这叫 implicit history scanning,让模型自己在长上下文里猜哪些词条还管用。猜对的概率,随任务跨度和意图变化次数呈指数下降。
IACM-RL 的核心设计是两段式。
第一段,BeliefState-based Self-Generated Context Manager。它让 Agent 不再被动吞全部历史,而是主动维护一个「信念状态」——当前意图是什么、哪些参数已经被覆盖、哪些工具调用结果是过时的。这层管理器用结构化的 stale flag 标记旧信息,做显式的隔断,不让上一个步骤的约束流窜到当前决策里。
第二段,用强化学习把这个状态追踪能力内化成模型的自主行为。论文设计了一个分层意图驱动的奖励函数,外加三个辅助损失:行动矫正(action calibration)、上下文管理提取(CM extraction)、状态蒸馏(state distillation)。这套机制把意图追踪能力内化到模型行为中,让模型在训练中自己学会什么时候该丢弃旧信息、什么时候该保持。
实验覆盖了 DynamicIntent 自建集、BFCL-V3 和 τ²-Bench。结果是 IACM-RL 在减少无限循环和过期上下文错误上显著优于基线,同时在 OOD 泛化上也有提升。
论文目前只有 arXiv 版本,代码和数据集还没有看到公开放出来。实验对比的基线主要是基于纯 prompt 方法和一些简单 RL 微调方案,没有看到跟近期比较强的 Agent 框架(比如用显式规划器或验证器的方案)做直接对比。另外,13 种意图波动场景覆盖面确实可以了,但真实业务中有些变化是跨会话甚至跨工具的,论文目前的评测还集中在单个会话内的意图变化。
不过这篇工作的方向我很认可。现在 Agent 框架越来越复杂,大家都在堆规划器、记忆模块和反射机制,但一个基础问题一直没被好好回答:当用户中途真改了主意,模型怎么知道自己该忘掉什么?
大部分实践者的解法是靠更长的 context window 硬扛,或者靠人工拆任务节点。IACM-RL 给出了一个更结构化的路线——让 Agent 内部长出一个意图版本的「垃圾回收机制」,主动标记并隔离失效上下文。
在搭生产级 Agent 时碰到过意图漂移引发的连环 API 报错,这篇值得跟一下。看后续会不会开源 DynamicIntent 的数据集和 BeliefState Manager 的实现,这些东西对实际调优的帮助,可能比又一个大一统框架来得更直接。