返回市场
天空统治者

天空统治者

作者:Skyvern-AI18701 星标更新:2025-11-24

项目介绍

<!-- DOCTOC SKIP --> <h1 align="center"> <a href="https://www.skyvern.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_logo.png"/> <img height="120" src="fern/images/skyvern_logo_blackbg.png"/> </picture> </a> <br /> </h1> <p align="center"> 🐉 使用大语言模型和计算机视觉自动化基于浏览器的工作流程 🐉 </p> <p align="center"> <a href="https://www.skyvern.com/"><img src="https://img.shields.io/badge/网站-blue?logo=googlechrome&logoColor=black"/></a> <a href="https://www.skyvern.com/docs/"><img src="https://img.shields.io/badge/文档-yellow?logo=gitbook&logoColor=black"/></a> <a href="https://discord.gg/fG2XXEuQX3"><img src="https://img.shields.io/discord/1212486326352617534?logo=discord&label=discord"/></a> <!-- <a href="https://pepy.tech/project/skyvern" target="_blank"><img src="https://static.pepy.tech/badge/skyvern" alt="总下载量"/></a> --> <a href="https://github.com/skyvern-ai/skyvern"><img src="https://img.shields.io/github/stars/skyvern-ai/skyvern" /></a> <a href="https://github.com/Skyvern-AI/skyvern/blob/main/LICENSE"><img src="https://img.shields.io/github/license/skyvern-ai/skyvern"/></a> <a href="https://twitter.com/skyvernai"><img src="https://img.shields.io/twitter/follow/skyvernai?style=social"/></a> <a href="https://www.linkedin.com/company/95726232"><img src="https://img.shields.io/badge/在LinkedIn上关注-8A2BE2?logo=linkedin"/></a> </p>

Skyvern 使用大语言模型和计算机视觉来自动化基于浏览器的工作流程。它提供了一个简单的API端点,以完全自动化大量网站上的手动工作流程,取代了脆弱或不可靠的自动化解决方案。

<p align="center"> <img src="fern/images/geico_shu_recording_cropped.gif"/> </p>

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

Skyvern 不仅仅依赖于代码定义的XPath交互,而是依靠视觉大语言模型来学习并与网站进行交互。

如何工作

Skyvern 的灵感来自于由BabyAGIAutoGPT 推广的任务驱动型自主代理设计——其中一个重要优势是:我们赋予Skyvern通过浏览器自动化库如Playwright与网站进行交互的能力。

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

<picture> <source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_2_0_system_diagram.png" /> <img src="fern/images/skyvern_2_0_system_diagram.png" /> </picture>

这种方法有几个优点:

  1. Skyvern 可以在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流程所需的行动,而无需任何定制代码。
  2. Skyvern 对网站布局变化具有抵抗力,因为我们的系统在尝试导航时没有预先确定的XPath或其他选择器。
  3. Skyvern 能够将单个工作流程应用于大量网站,因为它能够推理出完成工作流程所需的交互。
  4. Skyvern 利用大语言模型来推理交互,确保我们可以处理复杂的情况。例如:
    1. 如果你想从Geico获取汽车保险报价,对于一个常见问题“你在18岁时是否有资格驾驶?”的回答可以从司机在16岁时获得驾照推断出来。
    2. 如果你在做竞争对手分析,它会理解7/11的Arnold Palmer 22盎司罐装饮料几乎肯定与Gopuff的23盎司罐装饮料是同一种产品(尽管尺寸略有不同,这可能是四舍五入误差)!

详细的报告可以在这里找到:这里

演示

<!-- 重新制作演示 -->

https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f

性能与评估

Skyvern 在WebBench基准测试中表现最佳,准确率为64.4%。技术报告及评估可以在这里找到:这里

<p align="center"> <img src="fern/images/performance/webbench_overall.png"/> </p>

写入任务性能(例如填写表单、登录、下载文件等)

Skyvern 是写入任务的最佳执行代理(例如填写表单、登录、下载文件等),主要用于RPA(机器人过程自动化)相关任务。

<p align="center"> <img src="fern/images/performance/webbench_write.png"/> </p>

快速开始

Skyvern Cloud

Skyvern Cloud 是Skyvern的托管云版本,允许您无需担心基础设施即可运行Skyvern。它允许您并行运行多个Skyvern实例,并附带防机器人检测机制、代理网络和验证码解决程序。

如果您想试用,请导航至 app.skyvern.com 并创建一个账户。

安装与运行

