
skyvern v1.0.50
使用AI自动化基于浏览器的工作流程
🐉 使用LLM和计算机视觉自动化基于浏览器的工作流程 🐉
Skyvern 使用LLM和计算机视觉来自动化基于浏览器的工作流程。它提供了一个与Playwright兼容的SDK,在Playwright之上增加了AI功能,并且还包含一个无代码工作流构建器,帮助技术用户和非技术用户在任何网站上自动化手动工作流程,取代脆弱或不可靠的自动化方案。
传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖DOM解析和基于XPath的交互,而一旦网站布局发生变化,这些脚本就会失效。
Skyvern不再仅依赖代码定义的XPath交互,而是利用视觉LLM来学习和与网站交互。
工作原理
Skyvern的灵感来源于BabyAGI和AutoGPT所推广的基于任务驱动的自主代理设计——但有一个重大优势:我们赋予Skyvern使用浏览器自动化库(如Playwright)与网站交互的能力。
Skyvern通过一组代理来理解网站,并规划和执行其操作:
这种方法有几个优点:
- Skyvern能够在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流所需的操作,而无需任何自定义代码
- Skyvern对网站布局变化具有抵抗力,因为我们的系统在导航时没有预定义的XPath或其他选择器
- Skyvern能够将单个工作流应用于大量网站,因为它能够推理完成工作流所需的交互 详细的技术报告可以在这里找到。
演示
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
快速开始
Skyvern Cloud
Skyvern Cloud 是Skyvern的托管云版本,让您无需担心基础设施即可运行Skyvern。它允许并行运行多个Skyvern实例,并附带反机器人检测机制、代理网络和验证码解决器。
如果您想试用,请访问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管理的本地设置)
所需依赖:
此外,对于 Windows:
- Rust
- 带有C++开发工具和Windows SDK的VS Code
1. 安装 Skyvern```bash
pip install "skyvern[all]"
#### 2. 运行 Skyvern```bash
skyvern quickstart
pip 快速入门默认使用 SQLite。如需使用本地 Postgres 容器,请运行 skyvern quickstart --postgres。
选项B:Docker Compose
如果您希望将所有组件容器化(Postgres、API、UI),并且不想在本地安装 Python/Node,请使用此选项。
- 安装 Docker Desktop
- 克隆仓库: ```bash
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
- 在
.env中配置你的LLM提供商(如果缺失,下面的quickstart --docker-compose命令将从.env.example创建它): ```bash cp .env.example .env # if not already creatededit .env to add your LLM API key
- 启动全部: ```bash
docker compose up -d
- 打开 http://localhost:8080
故障排除
(sqlite3.OperationalError) table organizations already exists — 你遇到了 pip install skyvern==1.0.31 中一个已知的错误。修复方法:```bash
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安装:```bash
uv pip install skyvern
pip install skyvern 失败并出现 ResolutionImpossible (litellm / fastmcp) — 你遇到了 1.0.31 中的依赖解析冲突。请升级到 1.0.32+ 或使用 uv:uv pip install skyvern。
SDK
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
AI 驱动的页面命令
Skyvern 在页面对象上添加了四个核心 AI 命令:
| 命令 | 描述 |
|---|---|
page.act(prompt) | 使用自然语言执行操作(例如,“点击登录按钮”) |
page.extract(prompt, schema) | 从页面提取结构化数据,可带 JSON schema |
page.validate(prompt) | 验证页面状态,返回 bool(例如,“检查用户是否已登录”) |
page.prompt(prompt, schema) | 向 LLM 发送任意提示,可带响应 schema |
此外,page.agent 提供更高级的工作流命令:
| 命令 | 描述 |
|---|---|
page.agent.run_task(prompt) | 执行复杂的多步骤任务 |
page.agent.login(credential_type, credential_id) | 使用存储的凭据进行身份验证(Skyvern、Bitwarden、1Password) |
page.agent.download_files(prompt) | 导航并下载文件 |
page.agent.run_workflow(workflow_id) | 执行预构建的工作流 |
AI 增强的 Playwright 操作
所有标准 Playwright 操作都支持可选的 prompt 参数,用于 AI 驱动的元素定位:
| 操作 | Playwright | AI 增强 |
|---|---|---|
| 点击 | page.click("#btn") | page.click(prompt="点击登录按钮") |
| 填充 | page.fill("#email", "[email protected]") | page.fill(prompt="邮箱字段", value="[email protected]") |
| 选择 | page.select_option("#country", "US") | page.select_option(prompt="国家下拉框", value="US") |
| 上传 | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="上传区域", files="doc.pdf") |
三种交互模式:```python
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")
### 核心 AI 命令 - 示例```python
# 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")
快速入门示例
通过UI运行:```bash skyvern run all
打开 http://localhost:8080 即可通过网页界面运行任务。如果打包的 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`。
**Python SDK:**```python
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
TypeScript SDK:```typescript 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();
**简单任务执行:**```python
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
高级用法
控制你自己的浏览器(Chrome)
让 Skyvern 控制你现有的 Chrome 浏览器——包括你所有的 Cookies、登录状态和扩展程序。
步骤1:在 Chrome 中启用远程调试
- 打开 Chrome 并访问
chrome://inspect/#remote-debugging - 点击 启用 启动调试服务器
- 你应该看到:服务器正在运行于:127.0.0.1:9222
[!TIP]
skyvern init browser命令可以自动完成此操作——它会打开chrome://inspect/#remote-debugging,等待你启用它,并保存配置。
步骤2:连接 Skyvern
选项 A — Python Code:```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 文件中添加两个变量:```bash
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222
重启 Skyvern 服务 skyvern run all,并通过 UI 或代码运行任务
将 Skyvern Cloud 连接到你的本地浏览器
让 Skyvern Cloud 控制你机器上运行的 Chrome 浏览器 —— 包括你现有的所有 cookie、登录信息和扩展。适用于自动化那些你已经登录或位于 VPN 后的站点。```bash
One command to start Chrome + create a tunnel to Skyvern Cloud
skyvern browser serve --tunnel
然后在你的任务中使用隧道 URL:```python
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",
)
[!WARNING] 始终使用
--api-key通过隧道暴露浏览器。否则,任何人只要拥有该 URL 即可完全控制您的浏览器。请参阅安全文档。
请参阅完整文档了解所有选项、手动隧道设置和故障排除。
从您的运行中获取一致的输出模式
您可以通过添加 data_extraction_schema 参数来实现这一点:```python
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" } } } )
### 调试问题的有用命令```bash
# 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%。技术报告与评估可在此处查阅:链接
WRITE 任务(例如填写表单、登录、下载文件等)的性能
Skyvern 在 WRITE 任务(例如填写表单、登录、下载文件等)上表现最佳,这些任务主要用于 RPA(机器人流程自动化)相关操作。
Skyvern 功能
Skyvern 任务
任务是 Skyvern 中的基本构建单元。每个任务都是向 Skyvern 发出的单一请求,指示它浏览网站并完成特定目标。
任务需要你指定 url、prompt,并可选择性地包含 data schema(如果你希望输出符合特定模式)和 error codes(如果你希望 Skyvern 在特定情况下停止运行)。
Skyvern 工作流
工作流是一种将多个任务链接在一起形成连贯工作单元的方式。
例如,如果你想下载所有日期在 1 月 1 日之后的发票,你可以创建一个工作流:首先导航到发票页面,然后筛选出仅显示 1 月 1 日之后的发票,提取所有符合条件的发票列表,并逐个迭代下载每张发票。
另一个例子是,如果你希望自动化从电商商店购买产品的流程,可以创建一个工作流:首先导航到目标产品并将其加入购物车;其次,导航到购物车并验证购物车状态;最后,通过结账流程购买商品。
支持的工作流功能包括:
- 浏览器任务
- 浏览器动作
- 数据提取
- 验证
- For 循环
- 文件解析
- 发送电子邮件
- 文本提示
- HTTP 请求块
- 自定义代码块
- 上传文件到块存储
- (即将支持)条件语句
实时流
Skyvern 允许你将浏览器的视窗实时流式传输到本地机器,这样你就能看到 Skyvern 在网页上执行的每一个操作。这对于调试、理解 Skyvern 如何与网站交互以及在必要时进行干预非常有用。
表单填写
Skyvern 原生支持填写网站上的表单输入。通过 navigation_goal 传入信息,Skyvern 能够理解信息并相应地填写表单。
数据提取
Skyvern 还能够从网站中提取数据。
你也可以直接在提示中指定 data_extraction_schema,以 jsonc 格式告诉 Skyvern 你希望从网站中提取哪些具体数据。Skyvern 的输出将根据提供的模式进行结构化。
文件下载
Skyvern 还能够从网站下载文件。所有下载的文件会自动上传到块存储(如果已配置),你可以通过用户界面访问它们。
身份验证
Skyvern 支持多种不同的身份验证方法,使得在登录后自动化任务变得更加容易。如果你想尝试,请通过电子邮件或Discord联系我们。
🔐 2FA 支持(TOTP)
Skyvern 支持多种不同的双重验证方法,允许你自动化需要双重验证的工作流。
示例包括:
- 基于二维码的 2FA(例如 Google Authenticator、Authy)
- 基于电子邮件的 2FA
- 基于短信的 2FA
🔐 在此了解有关 2FA 支持的更多信息:链接
密码管理器集成
Skyvern 目前支持以下密码管理器集成:
- Bitwarden
- 自定义凭据服务(HTTP API)
- 1Password
- LastPass
模型上下文协议(MCP)
Skyvern 支持模型上下文协议(MCP),允许你使用任何支持 MCP 的 LLM。
请在此查阅 MCP 文档:链接
Zapier / Make.com / N8N 集成
Skyvern 支持 Zapier、Make.com 和 N8N,允许你将 Skyvern 工作流连接到其他应用。
🔐 在此了解有关 2FA 支持的更多信息:链接
Skyvern 的真实世界示例
我们很高兴看到 Skyvern 在真实场景中的应用。以下是一些 Skyvern 如何用于自动化工作流的真实示例。欢迎提交 PR 添加你自己的示例!
在众多不同网站上下载发票
自动化求职申请流程
为制造公司自动化材料采购
导航到政府网站注册账户或填写表单
填写随机的联系我们表单
从任意语言的保险提供商获取保险报价
贡献者设置
请确保已安装 uv。
- 运行以下命令创建虚拟环境 (
.venv)uv sync --group dev - 执行初始服务器配置
uv run skyvern quickstart - 在浏览器中访问
http://localhost:8080开始使用用户界面 Skyvern CLI 支持 Windows、WSL、macOS 和 Linux 环境。
文档
更详细的文档可以在我们的 📕 文档页面 上找到。如果发现任何不清楚或缺失的内容,请通过提交 Issue 或发送邮件加入 Discord 联系我们。
支持的 LLM
| 提供商 | 支持的模型 |
|---|---|
| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |
| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |
| Azure OpenAI | 部署到 Azure 订阅中的任何 GPT 模型 |
| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |
| Gemini | Gemini 3.1 Pro, Gemini 3 Flash, Gemini 2.5 Pro/Flash |
| Ollama | 通过 Ollama 运行任何本地托管的模型 |
| OpenRouter | 通过 OpenRouter 访问模型 |
| 兼容 OpenAI | 任何遵循 OpenAI API 格式的自定义 API 端点(通过 liteLLM) |
有关详细的 LLM 配置,包括所有可用模型密钥、环境变量和多模型设置,请参阅 LLM 配置文档。
贡献
我们欢迎 PR 和建议!请不要犹豫提交 PR/Issue,或发送邮件加入 Discord 联系我们。 请查看我们的贡献指南和 “求助”问题以开始贡献!
如果你想与 Skyvern 仓库交流,获取关于其结构、如何在此基础上构建以及如何解决使用问题的高层概览,请查看 Code Sage。
遥测
默认情况下,Skyvern 会收集基本的使用统计数据,以帮助我们了解 Skyvern 的使用情况。如果你想选择退出遥测,请将 SKYVERN_TELEMETRY 环境变量设置为 false。
许可证
Skyvern 的开源仓库通过托管云服务获得支持。所有驱动 Skyvern 的核心逻辑都包含在此开源仓库中,并根据 AGPL-3.0 许可证 进行许可,但托管云服务中可用的反机器人措施除外。
如果你对许可有任何疑问或顾虑,请联系我们,我们很乐意提供帮助。