MemGUI-Agent 管记忆与规划、手机端点击执行交给页面反馈

文章导读
MemGUI-Agent 这类方案里,记忆与规划跑在 Agent 侧,点击执行交给手机端页面,于是同一个“任务失败”往往混着三种情况:记忆没更新、规划选错动作、点击发出但页面没反馈。判断顺序建议从日志入手——先确认失败发生在保存信息还是选择动作,再看点击后页面是否给出可验证反馈;页面反馈不可靠时,不要在无证据的前提下让规划层继续往下走。
📋 目录
  1. Ⅰ 在任务记录里区分记忆更新与规划决策
  2. Ⅱ 观察点击执行后页面是否给出可验证反馈
  3. Ⅲ 检查页面反馈缺失时 MemGUI-Agent 是否盲目继续
  4. Ⅳ 用同一指令测试不同应用的反馈速度
  5. Ⅴ 给无反馈页面设置手动确认点
A A

MemGUI-Agent 这类方案里,记忆与规划跑在 Agent 侧,点击执行交给手机端页面,于是同一个“任务失败”往往混着三种情况:记忆没更新、规划选错动作、点击发出但页面没反馈。判断顺序建议从日志入手——先确认失败发生在保存信息还是选择动作,再看点击后页面是否给出可验证反馈;页面反馈不可靠时,不要在无证据的前提下让规划层继续往下走。

把 MemGUI-Agent 的失败拆成两层看:记忆更新与规划决策属 Agent 侧,可由记录字段直接区分;点击是否生效属页面侧,只能用页面变化验证。适用场景是长程、多步的手机端任务。操作上先标出一条记忆更新记录和一条规划决策记录,再给每一步点击设确认点;风险边界是页面本身无反馈或反馈延迟时,暂停并请求人工确认,而不是靠重试硬推。

在任务记录里区分记忆更新与规划决策

先让 Agent 把两类记录写进同一份任务日志,但用不同 kind 字段区分。记忆更新回答“页面告诉了我什么”,规划决策回答“我接下来点什么”。只要日志里两者混在一起,排查就会把记忆没更新误判成模型乱点。

层输入输出失败表现可验证方式
记忆层(MemGUI-Agent)页面观察结果、历史步骤结构化记忆条目,如“无线网络入口在列表第 2 项”页面已变化,记忆仍是旧条目读记忆存储文件或日志中的 memory_update
规划层(MemGUI-Agent)当前记忆 + 用户指令下一步动作,如 tap / input / swipe选择的控件在当前页面不存在对比 plan_step 的 based_on 与当时页面截图
执行层(手机端)动作指令一次真实点击或输入动作已下发,页面无变化看点击后是否出现新的页面观察记录

日志可以先按下面的最小字段写,够用来分辨责任层:

{"kind":"memory_update","page":"settings_main","evidence":"list_item[text=无线网络]","text":"无线网络入口在列表第2项"}
{"kind":"plan_step","step":3,"action":"tap","target":"text=无线网络","based_on":"memory_id=17"}

检查点:memory_update 里必须带页面证据(元素、文案或截图编号),plan_step 里必须带 based_on。缺 evidence 的记忆条目等于猜测,缺 based_on 的规划步骤等于脱离页面状态自由发挥。

观察点击执行后页面是否给出可验证反馈

判断点击是否真的生效,只看页面证据,不看点击是否发送成功。建议在每次动作后固定采集一次页面状态,并把下面这些反馈形式逐项对照,任何一项成立都算有反馈:

  • 页面跳转:URL、Activity、标题或导航栏文案变化;
  • 控件状态变化:按钮置灰、文案由“提交”变“提交中”;
  • 输入框出现文本或光标位置变化;
  • 弹出提示:Toast、弹窗、错误条;
  • 列表选中态、勾选框、开关状态改变;
  • 加载态出现后消失,且内容区发生替换。

这些证据要落在截图或 DOM/无障碍树快照上,而不是由规划层自己“声明成功”。如果动作执行后只有日志没有新快照,先补采集,再谈点击是否生效。

检查页面反馈缺失时 MemGUI-Agent 是否盲目继续

常见连锁错误是:点击没有反馈,但规划层默认它成功了,继续执行基于旧页面状态的下一步。复现方式很直接——在日志里找一次 tap 之后没有新的 observe 记录,却紧跟一个 plan_step 的片段。

MemGUI-Agent 管记忆与规划、手机端点击执行交给页面反馈
step 4: tap  target=text=提交      -> 无新页面观察
step 5: plan  based_on=memory_id=22  -> tap target=text=确认
step 5: 执行结果: 弹窗未出现,点击落在其他控件上

遇到这种情况,标出 step 5 的 based_on 指向的是哪一次页面观察:如果指向 step 3 之前的快照,就说明它在用旧页面状态继续。处理动作是把“动作后必须有一次新观察”写成硬条件,缺观察就进入重试或暂停,而不是让它自动续跑。

用同一指令测试不同应用的反馈速度

等待时间设置过短,会把“页面慢”误判成“点击无效”。选两个应用,做同一类点击(例如进入二级列表、提交一个已填好的表单),每次记录两个时间戳:动作下发时间和首次页面变化时间,观察差值分布。

测试记录模板
应用: A
动作: tap 提交
下发时间戳: T0
首次页面变化时间戳: T1
变化类型: 按钮置灰 / 出现加载态 / 跳转
配置等待上限: W
结论: T1-T0 是否超过 W

两个应用差值差距明显时,不要用一个全局等待时间硬套,可以按应用或页面类型分别配置等待上限。等待上限的取值需要结合设备性能、网络和动画时长确认,不要凭一次观察定死。

给无反馈页面设置手动确认点

反馈不可靠的页面(例如点击后要等第三方回调、动画很长、无跳转的局部刷新),建议在长程任务里插一道停止条件:满足指定页面证据才继续,否则暂停并请求人工确认。写法可以是一段可替换的规则配置,由执行器在每步之后求值:

confirm_point:
  name: 提交后等待结果
  after_action: tap 提交
  require_any:
    - url_changed: true
    - text_appeared: "提交成功"
    - element_state: {selector: "#submit", state: "disabled"}
  timeout_ms: 8000
  on_timeout: pause_and_ask_human
  max_retry: 1

配合规划层的提示词,让它在动下一步之前先自检:

在执行下一步之前回答:
1. 上一步动作之后,页面出现了哪些与动作目标相关的变化?请给出可指认的证据。
2. 如果没有任何变化,是否允许重试一次,还是应当暂停并请求人工确认?
只有当第 1 条能给出证据时,才继续下一步。

确认点的边界要写清楚:哪些证据算通过、超时后是暂停还是重试一次、哪些步骤允许跳过。这样 MemGUI-Agent 的记忆与规划仍然可以自动推进,而手机端点击是否生效,最终由页面反馈来裁决。