所需依赖项:

此外,对于Windows:

  • Rust
  • 带有C++开发工具和Windows SDK的VS Code

1. 安装Skyvern

pip install skyvern

2. 运行Skyvern

这对于首次运行(数据库设置、数据库迁移等)非常有用。

skyvern quickstart

3. 运行任务

UI(推荐)

启动Skyvern服务和UI(当数据库运行时)

skyvern run all

转到 http://localhost:8080 并使用UI运行任务

代码

from skyvern import Skyvern

skyvern = Skyvern()
task = await skyvern.run_task(prompt="查找今天Hacker News上的顶级帖子")
print(task)

Skyvern 开始在弹出的浏览器中运行任务,并在任务完成后关闭浏览器。您可以在 http://localhost:8080/history 中查看任务。

您还可以在不同的目标上运行任务:

from skyvern import Skyvern

# 在Skyvern Cloud上运行
skyvern = Skyvern(api_key="SKYVERN API KEY")

# 本地Skyvern服务
skyvern = Skyvern(base_url="http://localhost:8000", api_key="LOCAL SKYVERN API KEY")

task = await skyvern.run_task(prompt="查找今天Hacker News上的顶级帖子")
print(task)

高级用法

控制自己的浏览器(Chrome)

⚠️ 警告:自从 Chrome 136,Chrome拒绝使用默认用户数据目录通过CDP连接到浏览器。为了使用您的浏览器数据,Skyvern会在第一次连接到本地浏览器时将默认用户数据目录复制到 ./tmp/user_data_dir。⚠️

  1. 仅使用Python代码
from skyvern import Skyvern

# 您的Chrome浏览器路径。此示例路径适用于Mac。
browser_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
skyvern = Skyvern(
    base_url="http://localhost:8000",
    api_key="YOUR_API_KEY",
    browser_path=browser_path,
)
task = await skyvern.run_task(
    prompt="查找今天Hacker News上的顶级帖子",
)
  1. 使用Skyvern服务

在您的.env文件中添加两个变量:

# 您的Chrome浏览器路径。此示例路径适用于Mac。
CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
BROWSER_TYPE=cdp-connect

重启Skyvern服务 skyvern run all 并通过UI或代码运行任务

使用任何远程浏览器运行Skyvern

获取CDP连接URL并将其传递给Skyvern

from skyvern import Skyvern

skyvern = Skyvern(cdp_url="您的CDP连接URL")
task = await skyvern.run_task(
    prompt="查找今天Hacker News上的顶级帖子",
)

获取一致的输出模式

您可以通过添加 data_extraction_schema 参数来实现这一点:

from skyvern import Skyvern

skyvern = Skyvern()
task = await skyvern.run_task(
    prompt="查找今天Hacker News上的顶级帖子",
    data_extraction_schema={
        "type": "object",
        "properties": {
            "title": {
                "type": "string",
                "description": "顶级帖子的标题"
            },
            "url": {
                "type": "string",
                "description": "顶级帖子的URL"
            },
            "points": {
                1. "type": "integer",
                "description": "帖子收到的点赞数"
            }
        }
    }
)

用于调试问题的有用命令

# 单独启动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

Docker Compose 设置

  1. 确保您已安装并运行了Docker Desktop
  2. 确保本地没有运行Postgres(运行 docker ps 检查)。
  3. 克隆仓库并导航到根目录。
  4. 运行 skyvern init llm 生成一个 .env 文件。该文件将被复制到Docker镜像中。
  5. docker-compose.yml中填写LLM提供商密钥。如果您想在远程服务器上运行Skyvern,请确保在docker-compose.yml中为UI容器设置正确的服务器IP地址。
  6. 通过命令行运行以下命令:
     docker compose up -d
    
  7. 导航到 http://localhost:8080 在浏览器中开始使用UI。

重要: 一次只能有一个Postgres容器运行在5432端口上。如果您从CLI管理的Postgres切换到Docker Compose,必须首先删除原始容器:

docker rm -f postgresql-container

如果您在使用Docker运行Skyvern时遇到任何数据库相关错误,请使用 docker ps 检查哪个Postgres容器正在运行。

Skyvern 功能

Skyvern 任务

任务是Skyvern内部的基本构建模块。每个任务是对Skyvern的单个请求,指示它浏览网站并完成特定目标。

任务需要您指定一个 urlprompt,并且可以选择包括一个 data schema(如果您希望输出符合特定模式)和 error codes(如果您希望Skyvern在特定情况下停止运行)。

