YC 孵化的 Skyvern 是生产级浏览器自动化 Agent,可用于测试、爬虫、RPA。社区热度最高,开箱即用。
🐉 使用 LLM 和计算机视觉自动化基于浏览器的工作流 🐉
Skyvern 使用 LLM 和计算机视觉自动化基于浏览器的工作流。它提供了一个与 Playwright 兼容的 SDK,在 Playwright 之上增加 AI 功能;同时还提供无代码工作流构建器,帮助技术和非技术用户在任意网站上自动化手动工作流,取代脆弱或不可靠的自动化解决方案。
传统的浏览器自动化方法需要针对网站编写自定义脚本,通常依赖 DOM 解析和基于 XPath 的交互,而网站布局一旦发生变化,这些脚本便会失效。
Skyvern 并不只依赖由代码定义的 XPath 交互,而是借助视觉 LLM 来理解网站并与之交互。
Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动型自主 AI 智能体设计,但有一项重要增强:我们赋予了 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。
Skyvern 使用一组 AI 智能体来理解网站,并规划和执行操作:
这种方法具有以下几个优势:
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 服务。
Python 3.11、3.12 或 3.13
此外,Windows 还需要:
VS Code,以及 C++ 开发工具和 Windows SDK
pip install "skyvern[all]"
skyvern quickstart
pip 快速启动默认使用 SQLite。若要使用本地 Postgres 容器,请运行 skyvern quickstart --postgres。
如果你希望将所有内容都容器化(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 # if not already created # edit .env to add your LLM API key
cp .env.example .env # if not already created
# edit .env to add your LLM API key
启动所有服务:docker compose up -d
docker compose up -d
打开 http://localhost:8080
(sqlite3.OperationalError) table organizations already exists——你遇到了 pip install skyvern==1.0.31 中的一个已知错误。修复方法:
rm ~/.skyvern/data.db # remove the leftover SQLite file
pip install --upgrade skyvern # 1.0.32+ contains the fix
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
本地服务器 + 打包 UI:pip install "skyvern[all]",然后运行 skyvern quickstart
使用 Postgres 的本地服务器 + 打包 UI: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 直接在 page 对象上增加了四个核心 AI 命令:
此外,page.agent 还提供了更高层级的工作流命令:
所有标准 Playwright 操作都支持可选的 prompt 参数,用于通过 AI 定位元素:
三种交互模式:
# 1. Traditional Playwright - CSS/XPath selectors
await page.click("#submit-button")
# 2. AI-powered - natural language
await page.click(prompt="Click the green Submit button")
# 3. AI fallback - tries selector first, falls back to AI if it fails
await page.click("#submit-btn", prompt="Click the Submit button")
# act - Perform actions using natural language
await page.act("Click the login button and wait for the dashboard to load")
# extract - Extract structured data with optional 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 - Check page state (returns bool)
is_logged_in = await page.validate("Check if the user is logged in")
# prompt - Send arbitrary prompts to the 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。
若只想运行打包 UI 并连接到现有 Skyvern API,请安装 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
# Local mode
skyvern = Skyvern.local()
# Or connect to Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")
# Launch browser and get page
browser = await skyvern.launch_cloud_browser()
page = await browser.get_working_page()
# Mix Playwright with AI-powered actions
await page.goto("https://example.com")
await page.click("#login-button") # Traditional Playwright
await page.agent.login(credential_type="skyvern", credential_id="cred_123") # AI login
await page.click(prompt="Add first item to cart") # AI-augmented click
await page.agent.run_task("Complete checkout with: John Snow, 12345") # AI task
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "your-api-key" });
const browser = await skyvern.launchCloudBrowser();
const page = await browser.getWorkingPage();
// Mix Playwright with AI-powered actions
await page.goto("https://example.com");
await page.click("#login-button"); // Traditional Playwright
await page.agent.login("skyvern", { credentialId: "cred_123" }); // AI login
await page.click({ prompt: "Add first item to cart" }); // AI-augmented click
await page.agent.runTask("Complete checkout with: John Snow, 12345"); // AI task
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 浏览器,并保留其中的所有 Cookie、登录状态和扩展程序。
打开 Chrome 并前往 chrome://inspect/#remote-debugging
点击 Enable 启动调试服务器
你应该会看到:Server running at: 127.0.0.1:9222
skyvern init browser 命令可以自动完成这一过程——它会打开 chrome://inspect/#remote-debugging,等待你启用远程调试,然后保存配置。
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",
)
在你的 .env 文件中添加两个变量:
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
让 Skyvern Cloud 控制运行在你机器上的 Chrome 浏览器——带上所有现有的 cookies、登录状态和扩展。对于自动化你已经登录或位于 VPN 后的网站很有用。
# 一条命令启动 Chrome + 创建到 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"
}
}
}
)
# 单独启动 Skyvern 服务器*
skyvern run server
# 启动 Skyvern UI
skyvern run ui
# 检查 Skyvern 服务的状态
skyvern status
# 停止 Skyvern 服务
skyvern stop all
# 停止 Skyvern UI
skyvern stop ui
# 单独停止 Skyvern 服务器
skyvern stop server
Skyvern 在 WebBench 基准测试上具有 SOTA 性能,准确率为 64.4%。技术报告 + 评估可以在这里找到
Skyvern 在 WRITE 任务(例如填表单、登录、下载文件等)上性能最佳,主要用于 RPA(机器人流程自动化)相邻任务。
任务是 Skyvern 内的基本构建块。每个任务是对 Skyvern 的单个请求,指示它在网站上导航并完成特定目标。
任务要求你指定 url、prompt,并可以选择包括数据 schema(如果你希望输出符合特定 schema)和错误代码(如果你希望 Skyvern 在特定情况下停止运行)。
工作流是将多个任务链接在一起以形成一个内聚的工作单元的方式。
例如,如果你想下载所有日期新于 1 月 1 日的发票,你可以创建一个工作流,首先导航到发票页面,然后筛选只显示日期新于 1 月 1 日的发票,提取所有符合条件的发票列表,并遍历每个发票下载它。
另一个例子是,如果你想自动化从电子商务商店购买产品,你可以创建一个工作流,首先导航到所需产品,然后将其添加到购物车。其次,它将导航到购物车并验证购物车状态。最后,它将经历结账过程来购买商品。
支持的工作流功能包括:
上传文件到块存储
(即将推出)条件语句
Skyvern 允许你直播浏览器视口到本地机器,以便你可以看到 Skyvern 在网络上的确切行为。这对于调试和理解 Skyvern 如何与网站交互以及在必要时进行干预很有用。
Skyvern 原生能够填充网站上的表单输入。通过 navigation_goal 传入信息将允许 Skyvern 理解信息并相应地填充表单。
Skyvern 也能够从网站中提取数据。
你还可以在主 prompt 中直接指定 data_extraction_schema,以告诉 Skyvern 你想从网站中提取的确切数据,采用 jsonc 格式。Skyvern 的输出将根据提供的 schema 进行结构化。
Skyvern 也能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),你可以通过 UI 访问它们。
Skyvern 支持多种身份验证方法,以便更轻松地自动化登录后的任务。如果你想尝试,请通过电子邮件或 discord 联系我们。
🔐 2FA 支持 (TOTP)
Skyvern 支持多种 2FA 方法,以便你可以自动化需要 2FA 的工作流。
基于二维码的 2FA(例如 Google Authenticator、Authy)
🔐 在这里了解更多关于 2FA 支持。
Skyvern 目前支持以下密码管理器集成:
自定义凭证服务 (HTTP API)
Skyvern 支持模型上下文协议 (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 环境。
更广泛的文档可以在我们的 📕 文档页面上找到。如果有不清楚或缺少的内容,请通过打开问题或通过电子邮件或 discord 与我们联系。
有关详细的 LLM 配置,包括所有可用的模型密钥、环境变量和多模型设置,请参阅 LLM 配置文档。
我们欢迎 PR 和建议!不要犹豫,打开 PR/issue 或通过电子邮件或 discord 与我们联系。请查看我们的贡献指南和"寻求帮助"问题来开始!
如果你想与 skyvern 仓库聊天以获得它的高级概览、如何基于它构建以及如何解决使用问题,请查看 Code Sage。
默认情况下,Skyvern 收集基本使用统计信息以帮助我们了解 Skyvern 的使用方式。如果你想退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
Skyvern 的开源仓库由托管云支持。Skyvern 的所有核心逻辑都在此开源仓库中提供,采用 AGPL-3.0 许可证,除了我们托管云产品中提供的反机器人措施。
如果你对许可有任何疑问或疑虑,请联系我们,我们很乐意帮助。