想象你雇了一个新助理,让他帮你网购。第一天你教他:"买东西之前先比价,别冲动下单。"第二天他来上班,你发现他压根不记得这茬,又一次买了贵的那款。
这不是段子。这正是当下GUI智能体面临的真实困境:它们能操作网页、点按钮、填表单,但记性差得离谱。而更麻烦的是,即便你想办法让它"记住"了什么,它也未必知道什么时候该拿出来用,更别提分辨这段记忆到底靠不靠谱了。
北京大学等机构的研究者们盯上了这个问题,写了一篇论文叫《FocusMem》。这篇论文的核心发现挺扎心:不是记忆存得不够多,而是记忆这件事,从一开始就被做错了方向。
记忆这件事,到底难在哪
GUI智能体*(能够自主操作图形用户界面完成任务的AI系统,比如帮你在网页上购物、填表、搜索信息的AI助手)*需要两种记忆。
一种叫情景记忆*(Episodic Memory,存储过去完成任务时积累的可复用经验,类似人类"上次这么做成功了"的记忆)*,负责把之前做成功的任务经验存下来,下次遇到类似情况能直接抄作业。另一种叫工作记忆*(Working Memory,存储当前任务执行过程中已经产生但还没被直接看到的进度和约束信息)*,负责记住这次任务里"我已经做了什么、还差什么、有什么限制条件"。
这两种记忆存在的必要性很直白:如果每次都把完整的历史截图和操作记录原封不动地塞进模型的输入里,上下文会迅速爆炸。研究者们提到,反复插入截图和动作轨迹会让策略的上下文迅速膨胀。用纯文字记事虽然紧凑,但很多视觉细节和操作细节难以用文字精确描述,一旦压缩成文字,细节就丢了。
于是研究者们把目光投向了潜在记忆*(Latent Memory,一种把多模态的历史轨迹压缩成少量连续向量token的记忆形式,不是人类可读的文字,而是模型能直接理解的数字化表示)*——把整段轨迹压缩成几个连续的向量,直接喂给模型,既紧凑又能保留比文字更丰富的信息。
听起来很美好对不对?但论文指出,现有的做法存在三个致命伤。
第一个问题是压缩会丢东西。你把一整段购物轨迹压缩成几个token,某个关键的价格信息、某个决定性的截图细节,很可能在压缩过程中被挤没了。
第二个问题更微妙:现有方法通常是把一段轨迹映射成一个固定的记忆块,不管你现在处于任务的哪个阶段,拿出来的都是同一份摘要。这就好比你问一本书"讲了什么",不管你是想找开头的伏笔还是结尾的反转,它给你的永远是同一段书评——可你现在需要的信息,可能根本不在这段书评里。
第三个问题是,检索回来的经验不一定靠谱。你搜出来一段"看起来相关"的历史轨迹,但它实际上是另一个任务里的操作,硬塞进来反而会误导当前的决策。
论文用一张购物场景的图非常直白地展示了这三种失败模式:任务是"把A、B两款商品中更便宜的加入购物车"。第一种失败是价格信息在压缩时丢了,机器人最后脑子里只剩"A:??,B:",压根不知道A多少钱。第二种失败是同一个记忆块被要求同时服务于"搜索A""搜索B""加购"这几个完全不同的决策阶段,结果哪个都服务不好。第三种失败是检索回来两条轨迹,一条是有效经验,另一条看着差不多实则不适用当前场景,却被一并塞进了最终的记忆里。
这三个问题合起来,构成了整篇论文要解决的核心矛盾:内容会丢、读取不分场合、来源不可信。研究者把这三件事叫做内容、读出、信任三个独立的职责,而现有方法通常把它们混为一谈,用一次性映射草草了事。
三层拆解:FocusMem怎么把记忆这件事重新设计一遍
FocusMem的思路,简单说就是把"存什么""怎么读""该不该信"这三件事彻底拆开,分别用专门的机制去解决。整个系统建立在一个前提之上:GUI智能体的底层策略模型是冻结的*(Frozen Policy,指在训练过程中参数保持不变、不被更新的核心决策模型,这里特指Qwen3-VL-8B)*,也就是说,不去动那个真正做决策的大脑,只是给它配一套更聪明的记忆系统。
### 第一层:角色感知的内容基座——先保证东西没丢
FocusMem的第一步,是给情景记忆和工作记忆分别设计专属的提取查询*(Base Query,一组可学习的向量,用来指导压缩器从原始轨迹中提取哪些信息,不同角色使用不同的查询意味着提取侧重点不同)*。
这么做的道理是,情景记忆和工作记忆需要保留的东西根本不一样。情景记忆要留住的是"这段经验里有什么可以复用的决策逻辑、约束条件",工作记忆要留住的是"当前进展到哪一步了、还剩什么没做"。如果两者共用一套提取逻辑,那就相当于用同一把筛子去筛两种完全不同的东西,结果谁都筛不干净。
为了检验筛选后的东西是不是真的保住了信息,论文设计了一套双重监督机制。一路叫语义监督*(Semantic Supervision,让压缩后的记忆块尽量还原原始轨迹能被冻结策略描述出来的通用内容,通过对比原始信息和压缩信息的模型输出分布来训练)*,另一路叫功能监督*(Functional Supervision,针对情景记忆和工作记忆各自的角色定制不同的问答式监督目标,比如情景记忆要能回答"这段经验的关键决策是什么",工作记忆要能回答"当前状态和剩余约束是什么")*。
这套设计能不能生效,论文专门做了一组探针实验来验证。他们把训练好的压缩记忆块单独拿出来,不给模型看原始截图和当前状态,只给它记忆块本身,然后问三类问题:语义类(笼统的轨迹内容)、对齐类(角色相关的关键决策/最新状态)、迁移类(压缩训练时完全没教过的新问题,比如"接下来还剩什么子目标")。
结果很说明问题。只用动作监督训练出来的记忆块,三项得分都偏低,情景记忆的语义分只有54.2,对齐分50.8,迁移分47.1。加上语义监督后,语义分跳到68.9,但对齐分提升有限。加上功能监督后,情况反过来,对齐分冲到69.4,迁移分到64.8,但语义分提升不如前者明显。而当两种监督同时使用时,三项分数全面登顶:语义74.6,对齐74.1,迁移70.3。
这个结果说明了一件挺有意思的事:语义监督和功能监督各自守住了信息的不同侧面,谁也替代不了谁。
这就好比你请人写读书笔记。如果只让他复述"这本书大概讲了什么",他可能记不住关键情节的因果关系;如果只让他回答"这本书教会了我什么道理",他可能连书里发生了什么都说不清楚。让他两件事都做,笔记才既完整又有用。如果这篇论文只用了单一监督,探针实验的分数会明显偏科,某一类问题回答得好,另一类却答非所问——这正是"只做动作监督"这条基线在实验里暴露出来的问题。
### 第二层:状态条件化的读出——同一段记忆,不同时候看不同的地方
保住了内容,接下来的问题是:这段被压缩的记忆,该在什么时候拿出什么部分给模型看?
论文提出的方案叫状态条件化读出*(State-Conditioned Readout,让当前的决策状态参与生成一个残差查询,用来调整从记忆中提取信息的角度,使同一段编码后的证据在不同决策时刻能产生不同的输出)*。
具体做法是,给固定的角色查询加上一个由当前状态生成的残差偏移量。这个偏移量的生成器一开始被初始化为零输出,也就是说训练刚开始时,动态读出和固定读出是完全一样的,随着训练推进,模型才逐渐学会根据当前所处的决策阶段去调整读取的角度。
这个设计解决的核心矛盾是:一段完整的购物轨迹可能横跨搜索、筛选、查看细节、确认下单好几个阶段,而工作记忆里的一段历史,也可能同时包含"已经完成的部分"和"还悬而未决的约束"。用一个固定不变的摘要去服务所有这些不同阶段的决策,注定顾此失彼。
论文设计了一组叫做"以理想证据为中心的证据扩展"*(Oracle-Centered Evidence Expansion,通过人工标注一小段最能支撑某个决策的关键证据片段作为核心,再逐步往两边扩展加入更多上下文,观察固定读出和动态读出在信息量增加时表现如何变化的诊断实验)*的实验来验证这一点。研究者先找到100个模型在无记忆情况下失败的WebVoyager决策,让标注员从支持性轨迹里圈出最小的、足以支撑正确决策的证据片段,称为"核心证据",然后逐步往两边各加2步、加4步,直到加成整段完整轨迹。
结果非常清楚地展现了固定读出和动态读出的差异。当只给"核心证据"的时候,两者表现几乎一样,在token预算为8的情况下都在40分上下。但随着周围的干扰上下文越加越多,固定读出的表现急转直下:从核心证据到完整轨迹,固定读出在三种token预算下分别下降了22分、25分、25分。而动态读出的下降幅度只有12分、9分、6分。
换句话说,固定读出就像一份提前写死的会议纪要,不管会议进行到哪个阶段,纪要拿出来的永远是同一份摘要。如果会议只有一个议题,这份纪要够用;可一旦会议内容变多变杂,你还是拿着那份写死的摘要去应对每一个不同的提问环节,肯定会越来越不对题。而动态读出相当于给了记录员一个能力:根据现在正在讨论的议题,现场重新组织一遍笔记的重点。如果没有这个能力,面对信息量增大的场景,固定摘要的失效速度会比你想象得更快,论文的数字已经证明了这一点。
值得一提的是,论文还专门做了一组干预实验来验证动态读出是不是真的在利用检索到的内容,而不是耍花招。他们把原始检索到的证据替换成了完全无关的证据、打乱后的证据、或者故意破坏对应关系的证据。结果显示,原始检索条件下的动作准确率是38%,一旦把证据整个抽走换成"仅靠状态",准确率暴跌到3%;打乱同领域的检索结果虽然还保留了些许程序性的帮助,准确率回升到16%;而故意破坏对应关系的组合准确率只有7%。这说明动态读出的性能提升,确实建立在真实利用检索内容的基础上,不是自说自话。
### 第三层:证据信任门——不是所有记忆都值得相信
有了内容,也有了灵活的读取方式,最后一步是决定:这段记忆到底该不该让它影响当前的决策?
论文引入了一个轻量级的信任门*(Trust Gate,一个独立的评分模块,根据当前决策状态和某段记忆块的内容打分,超过阈值的记忆块才会被允许进入模型的输入,低于阈值的会被直接丢弃)*。这个门在推理时的判断依据很简单:把当前状态和某段记忆的池化表示放在一起打分,分数超过一个验证集上选出来的阈值(论文里是0.3),这段记忆才被允许进入模型输入,否则直接扔掉。
训练这个门的方式挺巧妙。研究者故意往训练数据里注入一些高置信度的不相关情景记忆——也就是明摆着来自其他任务、和当前情境完全不搭边的记忆片段,然后专门训练信任门去把这些明显不搭的记忆识别出来并压低它们通过的概率。而对于正常检索到的记忆,信任门没有显式的正例标签,它是否有用完全由最终的动作预测效果反过来塑造。
为了验证这个门到底顶不顶用,论文做了一组"无关轨迹污染"*(Irrelevant-Trajectory Contamination,在检索到的候选记忆中,按比例替换成明显不相关的干扰轨迹,观察不同记忆机制在污染程度增加时的鲁棒性表现)*实验。他们在WebVoyager和Online-Mind2Web各自独立的100个任务子集上,把检索到的前三名情景轨迹里的0个、1个、2个、3个逐步替换成人工核实过的、明显不相关的干扰轨迹。
结果很扎实:随着污染比例从0%涨到100%,没有信任门的版本任务成功率一路下滑,而完整的FocusMem在最大污染程度下依然比无门版本高出9到11个百分点。更直观的证据是记忆块的放行比例,在完全没有污染时放行率是86%,而在污染比例达到100%时,放行率骤降到35%。这说明这个门确实在随着污染程度增加,越来越坚决地把可疑记忆挡在外面。
这个机制其实很像你家门口的智能门禁。如果任何一张脸靠近摄像头都会被自动开门,那门禁形同虚设,只要有人蹭在你后面就能溜进来。而一个训练有素的门禁系统,会在识别到陌生面孔时果断拒绝放行,即便这个陌生人手里拿着看起来很像你家钥匙的东西。如果没有这层信任门,当检索系统偶尔"手滑"带回一段不相关的记忆,模型是没有任何机制去质疑它的,只能全盘接受,这正是无门版本在污染实验里表现急剧下滑的原因。
三个部件叠起来到底涨了多少分
光讲机制不够有说服力,论文在五个GUI智能体基准上做了系统性评测,包括MMInA-Wikipedia、MMInA-Shopping、DeepShop、WebVoyager和Online-Mind2Web,任务数量分别是308、200、150、598、266。
在这五个基准上,FocusMem的表现全面超越了一个关键的对照组:动作单独监督的固定双源潜在记忆基线*(Action-only Fixed,一个完全匹配的对照方法,除了不使用角色感知内容基座、状态条件化读出和信任门这三项创新,其余训练数据、检索证据、token预算等所有配置都与FocusMem完全一致)*。这个基线除了没有本文提出的三项创新,其他所有配置(训练数据、检索候选、预算、评测方式)都跟FocusMem完全一致,是最干净的对照实验。
结果显示,FocusMem在五个基准上分别比这个基线高出10.8、13.5、18.0、17.0、13.9个百分点。其中DeepShop和WebVoyager上的提升最大,这与购物比价、多步骤网页导航这类任务本身就需要在不同决策阶段调取不同信息的特点高度吻合。
| 方法 | 记忆类型 | MMInA-Wiki | MMInA-Shop | DeepShop | WebVoyager | Online-Mind2Web | 总体 |
| 无记忆 | 无 | 42.2 | 41.0 | 27.3 | 19.6 | 12.4 | 28.5 |
| 文本记忆 | ReasoningBank | 47.4 | 44.5 | 30.0 | 22.6 | 13.9 | 31.7 |
| 完整轨迹检索 | 原始多模态 | 45.1 | 45.5 | 36.7 | 24.2 | 14.3 | 33.2 |
| CoMEM风格 | 情景潜在记忆 | 49.0 | 47.5 | 34.7 | 27.4 | 18.0 | 35.3 |
| HyMEM风格 | 混合记忆 | 52.9 | 47.0 | 38.0 | 30.3 | 20.7 | 37.8 |
| Mem-W风格 | 双源固定潜在记忆 | 60.7 | 54.5 | 40.7 | 33.1 | 23.3 | 42.5 |
| FocusMem-Base(动作单独监督固定记忆)| 双源固定潜在记忆 | 54.5 | 45.5 | 30.7 | 22.6 | 15.0 | 33.7 |
| **FocusMem** | 因子化潜在记忆 | **65.3** | **59.0** | **48.7** | **39.6** | **28.9** | **48.3** |
在与之前所有已有方法的对比中,FocusMem也全面领先。和表现最强的Mem-W风格方法相比,FocusMem在各基准上的提升幅度在4.5到8.0个百分点之间。
论文还做了一组累积消融实验,在MMInA-Shopping上一步步叠加各个组件:从无记忆出发,先加固定双源记忆,再加角色感知内容基座,再加状态条件化读出(此时信任门先关闭),最后打开信任门得到完整的FocusMem。
| 设置 | 任务成功率 | 平均执行步数 | 触顶率 |
| 无记忆 | 41.0 | 9.4 | 31.0 |
| +固定记忆 | 45.5 | 9.0 | 28.5 |
| +内容基座 | 50.5 | 9.0 | 29.0 |
| +动态读出 | 54.5 | 8.5 | 25.5 |
| +信任门 | **59.0** | **8.4** | **24.0** |
每加一个组件,成功率都在稳步上升,没有哪个组件是可有可无的花架子。从无记忆到完整版本一共提升了18个百分点,同时平均执行步数从9.4降到8.4,触及步数上限(意味着任务超时未完成)的比例从31%降到24%。虽然每步耗时因为额外的计算开销增加了1.7倍,但因为整体步数减少了,单个任务的总耗时只增加了1.51倍,这笔账算下来是划算的。
写在后面
读完这篇论文,让我印象最深的其实不是最终的分数提升,而是那组"以理想证据为中心的证据扩展"实验暴露出的现象:当证据本身已经足够精炼时,固定读出和动态读出几乎没有差别。差距是随着噪声和上下文的增多才逐渐拉开的。
这提示了一个容易被忽略的评测陷阱:很多方法在干净的、证据集中的测试场景下表现相近,一旦放到真实世界里那种信息噪杂、干扰重重的环境中,差距才会显现出来。如果一篇论文只在理想化的小样本场景下验证方法,很可能会得出"两种方案差不多"的错误结论。
另一个值得琢磨的地方是信任门的训练方式。它没有对正常检索到的记忆做任何显式的正确性标注,只靠着"故意注入明显错误的样本"这一种反向信号,再加上最终任务成功与否的反馈,就学会了区分可信和不可信的证据。这种"只教它什么是错的,让它自己摸索什么是对的"的思路,某种程度上跟教小孩认字很像:你不需要穷举所有正确的字,只要让他见过足够多明显写错的例子,他反而更容易建立起判断标准。
这篇论文没有解决的问题也很明显。它的所有实验都基于网页环境和一个特定的冻结策略模型,移动端和桌面端应用是完全不同的交互逻辑,这套设计能不能直接搬过去,论文自己也承认还是未知数。信任门目前只针对"明显不相关"这种极端情况做了验证,那种似是而非、看起来相关实则过时的记忆,是不是也能被同样有效地识别出来,值得继续追问。
Q&A
Q1:FocusMem是什么?
A:FocusMem是一套面向GUI智能体的潜在记忆框架,它把记忆系统拆分成内容保留、条件化读出、证据信任三个独立部分分别优化,在冻结底层策略模型的前提下,让智能体既能记住有用经验,又能按当前决策阶段调取正确信息,还能过滤掉不靠谱的记忆干扰。
Q2:FocusMem相比之前的记忆方法提升有多大?
A:在五个GUI智能体基准测试中,FocusMem比完全匹配的固定记忆基线平均提升超过10个百分点,其中DeepShop任务提升达18个百分点;相比此前最强的潜在记忆方法Mem-W,提升幅度在4.5到8个百分点之间。
Q3:信任门具体是怎么过滤掉不靠谱记忆的?
A:信任门是一个独立打分模块,训练时故意混入明显不相关的干扰记忆,教它识别并压低这些记忆的通过概率。推理阶段,只有打分超过阈值的记忆块才会进入模型输入。实验显示,当检索证据被大量污染时,带信任门的模型任务成功率比无门版本高出9到11个百分点,且记忆放行率会随污染加重从86%降到35%。