CMU AI AGENTS / 同一个循环,进入三种真实环境 / 第 29 课

点中了“提交”,为什么任务仍然可能失败?

单步目标定位正确不等于长任务成功;需要观察页面反馈、后端状态和流程约束,防止按钮无响应、校验失败或重复提交。

完整讲解 · 条件对照 · 理解检查所在单元与学习顺序官方课件全页浏览

按钮确实点中了,为什么任务还不算完成?

上一节把目标映射到了当前界面上的按钮。我们现在沿原课蓝色杯子的购物过程继续:点到商品,会打开详情;点“加入购物车”,可能改变购物车;但用户要的也许是购买,也许只是加入购物车。本课区分动作执行、页面变化和任务完成,先不展开完整支付系统。

同一次点击,可以对应三种结果

执行器返回“click 已发送”,只说明输入事件发出。页面可能尚未处理,也可能由于缺货拒绝加入,还可能加入成功却没有跳转。若模型把执行器成功当成业务成功,就会在缺少结果证据时宣布完成。

教学任务先限定为“把一只蓝色单杯加入购物车,数量为 1”。我们把完成条件写成三个可核对的字段:商品是蓝色单杯、数量是 1、购物车状态中存在该条目。截图上出现蓝色杯详情,只满足识别商品;购买按钮的点击日志满足的是过程记录,均不等价于上述最终状态。

原课初始目标写的是 buy,后面的购物车截图也仍有 Checkout。读图时不要把停在购物车解释成已经支付成功;讲义用这组画面说明策略的输入如何累计,并没有在该页给出完整支付验收。

官方原课件 · Lecture 7 · PDF 第 50 页原课:第一次点击后,新增详情页截图
视觉历史中包含目标、旧截图、click 动作和新的 Blue mug 18 美元详情页

模型第二次行动前看到了新的 Screenshot 1。新画面是环境反馈,不能由动作文本替代;它告诉模型是否进入了预期商品页面。

官方原课件 · Lecture 7 · PDF 第 53 页原课:购物车状态进入下一轮输入
累积的截图和点击历史最后出现购物车 Blue mug 18 美元数量 1 及 Checkout 按钮

重点看最右侧:购物车数量是当前状态证据,Checkout 则说明流程还可能继续。是否能停止取决于用户目标,而不是页面看起来已经很像成功。

状态变化要怎样读回来

行动前记录当前状态,例如购物车空;行动是点击一次加入;行动后读取新状态。若购物车出现蓝杯数量 1,就支持“加入一只”的结论。若状态仍为空,下一步应区分加载中、错误提示、页面未更新,而不是立刻再点一次。

为什么不直接重试?因为第一次请求可能已到服务器,只是界面反馈延迟。重复点击后,最终数量可能变成 2。我们的教学记录中,两次加入每次增加 1,起始数量 0,最终就是 0+1+1=2。两次动作都执行成功,任务却失败。它与代码任务里“补丁应用了两次”相似:工具执行成功不保证组合后的业务状态正确。

观察过程 · 改变条件

为什么多点一次反而错了

比较动作已发生、页面已显示、任务已完成这三个时刻。

教学构造场景 · 按下方规则逐步回放;不调用真实模型,不代表实际成功率。

这一轮的输入

初始数量 0;第一次加入已成功,界面尚未刷新

  1. 1. 第一步

    点击一次,服务端数量变为 1。

  2. 2. 第二步

    看到旧界面仍是 0,立刻再点,数量变为 2。

  3. 3. 第三步

    刷新读回数量 2,与目标数量 1 不符。

第一步

点击一次,服务端数量变为 1。

1 / 3
先预测,再核对结果与原因两次点击成功,任务失败。

延迟不等于请求未执行。

先预测第二次点击会不会更保险,再逐步揭示服务器状态与界面状态。这里只改变是否在未知结果时重复提交,第一次请求都已经成功,数字是固定状态转移计算。

历史不是动作清单,而是判断依据

下一轮输入保留旧观察、动作和新观察,模型才能知道“我刚刚点过一次,现在看到的数量可能是延迟结果”。如果只留下最新截图,它仍能读到数量,却不知道是否还有一个在途请求;如果只留下动作,它又不知道页面是否真的接受了请求。

官方原课件 · Lecture 7 · PDF 第 55 页原课:交错的观察与行动历史
模型以目标、截图、行动交错的完整历史预测 click type tool 或 stop

图中最终动作集合包含 stop。停止也是要根据历史与最新状态作出的决策,不是没有下一步文字时自动发生。不同系统会压缩历史,但不能随意丢掉判断状态所需的事实。

这不要求无限保存每张截图。可以保留可靠的状态摘要、关键变化与尚未确认的动作;摘要必须区分“已发送”和“已确认”,不能把推测压缩成事实。比如“加入请求已发,数量尚未确认”比“已加入购物车”更准确地保留不确定性。

改变目标,停止位置也会改变

如果用户只要求“找到符合条件的商品”,详情页上名称、价格、颜色足以形成候选证据,没必要加入购物车。如果要求“加入一只”,购物车字段是验收对象;如果要求“完成购买”,还要订单状态等后续证据,以及对应的行动权限。停止规则必须从任务语义推导,而不能固定成“见到绿色提示就停”。

错误提示也有不同含义。“请求处理中”表示暂时未知,“库存不足”表明当前操作失败,“已存在同商品”可能提示不该重复新增。把这三种都变成重试,会使环境更难判断。

需要拍板的是:每个关键动作之后读哪个信号、等待多久、什么时候重试,以及重试是否会重复产生效果。验收至少设置成功、明确失败、反馈延迟三种状态,检查 Agent 是否给出不同的下一步。超时后应报告未确认,不能把没观察到失败当成成功。

点击是改变状态的尝试,完成是对目标状态的确认。 先停在这里,你已经能审查一个界面 Agent 的停止条件;再深一层,可以追踪同一请求在浏览器、服务端和数据库中的不同确认时刻。

理解题 1:执行器返回成功,购物车仍为空,可以宣布加入成功吗?

不可以。执行器成功只证明输入事件发送。应检查页面是否加载、是否报错,以及购物车的实际状态,未确认时保留不确定性。

理解题 2:第一次加入成功但反馈延迟,立即再点一次一定更安全吗?

不是。如果每次都增加一件,会得到两件。应先确认状态或使用能识别重复请求的机制,再决定重试。

理解题 3:同一个购物车画面,可以对一个任务成功、对另一个任务未完成吗?

可以。对“加入一只”可能成功,对“完成购买”还缺订单完成证据。验收取决于目标,不只取决于画面。

我们知道怎样判断一次操作。接下来若要训练或公平比较几千次操作,怎样让每次从同样的环境开始?