引言
在日常工作中,我们经常需要重复执行各种浏览器操作——填写表单、下载文件、提取数据、完成登录流程等。传统自动化方法依赖编写针对特定网站的脚本,使用XPath或CSS选择器定位元素,但网站布局的任何微小变化都可能导致脚本失效。
现在,有一种更智能的解决方案出现了。Skyvern通过结合大型语言模型(LLMs)和计算机视觉技术,彻底改变了浏览器自动化的实现方式。它能够像人类一样”看”懂网页内容,理解任务要求,并自主决定如何操作,无需针对每个网站编写特定代码。
本文将深入介绍Skyvern的工作原理、安装使用方法、核心功能以及实际应用场景,帮助您全面了解这一革命性的自动化工具。
Skyvern是什么?
Skyvern是一个基于AI的浏览器自动化平台,它使用LLMs和计算机视觉来自动化各种浏览器工作流。与传统方法不同,Skyvern不需要预先编写针对特定网站的脚本,而是通过理解网页的视觉元素和文本内容,自主决策并执行操作。
核心特点:
-
无需编写针对特定网站的代码 -
对网站布局变化具有强韧性 -
能够处理从未见过的网站 -
支持复杂推理和决策

Skyvern如何工作?
Skyvern的设计灵感来源于任务驱动型自主代理架构,如BabyAGI和AutoGPT,但增加了一个关键能力:通过浏览器自动化库(如Playwright)与网站交互。
多代理系统架构
Skyvern使用一组专门化的代理来协同完成任务:
-
理解代理:分析网页内容,识别可交互元素 -
规划代理:制定完成任务所需的步骤序列 -
执行代理:实际执行点击、输入、滚动等浏览器操作 -
验证代理:确认操作结果是否符合预期
这种分工协作的方式使Skyvern能够处理复杂的工作流,并在遇到意外情况时调整策略。
与传统方法的对比
传统浏览器自动化通常依赖以下方法:
-
DOM解析和XPath选择器 -
预先编写的脚本和流程 -
针对特定网站定制的代码
这些方法的主要缺点是脆弱性——网站布局的微小变化就可能导致自动化流程中断。
Skyvern采用的根本不同之处在于:
-
基于视觉理解而非代码选择器 -
适应性强,能处理布局变化 -
具备推理能力,可处理复杂情况
例如,当需要从Geico获取汽车保险报价时,Skyvern能够推断出”18岁时是否有驾驶资格?”这一问题的答案可以从驾驶员16岁获得驾照这一事实推导出来,而不需要明确提供答案。
性能与评估
在WebBench基准测试中,Skyvern表现出色,总体准确率达到64.4%。特别是在”写入”任务(如填写表单、登录、下载文件等)方面,Skyvern是性能最佳的代理,这对于机器人流程自动化(RPA)相关任务尤为重要。


