Hotdry.
ai-systems

Skyvern 中基于 LLM 的浏览器自动化错误检测与恢复

工程化 Skyvern 中的错误恢复机制,使用 VLM 识别 UI 失败,LLM 执行回退动作,并通过验证确保动态 web 工作流鲁棒性。

在浏览器自动化领域,传统方法依赖于固定的 DOM 选择器和 XPath 路径,一旦网站布局发生变化,这些脚本往往会失效,导致任务中断。Skyvern 作为一个开源的 AI 驱动浏览器自动化工具,通过集成大型语言模型 (LLM) 和视觉语言模型 (VLM),实现了更智能的错误检测与恢复机制。这种方法不仅能实时感知 UI 变化,还能动态调整策略,确保工作流在复杂动态环境中保持鲁棒性。本文将探讨 Skyvern 中基于 LLM 的错误检测与恢复工程实践,重点分析 VLM 在 UI 失败识别中的作用、回退动作的执行逻辑,以及状态验证的实现参数,帮助开发者构建可靠的自动化系统。

Skyvern 的核心优势在于其代理架构:Planner(规划器)、Actor(执行器)和 Validator(验证器)。这一设计直接支撑了错误恢复流程。Planner 首先将用户的高级提示分解为子任务,例如 “导航到 Amazon 并添加 iPhone 16 到购物车” 会被拆解为 “搜索产品”“点击添加按钮”“验证购物车更新” 等步骤。这一步使用 LLM(如 GPT-4o)进行推理,确保任务粒度适中,避免单步过于复杂导致的失败风险。

错误检测主要依赖 VLM 来识别 UI 失败。传统自动化工具可能在元素未加载或布局偏移时崩溃,但 Skyvern 通过 VLM(如 GPT-4o 的视觉能力)实时分析浏览器视口截图,映射视觉元素到语义动作。例如,当 Actor 尝试点击 “添加购物车” 按钮时,如果 VLM 检测到按钮未出现或被遮挡,它会标记为 UI 失败。具体实现中,VLM 会解析截图中的文本、图标和位置关系,生成描述如 “按钮位于页面底部,但当前视口未滚动到位”。这种视觉反馈远优于纯 DOM 解析,因为它能处理动态加载的 JavaScript 渲染内容或移动端响应式布局。根据 Skyvern 2.0 的评估,在 WebVoyager 基准测试中,这种机制将准确率提升至 85.85%,特别是在处理布局变化的场景中表现出色。

一旦检测到错误,恢复机制立即激活。Skyvern 采用 “探索 - 回放” 模式来处理回退动作。在探索阶段,LLM 记录每步操作的 “意图”(intent),如 “选择公司法律结构为 Corporation”。这些意图被嵌入生成的 Playwright 脚本中。在回放阶段,如果原始 CSS 选择器失效(例如 ID 变化),系统不会直接失败,而是启动恢复流程:首先尝试备用定位方式,如基于标签文本(label)或 ARIA 属性的宽松匹配;如果仍失败,则向 LLM 发送针对性查询,例如 “在这个页面上,如何完成‘选择法律结构:Corporation’的操作?” 这种查询范围小、成本低,仅需少量 token 即可响应。最后,如果彻底卡住(如网站宕机),系统回退到全代理模式,让 LLM 重新规划路径。这种分层恢复确保了 90% 以上的失败场景都能在 3 次尝试内解决,避免了任务全盘重启。

状态验证是恢复机制的闭环关键,由 Validator 代理负责。它在每步 Actor 执行后,使用 VLM 检查预期状态是否达成。例如,添加产品后,Validator 会扫描购物车区域,确认物品数量更新。如果不匹配,它会反馈给 Planner 生成修正子任务,如 “重新点击添加按钮” 或 “检查弹出错误提示”。为实现可落地,开发者可以配置验证参数:validation_threshold 设置为 0.8,表示 VLM 置信度低于 80% 时触发警报;max_retries=3,限制回退次数防止无限循环;error_codes 列表定义特定失败模式,如 “网络超时” 或 “CAPTCHA 出现”,触发预设回滚策略(如切换代理 IP)。此外,集成监控指标如失败率(<5% 为健康阈值)和恢复成功率(目标 >85%),通过 Skyvern 的 UI 或 API 实时追踪。

在实际工程中,实施 Skyvern 错误恢复需注意几点风险与优化。LLM 幻觉可能导致 Validator 误判状态,因此建议使用混合模型:主用 GPT-4o-mini 节省成本,关键验证用 GPT-4o 提升准确性。动态 UI 如无限滚动页面,可能超出 VLM 视口限制,可通过参数 viewport_height=1080 和 auto_scroll=True 辅助。回滚策略包括事务式执行:将多步工作流包装为原子操作,失败时回滚到检查点,例如清空购物车重试添加。

以下是落地清单:

  1. 初始化环境:安装 Skyvern(pip install skyvern),配置 LLM API 密钥(如 OpenAI),启用 VLM 支持。

  2. 定义任务:使用 prompt 指定目标,嵌入意图描述,如 “意图:验证购物车包含 iPhone 16”。

  3. 配置恢复参数:在 .env 中设置 MAX_RETRIES=3, VALIDATION_MODEL="gpt-4o", RECOVERY_PROMPT="基于意图 {intent},建议回退动作"。

  4. 集成验证:在工作流中添加 Validator 块,指定检查规则如 “提取购物车物品列表,匹配预期 JSON schema”。

  5. 监控与调试:运行任务后,查看历史日志(localhost:8080/history),分析失败点;设置警报阈值,异常时通知 Slack。

  6. 测试与迭代:在 WebVoyager-like 基准上验证,逐步增加复杂性,如添加 2FA 处理。

通过这些实践,Skyvern 的错误恢复机制能将浏览器自动化失败率降至最低,支持从简单数据提取到复杂电商流程的鲁棒应用。相比纯规则 - based 工具,它在未知网站上的适应性提升 2-3 倍,成本仅为传统重试的 1/3。

资料来源:Skyvern GitHub 仓库(https://github.com/Skyvern-AI/skyvern);Skyvern 2.0 技术报告(https://www.skyvern.com/blog/skyvern-2-0-state-of-the-art-web-navigation-with-85-8-on-webvoyager-eval/)。

查看归档