把网页操作交给大模型自己完成(Skyvern)

Skyvern 是用 Python 写的浏览器自动化项目,用视觉 LLM 代替 XPath 定位页面元素,输入自然语言指令或工作流定义,输出操作结果与提取数据,同时提供 Playwright 扩展 SDK 和界面工作流构建器。这篇文章按问题、场景、功能、安装、参数、踩坑和同类对照的顺序拆开讲,帮读者判断它适不适合自己的自动化需求。

Skyvern 是用 Python 写的浏览器自动化工具,靠视觉大模型理解网页,输入自然语言指令,输出点击填表等操作与提取到的数据,适合不想维护选择器脚本的人。

网页自动化的老麻烦在选择器。脚本里写死 XPath 或 DOM 路径,网站一改版整段就废,新站上线还要再写一遍适配逻辑。Skyvern 把定位这一步交给视觉 LLM:页面以截图形式送进模型,由模型判断该点哪里、填什么。仓库把它列为优势之一,能操作从未见过的网站,不需要为每个站点写定制代码。

它对外有两种形态。开发者拿到的是 Playwright 扩展 SDK,页面对象上多了 act、extract、validate、prompt 四个 AI 命令,还有一层 page.agent 负责多步任务;不写代码的人用界面里的工作流构建器,把操作步骤拼成可复用的流程。这个仓库当前有 23113 个 Star、2187 个 Fork、269 个开放 Issue,主要语言是 Python,采用 GNU Affero General Public License v3.0 许可证。

Skyvern 仓库首页展示的浏览器自动化示意图

它解决的是什么问题

一个网站没有开放接口,又要反复从上面取数据或提交表单,常见做法有三种:自己写 Playwright 或 Selenium 脚本并维护选择器;用 RPA 软件录制点击回放;找网站方要接口。前两种都把操作绑死在页面结构上,页面一动就要重新调。

Skyvern 的取舍是把「在哪点、填什么」交给模型判断。README 说它受 BabyAGI、AutoGPT 这类任务驱动式 agent 设计启发,额外加的一点是让 agent 通过 Playwright 操作真实浏览器。它内部用一组 agent 分工:理解网站、规划动作、执行动作。页面上没有预设的 XPath 或选择器等着被匹配,所以对改版不敏感,同一套流程也能套到多个结构不同的站点上。

典型使用场景

  • 手里有几十上百个结构相似的网站要跑同一套流程,比如逐个登录查订单状态、下载对账单,人工点一遍不现实,写脚本又要逐站适配。
  • 目标网站只提供网页界面,手上没有可调用的接口,但你要的是页面里的几个字段,不是整页 HTML。
  • 业务侧的运营或客服同学不会编程,却有一条每周都要重复的网页操作流程,想把它交给机器执行。
  • 已经有一套 Python 或 TypeScript 系统,只想在关键几步调用 AI 完成页面判断,不想自己从头搭 agent 循环。

几个常见疑问

能用本地大模型吗?

可以。仓库根目录放了 env.litellm.example 和 env.ollama.example 两份配置样例,说明模型接入走 litellm,可以指向 Ollama 这类本地服务。Issue 区里有用户专门问 ollama 与 litellm 怎么配,那条已经被标记为已解决。

在 Windows 上安装会遇到什么麻烦?

依赖比 Linux 多。除了 Python 3.11、3.12 或 3.13,Windows 还要装 Rust,以及带 C++ 开发工具的 VS Code 和 Windows SDK。Issue 里出现过两类 Windows 问题:在 WSL 的 Docker 里创建浏览器时报出 UnknownErrorWhileCreatingBrowser 一类异常;skyvern quickstart 在 Windows 上因 Psycopg 无法使用 ProactorEventLoop 而中断。两条都已标记为已解决。

能拿它做自动化 UI 测试吗?

仓库里没有这类教程。有用户在 Issue 里提过这个想法,希望官方给出 UI 测试的用法,作者没有把它列为支持场景,该条目前仍处于待解决状态。README 描述的定位是自动化网页工作流。

主要功能

  • Playwright 扩展 SDK:Python 侧用 pip install skyvern,TypeScript 侧用 npm install @skyvern/client。原有 Playwright 能力保留,AI 能力叠加在上面。
  • 页面级 AI 命令:page.act(prompt) 按自然语言执行操作,例如「点击登录按钮」;page.extract(prompt, schema) 按给出的 JSON schema 抽取结构化数据;page.validate(prompt) 判断页面状态并返回 bool;page.prompt(prompt, schema) 直接向模型发提示词并可附带返回 schema。四个命令都挂在 page 对象上。
  • page.agent 高层任务:run_task(prompt) 执行多步任务,login(credential_type, credential_id) 用已存的凭据登录。README 在 login 这一行被截断,本文没有拿到它的完整参数说明。
  • 无代码工作流构建器:随本地服务一起提供,技术与非技术用户都能在界面里把手动流程编排成可重复执行的 workflow。
  • 本地一键启动:pip 安装之后执行 skyvern quickstart,默认用 SQLite 落库,不强制依赖 Postgres 或 Docker。
  • Docker Compose 部署:仓库自带 docker-compose.yml,一条 docker compose up -d 把 Postgres、API 和界面一起拉起来,访问 http://localhost:8080。
  • Skyvern Cloud 托管版:官方托管服务,可以并行运行多个 Skyvern 实例,内置反机器人检测、代理网络和验证码破解。这几项能力在本地自建版本里没有。
  • 凭据管理:工作流可以引用已存储的凭据,Issue 里出现过 Bitwarden 相关报错(Skyvern auth master password is not set),说明凭据后端接了 Bitwarden。

