跳转到内容
来源伴读公开来源整理

Agent 循环保护:用预算和进展信号及时停止

你可以用一段轨迹解释系统为什么停下来。成功是错误没有被继续放大,而不是模型自动修好了所有问题。

适用场景发现不确定结果、风险信号和需要人工复核的项目

来源 · Ashutosh MathoreSome code7 分钟

把“动作不重复”和“取得新进展”分开。先有硬预算,再让模型辅助发现无效循环。预算与进展信号先于任何提示词技巧。

来源 · Ashutosh Mathore · X 原帖伴读

2026-09-21 · 编辑整理,未调用真实模型

一个 Agent 可能每次都执行不同操作,却一直建立在同一个错误假设上。比如账户没有访问权限,它仍不断换 URL、刷新、换选择器。动作看起来变化了,事实却没有变化。

原作者展示过基于语义的熔断思路。本教程使用虚构轨迹讲清如何接入,不把原帖中某次减少调用的数字当成普遍结果。

先有硬限制,再判断是否前进 任务目标 → 动作+实际观察 → 检查新证据 → 硬预算限制 → 暂停并交接

模型不能为自己扩权或加预算。

  • 一小段脱敏轨迹:目标、动作、实际观察和错误。

  • 代码层已有限制步数、总时长和可使用额度。

  • 停止后有人能看到原因,而不是任务悄悄消失。

  • Official docs

最大请求数、最长时间和预算上限必须由代码独立执行。即使模型超时、报错或返回「继续」,也不能越过硬限制。

对于支付、发布等写操作,还要有独立的审批与防重复机制。语义判断不是唯一保险。

2. 记录观察,不只记录动作名字

Section titled “2. 记录观察,不只记录动作名字”

每一步保留实际结果:返回 403、目标列表仍为空、账户仍未切换。不要只写 click、retry、navigate,这样无法判断有没有新证据。

轨迹中删除 token、Cookie 和私人信息,只给模型必要摘要。保留原始日志在受控位置,便于人工排查。

判断最近一次尝试是否基于新信息,或是否重复依赖已被否定的假设。结果可以是 progress、same_assumption、insufficient_evidence。

模型不能因为想继续,就自动延长预算或申请新权限;这些变更必须由另外的明确授权流程处理。

4. 触发暂停后,给人可操作的上下文

Section titled “4. 触发暂停后,给人可操作的上下文”

显示原目标、最近有效观察、停止原因与建议人工核查项。不要把「暂停」伪装成「任务成功」。

恢复任务时从当前真实状态重新读取,不从过期 DOM、坐标或旧推测继续。写入结果不确定时先查询,而不是重复提交。

动作变化了,事实没有变化

下面是虚构轨迹,所有动作都面向同一个权限问题。

动作 实际观察
1 打开报表 403,无权限
2 刷新页面 同样返回 403
3 换入口链接 仍是同一账户权限不足
4 准备继续换选择器 没有新证据,应停止并交回人工

这不是原作者的运行轨迹,也没有调用模型。

你可以用一段轨迹解释系统为什么停下来。成功是错误没有被继续放大,而不是模型自动修好了所有问题。

  • 不能由模型自己解除熔断。
  • 禁止把登录失败理解成可以绕过身份验证。
  • 停止后仍要核对是否已有副作用发生。
  • 你能说明输入来自哪里、哪些字段会参与处理。
  • 你保留了原始记录及不确定、失败和人工修改的结果。
  • 你能区分本地练习、作者演示与自己真实调用后的测试。

来源边界:依据所列公开来源整理;本站未复现演示。分类结果需人工复核,不会自动执行。

最大步数设置了,还需要语义判断吗?

Section titled “最大步数设置了,还需要语义判断吗?”

硬限制保证上界;语义判断可能更早发现无效路径,但需要评测误停与漏停。

停止是不是一定说明模型失败?

Section titled “停止是不是一定说明模型失败?”

可能是输入、权限、网络或环境变化。给出具体观察,不简单归因。