返回更新列表
新发布Jul 24, 2026

skyvern v1.0.47

使用AI自动化基于浏览器的工作流程

分享


🐉 使用LLM和计算机视觉自动化基于浏览器的工作流程 🐉

Skyvern 使用LLM和计算机视觉来自动化基于浏览器的工作流程。它提供了一个与Playwright兼容的SDK,在Playwright之上增加了AI功能,并且还包含一个无代码工作流构建器,帮助技术用户和非技术用户在任何网站上自动化手动工作流程,取代脆弱或不可靠的自动化方案。

传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖DOM解析和基于XPath的交互,而一旦网站布局发生变化,这些脚本就会失效。

Skyvern不再仅依赖代码定义的XPath交互,而是利用视觉LLM来学习和与网站交互。

工作原理

Skyvern的灵感来源于BabyAGI和AutoGPT所推广的基于任务驱动的自主代理设计——但有一个重大优势:我们赋予Skyvern使用浏览器自动化库(如Playwright)与网站交互的能力。

Skyvern通过一组代理来理解网站,并规划和执行其操作:

这种方法有几个优点:

  1. Skyvern能够在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流所需的操作,而无需任何自定义代码
  2. Skyvern对网站布局变化具有抵抗力,因为我们的系统在导航时没有预定义的XPath或其他选择器
  3. 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,请使用此选项。

  1. 安装 Docker Desktop
  2. 克隆仓库: ```bash git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
  3. 在.env中配置你的LLM提供商(如果缺失,下面的quickstart --docker-compose命令将从.env.example创建它): ```bash cp .env.example .env # if not already created

    edit .env to add your LLM API key

  4. 启动全部: ```bash docker compose up -d
  5. 打开 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 驱动的元素定位:

操作PlaywrightAI 增强
点击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")

分类