Skyvern用LLM和计算机视觉代替传统选择器做网页自动化,可自适应UI变化。对RPA、测试自动化和爬虫开发者很实用。
Skyvern 使用 LLM 和计算机视觉来自动化基于浏览器的工作流。它提供了一个 Playwright 兼容的 SDK,在 Playwright 之上添加了 AI 功能,同时还提供了一个无代码工作流构建器,帮助技术和非技术用户在任何网站上自动化手动工作流,替代脆弱或不可靠的自动化解决方案。
传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖于 DOM 解析和基于 XPath 的交互,一旦网站布局改变就会破坏。
Skyvern 不仅依赖于代码定义的 XPath 交互,而是依靠视觉 LLM 来学习和与网站交互。
Skyvern 的灵感来自于 BabyAGI 和 AutoGPT 推广的任务驱动自主智能体设计——还有一个重大优势:我们赋予 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。
Skyvern 使用一群智能体来理解网站,规划和执行其操作:
这种方法有几个优势:
Skyvern 可以在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流所需的操作,无需任何自定义代码
Skyvern 对网站布局变化有抵抗力,因为没有预先确定的 XPath 或其他选择器是我们的系统在导航时寻找的
Skyvern 能够将单个工作流应用于大量网站,因为它能够推理完成工作流所需的交互
详细的技术报告可以在这里找到。
Skyvern Cloud 是 Skyvern 的托管云版本,允许你在无需担心基础设施的情况下运行 Skyvern。它允许你并行运行多个 Skyvern 实例,并附带反机器人检测机制、代理网络和 CAPTCHA 求解器。
如果你想尝试,请导航到 app.skyvern.com 并创建一个账户。
选择你偏好的设置方法:
数据库默认值:skyvern quickstart 和 skyvern run server 默认使用位于 ~/.skyvern/data.db 的 SQLite 数据库,所以 pip 路径无需 Postgres 或 Docker 即可工作。要改用 Postgres,传递 --postgres 用于本地容器,或传递 --database-string 用于现有数据库。Docker Compose 始终使用捆绑的 Postgres 服务。
选项 A:pip 安装(推荐用于 Python 托管的本地设置)
Python 3.11、3.12 或 3.13
另外,对于 Windows:
VS Code 与 C++ 开发工具和 Windows SDK
pip install "skyvern[all]"
skyvern quickstart
pip quickstart 默认使用 SQLite。对于本地 Postgres 容器,运行 skyvern quickstart --postgres。
选项 B:Docker Compose
如果你想要所有东西都容器化(Postgres、API、UI)并且不想在本地安装 Python/Node,请使用此选项。
安装 Docker Desktop
克隆仓库:git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
在 .env 中配置你的 LLM 提供者(下面的 quickstart --docker-compose 命令如果缺少会从 .env.example 创建):cp .env.example .env # 如果还没有创建 然后 # 编辑 .env 以添加你的 LLM API 密钥
cp .env.example .env # 如果还没有创建
# 编辑 .env 以添加你的 LLM API 密钥
启动所有内容:docker compose up -d
docker compose up -d
(sqlite3.OperationalError) table organizations already exists — 你遇到了 pip install skyvern==1.0.31 中的一个已知 bug。修复:
rm ~/.skyvern/data.db # 移除残留的 SQLite 文件
pip install --upgrade skyvern # 1.0.32+ 包含修复
skyvern quickstart
如果你仍在 1.0.31 上且无法升级,改用 uv 安装:
uv pip install skyvern
pip install skyvern 失败并显示 ResolutionImpossible (litellm / fastmcp) — 你遇到了 1.0.31 中的依赖解析冲突。要么升级到 1.0.32+,要么使用 uv:uv pip install skyvern。
Skyvern 是一个 Playwright 扩展,添加了 AI 驱动的浏览器自动化。它为你提供了 Playwright 的全部功能以及额外的 AI 能力——使用自然语言提示来与元素交互、提取数据和自动化复杂的多步工作流。
Python SDK / 云 API:pip install skyvern
本地 server + 打包的 UI:pip install "skyvern[all]" 然后运行 skyvern quickstart
本地 server + 打包的 UI 与 Postgres:pip install "skyvern[all]" 然后运行 skyvern quickstart --postgres
现有 API 的打包 UI:pip install "skyvern[ui]" 然后运行 skyvern run ui --api-url <api-url> --api-key <api-key>
TypeScript:npm install @skyvern/client
Skyvern 在页面对象上直接添加了四个核心 AI 命令:
此外,page.agent 提供了更高级别的工作流命令:
所有标准的 Playwright 操作都支持可选的 prompt 参数用于 AI 驱动的元素定位:
三种交互模式:
# 1. 传统 Playwright - CSS/XPath 选择器
await page.click("#submit-button")
# 2. AI 驱动 - 自然语言
await page.click(prompt="Click the green Submit button")
# 3. AI 回退 - 先尝试选择器,如果失败则回退到 AI
await page.click("#submit-btn", prompt="Click the Submit button")
# act - 使用自然语言执行操作
await page.act("Click the login button and wait for the dashboard to load")
# extract - 使用可选的 JSON schema 提取结构化数据
result = await page.extract("Get the product name and price")
result = await page.extract(
prompt="Extract order details",
schema={"order_id": "string", "total": "number", "items": "array"}
)
# validate - 检查页面状态(返回布尔值)
is_logged_in = await page.validate("Check if the user is logged in")
# prompt - 向 LLM 发送任意提示
summary = await page.prompt("Summarize what's on this page")
skyvern run all
导航到 http://localhost:8080 通过 web 界面运行任务。如果打包的 UI 缺失,skyvern run ui 会提供安装匹配的 UI 包。对于非交互式设置,使用 skyvern run ui --install-ui 或 skyvern run all --install-ui。
要仅针对现有的 Skyvern API 运行打包的 UI,安装 skyvern[ui] 并传递 --api-url;CLI 会从 API URL 推断 --wss-url,除非你覆盖它。你也可以在运行 skyvern run ui 之前设置 VITE_API_BASE_URL、VITE_WSS_BASE_URL、VITE_ARTIFACT_API_BASE_URL、VITE_SKYVERN_API_KEY 和 VITE_BROWSER_STREAMING_MODE。
from skyvern import Skyvern
# 本地模式
skyvern = Skyvern.local()
# 或连接到 Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")
# 启动浏览器并获取页面
browser = await skyvern.launch_cloud_browser()
page = await browser.get_working_page()
# 混合 Playwright 和 AI 驱动的操作
await page.goto("https://example.com")
await page.click("#login-button") # 传统 Playwright
await page.agent.login(credential_type="skyvern", credential_id="cred_123") # AI 登录
await page.click(prompt="Add first item to cart") # AI 增强的 click
await page.agent.run_task("Complete checkout with: John Snow, 12345") # AI 任务
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "your-api-key" });
const browser = await skyvern.launchCloudBrowser();
const page = await browser.getWorkingPage();
// 混合 Playwright 和 AI 驱动的操作
await page.goto("https://example.com");
await page.click("#login-button"); // 传统 Playwright
await page.agent.login("skyvern", { credentialId: "cred_123" }); // AI 登录
await page.click({ prompt: "Add first item to cart" }); // AI 增强的 click
await page.agent.runTask("Complete checkout with: John Snow, 12345"); // AI 任务
await browser.close();
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
让 Skyvern 控制你现有的 Chrome 浏览器——保留你所有的 cookies、登录信息和扩展。
打开 Chrome 并导航到 chrome://inspect/#remote-debugging
点击 Enable 启动调试服务器
你应该看到:Server running at: 127.0.0.1:9222
skyvern init browser 命令可以自动做这件事——它打开 chrome://inspect/#remote-debugging,等待你启用它,并保存配置。
选项 A — Python 代码:
from skyvern import Skyvern
skyvern = Skyvern(
base_url="http://localhost:8000",
api_key="YOUR_API_KEY",
browser_address="http://127.0.0.1:9222",
)
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
)
选项 B — Skyvern 服务:
向你的 .env 文件添加两个变量:
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
重启 Skyvern 服务 skyvern run all,通过 UI 或代码运行任务
让 Skyvern Cloud 控制运行在你机器上的 Chrome 浏览器 — 保留所有现有的 cookie、登录状态和扩展。适用于自动化已登录的网站或在 VPN 后的场景。
# One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
然后在你的任务中使用隧道 URL:
from skyvern import Skyvern
skyvern = Skyvern(api_key="your-api-key")
task = await skyvern.run_task(
prompt="Download the latest invoice from my account",
browser_address="https://abc123.ngrok-free.dev",
)
通过隧道暴露浏览器时务必使用 --api-key。否则拥有该 URL 的任何人都能完全控制你的浏览器。参见安全文档。
详见完整文档了解所有选项、手动隧道设置和故障排除。
可以通过添加 data_extraction_schema 参数实现:
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
data_extraction_schema={
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the top post"
},
"url": {
"type": "string",
"description": "The URL of the top post"
},
"points": {
"type": "integer",
"description": "Number of points the post has received"
}
}
}
)
# Launch the Skyvern Server Separately*
skyvern run server
# Launch the Skyvern UI
skyvern run ui
# Check status of the Skyvern service
skyvern status
# Stop the Skyvern service
skyvern stop all
# Stop the Skyvern UI
skyvern stop ui
# Stop the Skyvern Server Separately
skyvern stop server
Skyvern 在 WebBench 基准测试上达到了 SOTA(最先进)性能,准确率为 64.4%。技术报告和评估详见这里。
Skyvern 在 WRITE 任务(如填表、登录、下载文件等)上性能最佳,这些任务主要用于 RPA(机器人流程自动化)相关场景。
任务是 Skyvern 的基本构成单元。每个任务是对 Skyvern 的单个请求,指示它在网站上导航并完成特定目标。
任务要求你指定一个 url 和提示语,可选择包含数据 schema(如果你希望输出符合特定 schema)和错误代码(如果你希望 Skyvern 在特定情况下停止运行)。
工作流是将多个任务链接在一起形成一个有机的工作单元的方式。
例如,如果你想下载所有 1 月 1 日之后的发票,你可以创建一个工作流,首先导航到发票页面,然后筛选只显示 1 月 1 日之后的发票,提取所有合格发票的列表,然后遍历每张发票进行下载。
另一个例子是,如果你想自动化从电子商务商店购买产品,你可以创建一个工作流,首先导航到所需产品,然后将其添加到购物车。其次,它会导航到购物车并验证购物车状态。最后,它会通过结账流程购买商品。
支持的工作流功能包括:
上传文件到块存储
(即将推出)条件判断
Skyvern 允许你将浏览器的视口直播到本地机器,这样你可以准确看到 Skyvern 在网页上的操作。这对调试和理解 Skyvern 如何与网站交互以及在必要时进行干预非常有用。
Skyvern 原生支持填写网站表单输入。通过 navigation_goal 传入信息,Skyvern 可以理解这些信息并相应地填写表单。
Skyvern 也能从网站提取数据。
你也可以直接在主提示中指定 data_extraction_schema,以 jsonc 格式告诉 Skyvern 你想从网站中提取的确切数据。Skyvern 的输出将按照提供的 schema 进行结构化。
Skyvern 也能从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),你可以通过 UI 访问它们。
Skyvern 支持多种不同的认证方式,使得自动化登录后的任务更容易。如果你想尝试,请通过电子邮件或 Discord 与我们联系。
Skyvern 支持多种不同的双因素认证方法,允许你自动化需要 2FA 的工作流。
🔐 在这里了解更多关于 2FA 支持的信息。
Skyvern 目前支持以下密码管理器集成:
Skyvern 支持 Model Context Protocol (MCP),允许你使用任何支持 MCP 的 LLM。
详见 MCP 文档。
Skyvern 支持 Zapier、Make.com 和 N8N,允许你将 Skyvern 工作流连接到其他应用。
🔐 在这里了解更多关于 2FA 支持的信息。
我们很高兴看到 Skyvern 在实际应用中的使用。以下是 Skyvern 在真实世界中用于自动化工作流的一些例子。欢迎提交 PR 添加你自己的例子!
在众多不同的网站上下载发票
预订演示以实时观看
自动化求职申请流程
为制造公司自动化物料采购
导航到政府网站注册账户或填写表单
填写随机的"联系我们"表单
以任何语言从保险提供商获取保险报价
确保已安装 uv。
运行此命令创建虚拟环境(.venv)
uv sync --group dev
执行初始服务器配置
uv run skyvern quickstart
在浏览器中导航到 http://localhost:8080 以开始使用 UI。Skyvern CLI 支持 Windows、WSL、macOS 和 Linux 环境。
更详尽的文档可以在我们的 📕 文档页面找到。如果有不清楚或缺失的地方,请通过开启 issue 或通过电子邮件或 Discord 与我们联系。
详见 LLM 配置文档了解详细的 LLM 配置,包括所有可用的模型密钥、环境变量和多模型设置。
我们欢迎 PR 和建议!不要犹豫,开启 PR/issue 或通过电子邮件或 Discord 与我们联系。请查看我们的贡献指南和"Help Wanted"问题以开始!
如果你想与 skyvern 仓库交流以了解它的结构概览、如何基于它进行开发以及如何解决使用问题,请查看 Code Sage。
默认情况下,Skyvern 会收集基本的使用统计信息来帮助我们了解 Skyvern 的使用方式。如果你想退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
Skyvern 的开源仓库由托管云支持。Skyvern 的所有核心逻辑都在本开源仓库中,采用 AGPL-3.0 许可证,除了在我们托管云方案中提供的反机器人措施外。
如果你对许可证有任何疑问或顾虑,请与我们联系,我们很乐意帮助。