AI Agent 浏览器任务失败后,如何设计 RetryPolicy 与人工复核机制
AI Agent 浏览器任务失败后,最常见的处理方式是“自动重试”。
这在普通接口任务里没有问题,但浏览器任务的失败原因往往不止网络抖动。它可能来自登录态失效、页面结构变化、Profile 切换、Proxy 不一致,甚至是平台触发了安全验证。
如果不区分失败类型,直接重试,可能会把一个小问题扩大成不可复盘的问题。
1. 不要把所有失败都当成 timeout
浏览器任务失败时,建议先做分类,而不是直接重试。
| failure_type | 含义 | 优先排查方向 |
|---|---|---|
| session_invalid | 会话不可用 | Cookie、LocalStorage、IndexedDB、登录状态 |
| env_mismatch | 环境不匹配 | Profile、Proxy、时区、语言、地区 |
| page_changed | 页面结构变化 | DOM、选择器、弹窗、页面版本 |
| action_timeout | 操作超时 | 网络、等待策略、页面加载 |
| security_verification_required | 需要安全验证 | 暂停任务,人工完成官方验证 |
| agent_uncertain | Agent 判断不确定 | 保存证据,进入人工复核 |
| unknown | 未分类异常 | 查看截图、Trace、最近变更 |
只有失败类型足够明确,后续的 RetryPolicy 才有意义。
2. RetryPolicy 不应该只有重试次数
很多实现里,RetryPolicy 只包含两个字段:
```yaml
max_retries: 3
retry_interval_seconds: 10
```
这对浏览器任务来说不够。
更合理的 RetryPolicy 应该同时描述“什么情况能重试”和“什么情况必须暂停”。
```yaml
retry_policy:
max_retries: 2
retry_interval_seconds: 30
retry_allowed_for:
- action_timeout
- transient_network_error
pause_immediately_for:
- security_verification_required
- session_invalid
- env_mismatch
- agent_uncertain
require_evidence_before_retry: true
```
这样可以避免把安全验证、会话失效、环境异常误当成普通失败。
3. 失败前后必须保留 StepEvidence
如果没有证据,重试会变成猜测。
关键步骤建议记录:
| 字段 | 说明 |
|---|---|
| step_id | 步骤编号 |
| action | 执行动作 |
| target | 操作目标 |
| url | 当前页面 URL |
| page_title | 页面标题 |
| before_screenshot | 操作前截图 |
| after_screenshot | 操作后截图 |
| assertion | 预期状态 |
| result | 实际结果 |
| reason | Agent 或脚本判断理由 |
这些字段能回答一个核心问题:
任务到底是在什么页面、什么状态、什么环境下失败的?
4. 人工复核队列 ReviewQueue
不是所有失败都应该自动处理。
下面这些场景建议进入人工复核:
| 场景 | 处理建议 |
|---|---|
| 出现安全验证 | 暂停任务,走官方验证入口 |
| 登录态失效 | 检查 Cookie、LocalStorage、IndexedDB |
| 环境快照不一致 | 对比 Profile、Proxy、时区、语言 |
| 页面结构变化 | 保存截图,确认是否改版 |
| Agent 判断不确定 | 保留 reason,人工确认 |
| 涉及提交或修改数据 | 先复核,再继续 |
人工复核不是替代自动化,而是为高风险分支增加一道保护。
5. 一个最小运行结构
可以把一次任务抽象为:
```yaml
run_id: run-20260531-1400
job_id: job-agent-browser-publish-check
workspace_id: workspace-cn-01
profile_id: profile-cn-01
environment_snapshot:
cookie_status: valid
local_storage_status: ready
indexeddb_status: ready
proxy_policy_match: true
timezone_match: true
language_match: true
failure_handling:
failure_type: action_timeout
retry_allowed: true
review_required: false
evidence_saved: true
```
如果 `failure_type` 变成 `security_verification_required`,结果应该是:
```yaml
failure_handling:
failure_type: security_verification_required
retry_allowed: false
review_required: true
next_action: pause_and_manual_verify
```
6. 实践建议
上线前建议检查:
| 检查项 | 通过标准 |
|---|---|
| Profile 是否固定 | 一个工作区绑定一个主 Profile |
| Session 状态是否可用 | Cookie、LocalStorage、IndexedDB 可读 |
| Proxy 是否一致 | 地区、时区、语言匹配 |
| FailureReason 是否分类 | 失败原因不是一个笼统 error |
| RetryPolicy 是否有限制 | 只允许低风险失败重试 |
| ReviewQueue 是否存在 | 高风险失败能进入人工复核 |
| StepEvidence 是否保存 | 能追溯 URL、标题、截图和判断理由 |
7. 总结
AI Agent 浏览器任务的稳定性,不只取决于模型能不能完成操作,也取决于失败后系统如何决策。
直接重试适合低风险、临时性的失败。
但如果涉及会话失效、环境不一致、安全验证或 Agent 不确定,就应该暂停任务并进入人工复核。
能继续执行是一种能力,知道什么时候停止也是一种能力。
Web4Browser 关注 Agent 浏览器任务中的环境连续性、运行证据和人工复核机制,适合用于构建更可追溯的浏览器自动化工作流。
参考:
https://web4browser.io/cn/
更多推荐

所有评论(0)