手机智能助理为何第一步后就不灵:NTU与阿里研究揭示检索失效
你有没有遇到过这种情况:跟语音助理说"订我平时喝的咖啡",它第一次听懂了,知道你要打开星巴克,可是接下来选杯型、选糖度、选地址,它好像又变回了一个什么都不知道的新手。这不是你的助理傻,这是几乎所有个性化手机智能体共同的毛病。NTU和阿里巴巴的一个研究团队把这个毛病摆上了桌面,写了一篇论文,名字就很直接:相关...
跟语音助理说“订我平时喝的咖啡”,第一次它听懂了,知道该打开星巴克。可到了选杯型、选糖度、选地址这几步,它又像什么都不知道的新手。
这不是某个助理笨,几乎所有个性化手机智能体都栽在同一个坑里。NTU和阿里巴巴的研究团队把这个问题写成论文,标题很直白:相关不等于能用。
一、问题到底卡在哪儿
先看这类智能体怎么干活。手机上跑着一个GUI智能体,它要操作各种App,替你把任务完成。
所谓GUI智能体,英文全称Graphical User Interface Agent,即图形界面智能体,指能像人一样在手机屏幕上点、滑来完成任务的AI程序。
这类智能体有个核心难题:很多指令本身不完整。你说“查一下最新消息”,没说用哪个App、看什么内容。这种模糊只能靠你过去的使用记录来补。论文把补全分成两种场景:一种叫个性化执行,指令已经发出,智能体按你的习惯把事办成;另一种叫主动建议,你还没开口,智能体自己判断“这个点该不该提醒你”,比如你每天8点在家点一杯咖啡,它是不是该主动问一句。
业界现在的主流做法是检索。
检索就是从用户历史记录里找出和当前任务最相关的那几条,原样塞进AI的提示词,让AI参考着做决定。
听起来很合理:相关的历史给AI看一眼,它应该就知道怎么办了。研究团队做了实验,发现这个假设在实际中崩得很惨。
他们把任务执行分成两截:一截是开头那步,也就是刚接到任务、要决定点开哪个App;另一截是点开之后,屏幕一屏屏往下走、得一路点下去的操作。结果发现,历史记录在开头那步特别管用,成功率从28.3%升到62.3%,差不多翻了一倍。可再往下走,剩下90%的步骤里,用哪种检索方法都跟完全不给历史记录差不多,差距不到5%,统计上看不出区别。
这说明什么。检索给出的答案,只回答了“这个任务大概是什么”,没有回答“眼前这个屏幕,我该点哪里”。
到这里就能理解论文标题那句话了。检索判断的是任务层面的相关性,比如“这条历史记录和你现在想做的事是不是一回事”;智能体真正需要的,是决策层面的适用性,也就是“这条历史记录里的具体动作,是不是刚好对得上你眼前这个屏幕”。这两者并不是一回事。
可以这么想。你去一座陌生的城市玩,事先把整本旅游攻略打出来塞进包里。攻略和这座城市确实对得上,可你站在路口那一瞬间,它帮不上忙,因为它没法告诉你眼前这个红绿灯该往左还是往右。你要的不是一整本攻略,而是旁边站个人,看着你面前的路口,告诉你这步往哪走。没人站那儿,你就只能自己猜,猜错了就得多绕路。检索式方法在后头那些步骤上失灵,原因就在这儿:它把整本攻略塞给你了,可每个路口都没人给你指方向。
主动建议那边也差不多。同样是“周一早上点咖啡”这条习惯记录,早上8点被检索出来,这时候该提醒;晚上通勤时被检索出来,就完全不该提醒。检索只认“这条记录跟咖啡有关”,不管“现在几点、你在什么地方”。
二、研究者是怎么想到解决方案的
读到这里你可能会问,既然检索的毛病这么明显,为什么大家一直这么做?
一个比较直接的原因大概是,检索这个动作本身很好实现,也很符合直觉:找最相似的,拿过来用。而要让AI在每一步都重新判断“这条历史对现在管不管用”,需要的是另一套机制,这套机制得盯着屏幕的实时变化,而不是只盯着任务开始时的那句话。
研究团队把这个思路叫做体验激活,提出了一个叫ExpActivator的框架。
ExpActivator是论文里提出的免训练框架,主要思路是把“检索历史”和“激活历史”拆开:检索先圈定范围,激活再在每一个具体决策时刻,判断这个范围里哪条经验真的用得上。
框架分两层:一层管执行过程中的每一步,叫步级激活;一层管要不要主动开口建议,叫任务级激活。
三、步级激活:让参照物跟着屏幕走
执行阶段是这么走的:先用一个文本编码器,把当前指令和历史记录里的任务目标做语义比对,筛出最相关的8条历史轨迹,这一步和传统检索大体一样。
接下来就不同了。ExpActivator不会把8条轨迹整包丢给AI,而是拿当前这一步的屏幕截图,去和这8条轨迹里记下的每一个历史屏幕状态做视觉比对,挑出最像的那个,再把那个历史状态对应的动作当成参考答案交给AI。
这里有个技术细节值得说一下,为什么比对屏幕要用一种叫centered visual block的处理方式,而不是直接比较像素。
论文挑选屏幕上真正有代表性的区块来比对,具体做法是从 GUI 模型自己的视觉特征中取若干区域(屏幕四个象限就是例子),先减去这些区块在历史图像上的均值,再做归一化,用这种“去均值”的表示衡量两张屏幕的相似度,而不是拿原始像素硬碰硬。
团队为此专门做了对照实验:用中心化区块特征去匹配历史动作,准确率约 35%;直接比像素误差的办法只有 29.6%,两者差距在统计上非常显著。屏幕截图里真正管用的信息,其实不是像素长什么样,而是它与用户历史习惯之间那种结构化的相对关系。
更关键的一点在于,这种匹配不是算一遍就收工,每走一步都要重新算。论文的消融实验很直白:拿上一步的截图去匹配、而非当前这一步的截图,成功率掉 15%;每四步才更新一次参考答案,同样掉 13%。
打个比方,你开车去陌生地方,导航只在出发时瞄了一眼路况,之后全程闭眼凭记忆指挥你转弯——前面堵了它不知道,前面施工封路它也不知道。出发那一刻路线是对的,可路况一直在变,闭眼开只会越走越偏。
不实时刷新,导航给的建议就会越来越脱离眼前真实的路况。这正是“参考答案要跟着屏幕实时更新”这个设计存在的理由。
团队还统计到一个有意思的现象:跑完一次任务,92% 的任务会从两条以上不同的历史轨迹里借用参考动作,平均借 3.4 条。AI 并不是老老实实沿一条历史路径走到底,而是哪个历史状态像眼前的屏幕,就临时借哪条轨迹的那一步,用完就换。四个不同的底层模型上这个比例几乎一致,说明它不是某个模型的怪癖,而是这套激活机制本身带来的行为模式。
四、任务级激活:什么时候该开口,什么时候该闭嘴
主动建议这一侧的逻辑完全不同。此时用户没有下达任何指令,智能体得自己判断“现在是不是该说点什么了”。论文在这里引入了 routine 的概念。
routine 指的是用户在相似时间、相似场景下反复做的同一类任务,比如每天早上 8 点在家查天气,属于有规律的重复行为。
ExpActivator 的做法是:把历史记录里语义相近的意图聚成一组,构成 routine 邻域,再看当前时间和当前场景与这个邻域里过去发生的时刻有多接近。它用了一个时间核函数——离当前时刻越近的历史发生点权重越高——由此形成一种叫 contextual support 的支持度打分。
contextual support 是衡量某个 routine 在当前时间和场景下有多少历史证据支持它“现在就该发生”的综合分数,由场景是否匹配和时间是否接近两部分加权组成。
这里的设计有个讲究:是否激活和激活后怎么排序,是分开判断的两件事。某个 routine 能不能进“可以考虑”的候选池,看的是绝对支持数量够不够,比如历史上这类场景至少出现过 12 次、同场景至少出现过 4 次;进了池子再挑哪个最合适,看的是单次匹配的平均质量。
消融实验显示,去掉场景条件这道筛选,误报率会从 37% 飙升到 62%。光靠“这事以前常发生”不够,必须同时看“这事发生的场景跟现在对不对得上”。
可以想象一个每天都要吃药的老人:家里的智能音箱如果只记得“这个点通常要吃药”,不管老人今天在家、在医院还是出门旅游,一到点就提醒,这种提醒很快会让人烦躁甚至误导人。真正懂事的提醒应该先确认“你现在确实处在平时吃药的那个场景里”,再决定要不要开口。少了场景确认,提醒系统做的就是无差别轰炸,而不是真正体贴的建议。
当所有候选 routine 都够不上激活门槛,ExpActivator 会直接选择沉默。这个“该弃权就弃权”的设计,正是它与传统方法最大的区别。像 HIM-Agent 这样基于时间场景组织记忆的方法,虽然把 routine 按时间场景分了类,但最终要不要建议仍交给后面的 AI 模型自行判断,而 AI 模型往往没有足够依据分辨“这事现在该不该提”。
五、四个模型上的实测结果
论文在四个开源 GUI 模型上做了对比:Qwen3-VL-8B、MAI-UI-8B、Qwen3.5-9B、GUI-Owl-1.5-8B,另外拿商业模型 QwenVL-Max 做外部参照。
个性化执行这边,ExpActivator 在四个模型上都拿到了最好成绩。以 Qwen3-VL-8B 为例,不给任何历史记录时单步成功率只有 19.4%;用最强的记忆基线方法 HIM-Agent 提到 22.6%;ExpActivator 直接冲到 30.9%,相比 HIM-Agent 提升约 37% 的相对幅度。
更有意思的是,用上 ExpActivator 之后,四个开源模型全部超过了商业模型 QwenVL-Max 的综合成功率,达到后者的 1.6 倍左右。
指标方面,论文用了三个主要指标:动作类型准确率、单步成功率,以及按步骤加权的累积成功率。CSR 即 Cumulative Success Rate,是一种给任务早期步骤更高权重的综合成功率指标,强调任务是不是从一开始就走上了正确的路。
主动建议这一边的指标选取也值得细说。数据集里 68% 的样本都是“该建议的场景”,一个系统如果傻乎乎地对所有场景都发建议,F1 分数照样能到 81.1,看着很高,其实毫无判断力。所以论文改用平衡准确率和马修斯相关系数这两个更能反映真实判别能力的指标。MCC 即 Matthews correlation coefficient,马修斯相关系数,即使在正负样本数量不均衡时也能真实反映分类判断能力,对任何“无脑全部建议”或“无脑全部沉默”的策略都会给出 0 分。
在这两个指标上,几个基于检索的记忆方法几乎跟瞎猜没区别,MCC 常常接近 0 甚至是负数;ExpActivator 的 MCC 达到最强基线的 2.3 倍左右,精确率平均到了 84%。
在Qwen3-VL-8B上,论文给出了几组核心数据,各列最优值以加粗显示。不给历史的情况下,单步成功率19.4、累积成功率23.7,平衡准确率与MCC均未列出。改用最近记录,这两项数字变成20.6和29.2,平衡准确率50.3、MCC为2.3。相似检索的单步与累积成功率分别升到22.6和41.4,平衡准确率48.9,MCC跌到-5.5。LLM生成画像对应22.0、39.2、51.5、10.5。HIM-Agent的成绩是22.6、40.2、58.5、20.7。ExpActivator则在四项指标上全面领先:单步成功率30.9,累积成功率47.9,平衡准确率71.8,MCC 42.7,均为该列最佳。
还有一项发现容易被忽略,却很实用:效果更好的同时,ExpActivator占用的上下文反而更少。论文统计了每一步提示词里塞入的历史相关token数,这个方法平均每步只加144.6个token。四个基线方法平均要加五百到八百多个,即便其中最省的HIM-Agent也要417.8个,接近ExpActivator的三倍。原因并不复杂,它每一步只给出一条具体的动作参考,不会把整段历史记录或整份用户画像一股脑搬进去。
历史记录不多的用户,同样能从中受益。团队按记录条数把82个用户分成四组,最少的一组只有39到111条记录,ExpActivator在这一组仍比最强基线高出8.3个百分点,相对提升超过37%。可见激活机制奏效的前提,并不是要先攒够大量数据;只要有少量过往记录,当前屏幕状态就能从中激活出有用的参考。
打个比方,一位刚入职不久的新员工,和一位干了十年的老员工,同时遇到一个棘手的客户问题。老员工脑子里存着成百上千个类似案例,可如果他翻遍所有相似案例、把某一个旧方案原封不动照搬过来,照样可能用错方法。新员工哪怕只经历过三五个类似场景,只要懂得仔细观察眼前这个客户的具体情况,从这三五个案例里挑出真正适用的那一招,往往比生搬硬套更靠谱。成败的关键不在历史案例的数量,而在于能不能在当下这个具体情境里把对的那一条挑出来。
七、消融实验:拆开每个设计看效果。论文另外做了几组对照实验,专门检验"选择"这个动作本身是否值得。
第一组实验只给AI一条排名最高的历史轨迹。一种做法是把整条轨迹原样塞进去,这正是传统检索的路子,单步成功率18.5%,跟完全不给历史几乎没差别;另一种做法是用步级激活从同一条轨迹里挑出最匹配的动作,成功率升至23.8%,相对提升29%。两种做法用的历史信息完全相同,差别只在于"整段塞"还是"挑一条给"。
前面的问题,到这里就有了答案:经验的总量没涨,涨的是调用经验的办法。打个比方,同样一本菜谱,有人整本塞给刚下厨的人,叫他一路翻到底、自己找该烧哪道;有人则直接翻到那一页,点着菜说"就做这个"。字还是那些字,可后者能让新手立刻上手,前者只让他对着一本厚书干瞪眼。缺了"翻到那一页"这一步,菜谱再厚,也不过是一沓没用上的纸。
还有一组实验,专门拆开看任务级激活中三个设计要素各起什么作用。拿掉时间加权,平衡准确率下降3.3个百分点;拿掉场景条件,下降8.1个百分点,误报率还翻了一倍;拿掉频率归一化,触发决策一点没变,但建议内容的语义质量相对幅度掉了约4%。论文有句话概括得很准:时间决定什么时候该开口,场景决定要不要开口,频率决定开口说什么。
八、从真实数据看这套机制长什么样。论文里有个案例特别直观。一位用户要查从某个地点到另一个地点的公交车,整个任务走了14步。步骤2和步骤6的参考动作来自4月9日的一次历史出行,因为当时的屏幕状态跟现在很接近;一旦屏幕里出现终点选择页面,参考动作立刻切换成4月11日另一次历史出行,因为那次才是真正去过这个终点的记录。整个过程中,AI借用了三段不同日期的历史记录,拼出了这一次完整的操作路径。
另一个案例关于主动建议。有位用户每天早上8点查天气、下午辨认植物、晚上查运动记录、睡前设闹钟,论文把这个用户一整天的routine支持度曲线画了出来。四条曲线此起彼伏,分别在各自对应的时间点达到峰值并被激活;到了凌晨和下午一点左右,没有任何routine的支持度够格,系统选择沉默。该说话就说话、不该说话就闭嘴,这种节奏正是整篇论文想要证明的东西。
Q&A
Q1:ExpActivator是什么?A:这是NTU和阿里巴巴团队提出的一个免训练框架。它的核心思路是把"检索相关历史"和"激活适用经验"分开:GUI智能体每一步执行时都重新匹配最合适的历史动作;在要不要主动建议时,则判断时间和场景是否真的支持这个建议。
先说 Q2:检索出来的历史记录,怎么到了执行阶段的大多数步骤就帮不上忙?
问题出在两层判断的对象不一样:检索看的是任务整体关不相关,执行每一步盯的却是眼前屏幕能不能对上。指令始终没变,屏幕却一步一个样;历史轨迹只能说明智能体从哪里起步,没法告诉它当下这一帧该点哪儿。实验里,开场之后的90%步骤中,检索式方法基本起不到作用。
那 Q3:ExpActivator 相比传统方法,效果提升有多大?
拿四个GUI模型做测试,单步成功率平均提高约28%,整体执行成功率比最强基线高出约20%;历史记录相关的提示词token meanwhile只花到基线方法的约五分之一,主动建议的判别能力(MCC指标)约为最强基线的2.3倍。