这些结果表明,Skyvern在处理现实世界的自动化任务方面已经达到了行业领先水平。
如何开始使用Skyvern
Skyvern云服务
对于不想处理基础设施管理的用户,👉Skyvern Cloud提供了完全托管的云服务。它包括并行运行多个Skyvern实例、反机器人检测机制、代理网络和CAPTCHA解决方案等功能。
要试用Skyvern Cloud,只需访问👉app.skyvern.com创建账户即可。
本地安装和使用
环境要求
在开始之前,请确保您的系统满足以下要求:
-
Python 3.11.x(支持3.12,暂不支持3.13) -
NodeJS和NPM -
Windows用户额外需要: -
Rust -
VS Code及C++开发工具和Windows SDK
-
安装步骤
-
安装Skyvern
pip install skyvern -
初始化Skyvern
首次运行时,需要设置数据库和运行迁移:
skyvern quickstart -
运行Skyvern服务
skyvern run all完成后,访问 http://localhost:8080 即可使用Web界面创建和管理任务。
通过代码运行任务
除了Web界面,您也可以通过Python代码使用Skyvern:
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="查找今天HackerNews上的热门帖子")
print(task)
Skyvern会在弹出的浏览器中执行任务,完成后自动关闭浏览器。您可以通过 http://localhost:8080/history 查看任务历史记录。
高级使用技巧
使用自己的Chrome浏览器
注意:从Chrome 136开始,默认用户数据目录拒绝任何CDP连接。为了使用您的浏览器数据,Skyvern会在首次连接本地浏览器时将默认用户数据目录复制到
./tmp/user_data_dir。
-
通过代码控制
from skyvern import Skyvern # Mac系统下的Chrome路径示例 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="查找今天HackerNews上的热门帖子", ) -
通过Skyvern服务控制
在.env文件中添加以下变量:
# Mac系统下的Chrome路径示例 CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" BROWSER_TYPE=cdp-connect重启Skyvern服务后,即可通过UI或代码运行任务。
连接远程浏览器
获取CDP连接URL并传递给Skyvern:
from skyvern import Skyvern
skyvern = Skyvern(cdp_url="您的CDP连接URL")
task = await skyvern.run_task(
prompt="查找今天HackerNews上的热门帖子",
)
获取结构化输出
通过指定数据提取架构,可以确保输出符合特定格式:
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(
prompt="查找今天HackerNews上的热门帖子",
data_extraction_schema={
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "热门帖子的标题"
},
"url": {
"type": "string",
"description": "热门帖子的URL"
},
"points": {
"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部署
对于喜欢使用容器化部署的用户,Skyvern提供了Docker Compose配置:
-
确保已安装并运行Docker Desktop
-
检查本地是否有Postgres运行(使用
docker ps命令) -
克隆仓库并进入根目录
-
运行
skyvern init llm生成.env文件(这会被复制到Docker镜像中) -
在👉docker-compose.yml中填写LLM提供商密钥
-
运行以下命令:
docker compose up -d -
在浏览器中访问
http://localhost:8080开始使用UI
重要提示:一次只能有一个Postgres容器在5432端口上运行。如果从CLI管理的Postgres切换到Docker Compose,必须先删除原始容器:
docker rm -f postgresql-container
Skyvern核心功能
任务管理
任务是Skyvern中的基本构建块。每个任务代表一个单独的请求,指示Skyvern导航网站并完成特定目标。
创建任务时需要指定:
-
url:目标网站地址 -
prompt:任务描述 -
可选的 data schema:如果需要输出符合特定架构 -
可选的 error codes:如果希望在特定情况下停止运行

工作流设计
工作流允许将多个任务链接在一起,形成连贯的工作单元。
典型工作流示例:
-
发票下载工作流:
-
导航到发票页面 -
过滤显示1月1日后的发票 -
提取符合条件的发票列表 -
遍历每张发票并下载
-
-
电商购买工作流:
-
导航到目标商品页面 -
将商品添加到购物车 -
导航到购物车并验证状态 -
完成结账流程
-
支持的工作流功能:
-
浏览器任务 -
浏览器操作 -
数据提取 -
验证 -
循环 -
文件解析 -
发送电子邮件 -
文本提示 -
HTTP请求块 -
自定义代码块 -
上传文件到块存储 -
(即将推出)条件语句

实时流媒体
Skyvern允许将浏览器视口实时流式传输到本地机器,让您可以实时查看Skyvern在网页上的操作。这对于调试和理解Skyvern如何与网站交互非常有用,必要时可以进行干预。
表单填写
Skyvern天生具备在网站上填写表单输入的能力。通过navigation_goal传递信息,Skyvern能够理解信息并相应填写表单。
数据提取
Skyvern还能够从网站提取数据。您可以在主要提示中直接指定data_extraction_schema,以JSONC格式告诉Skyvern您希望从网站提取哪些数据。Skyvern的输出将按照提供的架构进行结构化。
文件下载
Skyvern支持从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),您可以通过UI访问它们。
身份验证支持
Skyvern支持多种身份验证方法,使登录后的任务自动化更加容易。如果您想试用此功能,请通过👉电子邮件或👉Discord联系我们。

双因素认证(2FA)支持
Skyvern支持多种2FA方法,允许您自动化需要2FA的工作流:
-
基于QR码的2FA(如Google Authenticator、Authy) -
基于电子邮件的2FA -
基于短信的2FA
密码管理器集成
Skyvern目前支持以下密码管理器集成:
-
[x] Bitwarden -
[ ] 1Password(开发中) -
[ ] LastPass(开发中)
模型上下文协议(MCP)支持
Skyvern支持模型上下文协议(MCP),允许您使用任何支持MCP的LLM。
Zapier / Make.com / N8N集成
Skyvern支持与Zapier、Make.com和N8N集成,允许您将Skyvern工作流连接到其他应用程序。
实际应用案例
以下是Skyvern在现实世界中的一些应用示例:
多网站发票下载
企业经常需要从多个供应商门户下载发票,每个门户都有不同的界面和导航流程。Skyvern可以自动化这一过程,无需为每个网站编写特定代码。

求职申请自动化
求职者可以使用Skyvern自动化投递简历和填写申请表格的过程,节省大量时间。

制造业物料采购
制造公司可以使用Skyvern自动化查找和采购原材料的过程,从多个供应商网站比较价格和库存。

政府网站账户注册和表格填写
Skyvern可以处理政府网站复杂的注册和表格填写流程,这些网站通常有独特的界面和验证流程。

填写联系表单
企业可以使用Skyvern自动化在多个网站上填写联系表单的过程,用于潜在客户开发或合作伙伴联系。

多语言保险报价获取
保险公司或比较网站可以使用Skyvern从多个保险提供商获取报价,即使网站使用不同语言。


支持的LLM提供商
Skyvern支持多种LLM提供商,让您可以根据需求、预算和性能要求选择合适的模型。
| 提供商 | 支持的模型 |
|---|---|
| OpenAI | gpt4-turbo, gpt-4o, gpt-4o-mini |
| Anthropic | Claude 3 (Haiku, Sonnet, Opus), Claude 3.5 (Sonnet) |
| Azure OpenAI | 任何GPT模型,多模态LLM(azure/gpt4-o)性能更佳 |
| AWS Bedrock | Anthropic Claude 3 (Haiku, Sonnet, Opus), Claude 3.5 (Sonnet) |
| Gemini | Gemini 2.5 Pro和flash, Gemini 2.0 |
| Ollama | 通过👉Ollama运行任何本地托管模型 |
| OpenRouter | 通过👉OpenRouter访问模型 |
| OpenAI兼容 | 任何遵循OpenAI API格式的自定义API端点(通过👉liteLLM) |
环境变量配置
OpenAI
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_OPENAI |
注册OpenAI模型 | 布尔值 | true, false |
OPENAI_API_KEY |
OpenAI API密钥 | 字符串 | sk-1234567890 |
OPENAI_API_BASE |
OpenAI API基础URL,可选 | 字符串 | https://openai.api.base |
OPENAI_ORGANIZATION |
OpenAI组织ID,可选 | 字符串 | your-org-id |
推荐LLM_KEY:OPENAI_GPT4O, OPENAI_GPT4O_MINI, OPENAI_GPT4_1, OPENAI_O4_MINI, OPENAI_O3
Anthropic
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_ANTHROPIC |
注册Anthropic模型 | 布尔值 | true, false |
ANTHROPIC_API_KEY |
Anthropic API密钥 | 字符串 | sk-1234567890 |
推荐LLM_KEY:ANTHROPIC_CLAUDE3.5_SONNET, ANTHROPIC_CLAUDE3.7_SONNET, ANTHROPIC_CLAUDE4_OPUS, ANTHROPIC_CLAUDE4_SONNET
Azure OpenAI
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_AZURE |
注册Azure OpenAI模型 | 布尔值 | true, false |
AZURE_API_KEY |
Azure部署API密钥 | 字符串 | sk-1234567890 |
AZURE_DEPLOYMENT |
Azure OpenAI部署名称 | 字符串 | skyvern-deployment |
AZURE_API_BASE |
Azure部署API基础URL | 字符串 | https://skyvern-deployment.openai.azure.com/ |
AZURE_API_VERSION |
Azure API版本 | 字符串 | 2024-02-01 |
推荐LLM_KEY:AZURE_OPENAI
AWS Bedrock
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_BEDROCK |
注册AWS Bedrock模型。使用AWS Bedrock前,请确保👉AWS配置已正确设置 | 布尔值 | true, false |
推荐LLM_KEY:BEDROCK_ANTHROPIC_CLAUDE3.7_SONNET_INFERENCE_PROFILE, BEDROCK_ANTHROPIC_CLAUDE4_OPUS_INFERENCE_PROFILE, BEDROCK_ANTHROPIC_CLAUDE4_SONNET_INFERENCE_PROFILE
Gemini
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_GEMINI |
注册Gemini模型 | 布尔值 | true, false |
GEMINI_API_KEY |
Gemini API密钥 | 字符串 | your_google_gemini_api_key |
推荐LLM_KEY:GEMINI_2.5_PRO_PREVIEW, GEMINI_2.5_FLASH_PREVIEW
Ollama
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_OLLAMA |
通过Ollama注册本地模型 | 布尔值 | true, false |
OLLAMA_SERVER_URL |
Ollama服务器URL | 字符串 | http://host.docker.internal:11434 |
OLLAMA_MODEL |
Ollama模型名称 | 字符串 | qwen2.5:7b-instruct |
推荐LLM_KEY:OLLAMA
注意:Ollama暂不支持视觉功能。
OpenRouter
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_OPENROUTER |
注册OpenRouter模型 | 布尔值 | true, false |
OPENROUTER_API_KEY |
OpenRouter API密钥 | 字符串 | sk-1234567890 |
OPENROUTER_MODEL |
OpenRouter模型名称 | 字符串 | mistralai/mistral-small-3.1-24b-instruct |
OPENROUTER_API_BASE |
OpenRouter API基础URL | 字符串 | https://api.openrouter.ai/v1 |
推荐LLM_KEY:OPENROUTER
OpenAI兼容
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
ENABLE_OPENAI_COMPATIBLE |
注册自定义OpenAI兼容API端点 | 布尔值 | true, false |
OPENAI_COMPATIBLE_MODEL_NAME |
OpenAI兼容端点模型名称 | 字符串 | yi-34b, gpt-3.5-turbo, mistral-large等 |
OPENAI_COMPATIBLE_API_KEY |
OpenAI兼容端点API密钥 | 字符串 | sk-1234567890 |
OPENAI_COMPATIBLE_API_BASE |
OpenAI兼容端点基础URL | 字符串 | https://api.together.xyz/v1, http://localhost:8000/v1等 |
OPENAI_COMPATIBLE_API_VERSION |
OpenAI兼容端点API版本,可选 | 字符串 | 2023-05-15 |
OPENAI_COMPATIBLE_MAX_TOKENS |
完成最大令牌数,可选 | 整数 | 4096, 8192等 |
OPENAI_COMPATIBLE_TEMPERATURE |
温度设置,可选 | 浮点数 | 0.0, 0.5, 0.7等 |
OPENAI_COMPATIBLE_SUPPORTS_VISION |
模型是否支持视觉,可选 | 布尔值 | true, false |
支持的LLM Key:OPENAI_COMPATIBLE
通用LLM配置
| 变量 | 描述 | 类型 | 示例值 |
|---|---|---|---|
LLM_KEY |
要使用的模型名称 | 字符串 | 参见上面支持的LLM密钥 |
SECONDARY_LLM_KEY |
Skyvern运行迷你代理使用的模型名称 | 字符串 | 参见上面支持的LLM密钥 |
LLM_CONFIG_MAX_TOKENS |
覆盖LLM使用的最大令牌数 | 整数 | 128000 |
开发者设置
对于想要贡献代码或自定义Skyvern的开发者,以下是设置开发环境的步骤:
确保已安装👉uv。
-
创建虚拟环境(
.venv)uv sync --group dev -
执行初始服务器配置
uv run skyvern quickstart -
在浏览器中访问
http://localhost:8080开始使用UISkyvern CLI支持Windows、WSL、macOS和Linux环境。
功能路线图
Skyvern团队有明确的开发计划,以下是未来几个月的主要目标:
-
[x] 开源 – 开源Skyvern核心代码库 -
[x] 工作流支持 – 支持将多个Skyvern调用链接在一起 -
[x] 改进上下文理解 – 通过文本提示提供相关标签上下文,提高Skyvern理解可交互元素周围内容的能力 -
[x] 成本优化 – 通过优化传递给Skyvern的上下文树,提高稳定性并降低运行成本 -
[x] 自助服务UI – 用基于React的UI组件取代Streamlit UI,允许用户在Skyvern中启动新任务 -
[x] 工作流UI构建器 – 引入UI允许用户可视化构建和分析工作流 -
[x] Chrome视口流式传输 – 引入将Chrome视口实时流式传输到用户浏览器的方法 -
[x] 历史运行记录UI – 用基于React的UI取代Streamlit UI,允许可视化查看历史运行记录及其结果 -
[X] 自动工作流构建器(”观察者”模式) – 允许Skyvern在浏览网页时自动生成工作流,使构建新工作流更加容易 -
[x] 提示缓存 – 引入LLM调用的缓存层,显著降低运行Skyvern的成本 -
[x] Web评估数据集 – 将Skyvern与公共基准测试集成,跟踪模型质量随时间的变化 -
[ ] 改进的调试模式 – 允许Skyvern在运行动作前规划并获取”批准”,方便调试和迭代提示 -
[ ] Chrome扩展 – 允许用户通过Chrome扩展与Skyvern交互 -
[ ] Skyvern动作记录器 – 允许Skyvern观察用户完成任务并自动生成工作流 -
[ ] 交互式实时流 – 允许用户实时与流交互,必要时进行干预 -
[ ] 集成LLM可观察性工具 – 集成LLM可观察性工具,允许使用特定数据集回溯测试提示更改 -
[x] Langchain集成 – 在langchain_community中创建集成,将Skyvern用作”工具”
常见问题解答
Skyvern与传统RPA工具有何不同?
传统RPA工具通常依赖录制和回放技术,或基于XPath/CSS选择器的脚本,这些方法在网站布局变化时容易失效。Skyvern使用LLMs和计算机视觉理解网页内容,能够适应布局变化,处理从未见过的网站,并具备推理能力处理复杂情况。
Skyvern能否处理需要登录的网站?
是的,Skyvern支持多种身份验证方法,包括用户名/密码登录和双因素认证(2FA)。它支持基于QR码、电子邮件和短信的2FA,并且可以与密码管理器(如Bitwarden)集成。
Skyvern如何保证数据安全?
当使用本地部署时,所有数据都保留在您的环境中。Skyvern的开源版本不包含云服务中的反机器人检测功能,但核心自动化逻辑完全相同。如果对许可有疑问,可以联系支持团队。
Skyvern支持哪些浏览器?
Skyvern主要基于Chromium内核的浏览器(如Google Chrome、Microsoft Edge)进行优化,通过Chrome DevTools Protocol(CDP)与浏览器交互。它支持连接本地或远程浏览器实例。
如果Skyvern在执行任务时卡住了怎么办?
Skyvern提供了多种调试工具:
-
实时流媒体功能可以让您观察执行过程 -
详细的任务历史记录可以回顾每一步操作 -
可以通过UI或代码干预任务执行 -
丰富的日志记录帮助诊断问题
Skyvern的性能如何?
根据WebBench基准测试,Skyvern在总体任务上达到64.4%的准确率,在”写入”类任务(如表单填写、登录、文件下载等)上表现尤为出色,这些任务正是RPA场景的核心需求。
是否可以自定义Skyvern的行为?
是的,Skyvern提供了多种自定义方式:
-
通过数据提取架构定义输出格式 -
通过错误代码定义停止条件 -
支持自定义工作流组合多个任务 -
可以集成自定义代码块
总结
Skyvern代表了浏览器自动化领域的重大进步,通过结合LLMs和计算机视觉,解决了传统自动化方法的根本局限性。它不需要针对每个网站编写特定代码,能够适应网站布局变化,并具备处理复杂情况的能力。
无论您是企业希望自动化重复性工作流程,还是开发者寻求更可靠的浏览器自动化解决方案,Skyvern都值得一试。其开源版本提供了完整核心功能,而云服务则为不想管理基础设施的用户提供了便利选择。
随着AI技术的不断发展,Skyvern这类工具有望彻底改变我们与网络应用程序交互的方式,将人们从重复性任务中解放出来,专注于更有价值的工作。

