Skyvern:用视觉大模型替代 XPath 的浏览器自动化方案
利用 AI 自动化基于浏览器的工作流程。使用法学硕士和计算机视觉自动化基于浏览器的工作流程 Skyvern 使用法学硕士和计算机视觉自动化基于浏览器的工作流程。
秒懂
- 它是什么?
- Skyvern 是一个基于 LLM 和计算机视觉的浏览器自动化框架,提供 Playwright 兼容的 SDK 和无代码工作流构建器。本文分析其运行机制、安装方式、适用边界,并对比传统自动化方案。
- 适合谁用?
- 适合需要快速自动化多个未知网站、且能接受 AGPL-3.0 许可约束的团队,尤其是那些厌倦了为每个站点编写 XPath 脚本的开发者。不适合对延迟敏感、需要完全离线运行或必须使用非 OpenAI 兼容模型的环境。
- 能商用吗?
- 可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决的是选择器失效的痛点
传统浏览器自动化依赖 DOM 解析和 XPath,网站一改版脚本就断。Skyvern 的思路是放弃预定义选择器,改用视觉大模型直接理解页面元素并执行操作。它的 README 明确说,模型能把视觉元素映射到完成工作流所需的动作,因此能在从未见过的网站上运行,也能抵抗布局变化。这套设计对电商采集、表单填写、跨站数据比对这类场景有实际价值,因为那些场景里每个站点的 DOM 结构都不一样。但要注意,它不是为了替代 Playwright 的精细控制而生的,它是叠加在 Playwright 之上的智能层,适合那些不想为每个站点写定制脚本的人。
从任务到动作:代理群如何协作
Skyvern 的设计受 BabyAGI 和 AutoGPT 启发,但加上了浏览器自动化能力。它用一个代理群来理解网站、规划动作并执行。系统图显示,多个代理分别负责解析页面、生成计划、执行点击和输入。关键机制是视觉模型直接观察渲染后的页面截图,而不是解析 HTML 树。这意味着它不需要知道按钮的 id 或 class,只需要看到按钮的样子。文档提到它在 WebVoyager 评测上达到 85.8% 的准确率,但这个数字来自官方博客,我们没有独立验证。实际效果取决于你选的 LLM 的视觉能力,模型认错按钮,整个流程就会走偏。
安装与启动:pip 和 Docker 两条路
本地运行有两种方式。第一种是 pip 安装,执行 pip install "skyvern[all]",然后运行 skyvern quickstart。默认使用 SQLite 数据库,文件在 ~/.skyvern/data.db,不需要 Postgres 或 Docker。想用 Postgres 就传 --database-string=postgresql+psycopg://user:pass@host:5432/dbname,或者不传 --no-postgres 让 quickstart 自己启动 Postgres 容器。第二种是 Docker Compose,克隆仓库后复制 .env.example 为 .env,填上 LLM API key,然后 docker compose up -d,打开 http://localhost:8080。Windows 用户用 pip 路径需要额外装 Rust 和 VS Code 的 C++ 开发工具。注意 Python 版本必须 3.11、3.12 或 3.13,其他版本大概率装不上。
SDK 用法:在 Playwright 上加了四个 AI 命令
Skyvern 的 SDK 是 Playwright 的扩展,直接在 page 对象上增加了四个命令。page.act(prompt) 用自然语言执行动作,比如“点击登录按钮”。page.extract(prompt, schema) 按 JSON schema 提取结构化数据。page.validate(prompt) 返回布尔值,检查页面状态。还有第四个命令在截断的 README 里没写完,但前三个已经足够说明用法。安装分几种:纯 Python SDK 用 pip install skyvern,本地服务器加打包 UI 用 pip install "skyvern[all]",只装 UI 连现有 API 用 pip install "skyvern[ui]" 并设置 VITE_API_BASE_URL。TypeScript 用户可以用 npm install @skyvern/client。这套设计对熟悉 Playwright 的开发者很友好,学习成本低。
已知故障与升级陷阱
README 里明确列了两个坑。一个是 pip install skyvern==1.0.31 会触发 sqlite3.OperationalError: table organizations already exists,解决方法是删掉 ~/.skyvern/data.db 然后升级到 1.0.32 以上。另一个是 1.0.31 的依赖解析冲突,pip 会报 ResolutionImpossible,涉及 litellm 和 fastmcp,升级或改用 uv pip install skyvern。这两个问题都集中在 1.0.31,说明这个版本的发布质量有问题。另外,pip 路径默认 SQLite,适合单机试用,但生产环境并发一高 SQLite 就会成为瓶颈,文档建议用 Postgres。如果你在 1.0.31 上卡住且无法升级,uv 是唯一的绕行方案,这增加了部署复杂度。
云服务与本地版的取舍
Skyvern 提供托管云版本,自带反机器人检测、代理网络和 CAPTCHA 解决器。本地版没有这些,你需要自己处理验证码和 IP 封锁。云服务适合不想管基础设施的人,但代价是你的工作流数据经过第三方。本地版适合对数据隐私敏感的场景,但你要自己搞定 LLM API key 和代理。README 说云版可以并行跑多个实例,本地版没有这个保证。对于需要大量并发采集的团队,云版的托管基础设施可能更省事,但成本会随调用量上升。本地版的好处是可以用自己的模型提供商,只要它兼容 OpenAI 接口。
替代方案:Playwright 脚本与 AutoGPT 式代理
最直接的替代是纯 Playwright 脚本,用 XPath 和 CSS 选择器写死交互。它的优点是延迟低、可控性强、没有模型推理成本,缺点是每个网站都要单独维护脚本,改版就断。另一个极端是 AutoGPT 这类任务驱动代理,它们能自主规划,但没有浏览器操作能力,需要额外接 Playwright。Skyvern 正好在两者中间,它用视觉模型替代选择器,但保留了 Playwright 的执行层。如果你的网站固定且不常改,纯 Playwright 更划算。如果你要自动化的网站千变万化,Skyvern 的通用性才有价值。
维护成本与许可约束
Skyvern 的发布节奏很活跃,最近三个版本 v1.0.49、v1.0.50、v1.0.51 都在一个月内推出,说明项目还在快速迭代。这带来一个现实问题:你依赖的版本可能很快过时,升级时可能遇到像 1.0.31 那样的坑。维护成本还包括 LLM API 的费用,每次页面操作都要调用视觉模型,成本比纯脚本高一个数量级。许可方面,项目采用 AGPL-3.0,这意味着如果你修改了代码并提供网络服务,可能需要开源你的修改。这对内部工具影响不大,但如果你打算把 Skyvern 集成进商业 SaaS 产品,需要仔细评估许可义务。文档没有给出法律建议,这里只是提醒。
编辑结论
适合需要快速自动化多个未知网站、且能接受 AGPL-3.0 许可约束的团队,尤其是那些厌倦了为每个站点编写 XPath 脚本的开发者。不适合对延迟敏感、需要完全离线运行或必须使用非 OpenAI 兼容模型的环境。采用前应先验证三点:你的 LLM 提供商是否支持视觉模型,目标网站的验证码和反爬机制是否在你的代理方案覆盖范围内,以及 AGPL-3.0 对你的分发方式是否构成问题。Skyvern 的价值不在代码稳定,而在它把浏览器自动化的核心从选择器维护转移到了模型推理,这个取舍决定了它只适合愿意为通用性支付推理成本的用户。
社区笔记