<p align="center"> <img src="fern/images/skyvern_2_0_screenshot.png"/> </p>

Skyvern 工作流

工作流是一种将多个任务链接在一起形成一个连贯工作的单元的方法。

例如,如果您想要下载所有1月1日之后的新发票,您可以创建一个工作流,首先导航到发票页面,然后筛选只显示1月1日之后的新发票,提取所有符合条件的发票列表,并迭代每个发票以下载它。

另一个例子是如果您想要自动购买电子商务商店中的产品,您可以创建一个工作流,首先导航到所需的产品,然后将其添加到购物车。其次,它将导航到购物车并验证购物车状态。最后,它将通过结账过程购买商品。

支持的工作流特性包括:

  1. 浏览器任务
  2. 浏览器动作
  3. 数据提取
  4. 验证
  5. 循环
  6. 文件解析
  7. 发送电子邮件
  8. 文本提示
  9. HTTP请求块
  10. 自定义代码块
  11. 将文件上传到块存储
  12. (即将推出)条件语句
<p align="center"> <img src="fern/images/block_example_v2.png"/> </p>

实时流传输

Skyvern 允许您将浏览器视口实时流传输到本地机器,以便您可以确切地看到Skyvern在网络上所做的操作。这对于调试和了解Skyvern如何与网站交互以及必要时进行干预非常有用。

表单填写

Skyvern 原生具备填写网站表单输入的能力。通过 navigation_goal 传递信息将允许Skyvern理解信息并相应地填写表单。

数据提取

Skyvern 还能够从网站中提取数据。

您也可以直接在主提示中指定 data_extraction_schema,告诉Skyvern您希望从网站中提取的确切数据,格式为jsonc。Skyvern的输出将根据提供的模式进行结构化。

文件下载

Skyvern 还能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),并通过UI访问它们。

认证

Skyvern 支持多种认证方法,使您更容易自动化登录后的任务。如果您想试用,请通过电子邮件Discord联系我们。

<p align="center"> <img src="fern/images/secure_password_task_example.png"/> </p>

🔐 二步验证支持(TOTP)

Skyvern 支持多种二步验证方法,允许您自动化需要二步验证的工作流。

示例包括:

  1. 基于QR码的二步验证(例如Google Authenticator,Authy)
  2. 基于电子邮件的二步验证
  3. 基于短信的二步验证

🔐 了解更多关于二步验证支持的信息 这里

密码管理器集成

Skyvern 目前支持以下密码管理器集成:

  • Bitwarden
  • 1Password
  • LastPass

模型上下文协议(MCP)

Skyvern 支持模型上下文协议(MCP),允许您使用支持MCP的任何大语言模型。

参见MCP文档 这里

Zapier / Make.com / N8N 集成

Skyvern 支持Zapier、Make.com和N8N,允许您将Skyvern工作流连接到其他应用程序。

🔐 了解更多关于二步验证支持的信息 这里

现实世界中Skyvern的应用案例

我们喜欢看到Skyvern在现实世界中的应用。这里有一些Skyvern如何被用来自动化实际工作流程的例子。请打开PR添加您自己的例子!

在许多不同网站上下载发票

预约演示以查看实时效果

<p align="center"> <img src="fern/images/invoice_downloading.gif"/> </p>

自动化求职申请过程

💡 查看实际效果

<p align="center"> <img src="fern/images/job_application_demo.gif"/> </p>

自动化制造公司的材料采购

💡 查看实际效果

<p align="center"> <img src="fern/images/finditparts_recording_crop.gif"/> </p>

导航到政府网站注册账户或填写表单

💡 查看实际效果

<p align="center"> <img src="fern/images/edd_services.gif"/> </p> <!-- 添加特拉华州实体查询示例 x2 -->

填写随机的联系我们表单

💡 查看实际效果

<p align="center"> 1. <img src="fern/images/contact_forms.gif"/> </p>

从任何语言的保险公司获取保险报价

💡 查看实际效果

<p align="center"> <img src="fern/images/bci_seguros_recording.gif"/> </p>

💡 查看实际效果

<p align="center"> <img src="fern/images/geico_shu_recording_cropped.gif"/> </p>

贡献者设置

确保已安装uv

  1. 运行此命令以创建虚拟环境(.venv
    uv sync --group dev
    
  2. 执行初始服务器配置
    uv run skyvern quickstart
    
  3. 导航到 http://localhost:8080 在浏览器中开始使用UI *Skyvern