安装与最短示例

两条路径选一条。pip 路径需要 Python 3.11、3.12 或 3.13:

pip install "skyvern[all]"
skyvern quickstart

quickstart 默认使用 SQLite,库文件落在 ~/.skyvern/data.db,不需要 Postgres 和 Docker。想改用本地 Postgres 容器,直接跑 skyvern quickstart(除非加 --no-postgres,否则它会自己起一个容器);连接已有数据库则用 --database-string。

Docker 路径适合不想在本机装 Python 和 Node 的情况:

git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
cp .env.example .env
docker compose up -d

启动前要编辑 .env,把 LLM 的 API key 填进去。起来之后打开 http://localhost:8080。Docker Compose 固定使用自带的 Postgres 服务,不走 SQLite。只想要 SDK 的话,pip install skyvern 就够,不必装服务端。

关键参数

  • --database-string=postgresql+psycopg://user:pass@host:5432/dbname:连接已有 Postgres 数据库。
  • --no-postgres:让 quickstart 不要额外起一个 Postgres 容器。
  • .env 里的 LLM 提供方密钥:Docker 部署必须配置,quickstart --docker-compose 会在文件缺失时从 .env.example 生成。
  • VITE_API_BASE_URL 与 VITE_SKYVERN_API_KEY:单独安装界面包(pip install "skyvern[ui]")去对接已有 API 时使用,后者在 API 需要鉴权时填。
  • env.litellm.example、env.ollama.example:按这两份样例改写模型接入配置。

结果在哪里看

浏览器打开 http://localhost:8080 是主入口,任务、运行记录和工作流都在界面里。本地数据库默认在 ~/.skyvern/data.db。Release 说明里提到,运行结束后会从任务自己的浏览器会话里抓取页面证据,一起写进执行记录。

实际使用中的坑

Issue 区里评论较多的几条集中在环境准备和模型接入上,多数已经修掉。

  • Docker 环境不支持 Claude 模型:早期容器里的依赖组合跑不通 Claude,24 条评论后标记为已解决。
  • Windows WSL Docker 里创建浏览器失败:新建任务时报 UnknownErrorWhileCreatingBrowser,17 条评论,已解决。
  • Windows 上 quickstart 装不下去:Psycopg 无法使用 ProactorEventLoop,13 条评论,已解决。
  • UI 自动化测试没有教程:有用户希望官方补充这个用法,12 条评论,目前仍是待解决。
  • README 自己列了两个安装期 bug:pip install skyvern==1.0.31 会撞上 sqlite3.OperationalError: table organizations already exists,解法是删掉 ~/.skyvern/data.db 并升级到 1.0.32 以上;同版本的 ResolutionImpossible 依赖冲突(litellm 与 fastmcp)可以改用 uv pip install skyvern 绕过。

和同类的差别在哪

下面三个项目在浏览器自动化这条线上各有侧重,选型时看的是你要解决的那一环在哪。

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
Skyvern要把一批结构各异的网站流程自动化、又不愿长期维护选择器的开发者与业务团队pip 安装走单机 SQLite,或 Docker Compose 起完整服务自建版本不带反爬、代理和验证码处理,这些只在云版本里;许可证是 AGPL-3.0目标是让模型理解页面并完成多步操作,而不是单纯过检测Skyvern
CloakHQ/CloakBrowser被反爬拦在门外、需要浏览器本身不被识别的采集者素材未说明解决的是隐身与检测对抗,工作流编排与自然语言任务理解不在其范围目标站点有较强的机器人检测,能不能打开页面才是第一道门槛CloakHQ/CloakBrowser
browser-use/workflow-use想把重复操作固化成可反复运行的自动化流程(RPA 2.0)的人素材未说明定位在工作流创建与运行,页面理解方式与本项目不同流程步骤已经稳定、不需要模型临场判断时,固定流程更省成本browser-use/workflow-use

Skyvern 的短板在站点对抗这一侧。自建版本里没有反爬、代理和验证码处理,面对机器人检测严格的站点,CloakBrowser 这种从浏览器内核层面做隐身的方案更对路。另外它采用 AGPL-3.0,把改造过的代码嵌进闭源产品对外提供服务之前,要先看清许可证义务。流程步骤完全固定的场景,用不着一套会在运行时推理的 agent。

合规前提

Skyvern 代替人操作浏览器,执行过程中可能涉及登录账号、批量提交表单、抓取页面内容。使用范围限于自有资产,或者已经拿到书面授权的目标站点。对第三方网站跑自动化操作,可能违反对方的服务条款,触发账号封禁或 IP 限制;批量获取数据在不同地区还牵涉数据保护法规。云版本自带验证码破解与反机器人检测能力,把这些能力用于未授权目标,风险会更直接。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.9 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)10.0 / 10
社区响应(权重 15%)9.1 / 10
文档质量(权重 15%)10.0 / 10
发布节奏(权重 10%)9.8 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

Skyvern 值得留下的地方在于把「选择器维护」这个老痛点连同取舍一起讲清:视觉 LLM 定位、Playwright 扩展 SDK、无代码工作流构建器、pip 与 Docker 两条安装路径,以及一批已解决的 Windows、Ollama、Claude 接入问题。适合正在评估网页自动化方案、想知道自建版本缺什么的开发者。

Star、Fork、Issue 数等指标来自仓库公开页面,安装参数、Issue 状态与功能说明来自项目 README 和仓库 Issue,文中的数据来自原作者公开披露,诀.com 未独立验证;文中不含实测或亲测结论,实际安装与运行结果不保证复现。

项目来源与说明

开源项目:Skyvern-AI(Skyvern-AI)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库