Skyvern:用 AI+视觉驱动浏览器自动化
Skyvern:用 AI+视觉驱动浏览器自动化
- 一、前言
- 二、项目概览
- 2.1 Skyvern 项目简介
- 2.2 代码结构与模块划分
- 三、环境搭建与快速上手
- 3.1 环境准备
- 3.1.1 系统与依赖
- 3.1.2 克隆项目
- 3.1.3 安装 Python 依赖
- 3.1.4 配置环境变量
- 3.1.5 启动服务
- 3.2 验证安装
- 四、核心功能与实战演练
- 4.1 LLM+CV 自动化原理
- 4.2 典型用例实操
- 4.2.1 自动化登录流程
- 4.2.2 复杂表单自动填写
- 4.2.3 数据采集与爬取
- 4.3 工作流编排与调试
- 五、进阶玩法与二次开发
- 5.1 自定义集成与插件开发
- 5.1.1 新增 LLM 支持
- 5.1.2 集成自定义动作
- 5.2 与 CI/CD、测试平台集成
- 5.2.1 API 调用示例
- 5.3 典型应用场景
- 六、最佳实践与常见问题
- 6.1 提高自动化稳定性的建议
- 6.2 常见问题解答
- 七、结语
一、前言
- Skyvern 是一个开源的自动化平台,结合了 LLM 与计算机视觉,能够像人类一样理解和操作网页。它不仅能自动化常规的表单填写、按钮点击,还能识别复杂的页面结构、处理动态内容,甚至支持多步工作流的自动化执行。
- 本文将从项目架构、环境搭建、核心功能、实战案例、二次开发等多个维度,带你深入理解并高效上手 Skyvern。
二、项目概览
2.1 Skyvern 项目简介
Skyvern 由 Skyvern-AI 团队开源,主打“用 LLM+CV 自动化浏览器操作”,支持多种主流大模型(如 OpenAI、Gemini、Novita 等),并可通过 API 进行扩展。其核心亮点包括:
- LLM 驱动:通过自然语言理解页面内容和用户意图,自动生成操作序列。
- 计算机视觉:识别页面元素、处理复杂布局,突破传统 DOM 定位的局限。
- 多模型兼容:支持 OpenAI、Gemini、Novita 等主流模型,灵活切换。
- 工作流编排:支持多步任务链式执行,适合复杂业务流程自动化。
- 可视化与可扩展性:提供 Streamlit/React UI,便于任务管理和二次开发。
2.2 代码结构与模块划分
根据官方仓库结构,Skyvern 主要包含以下核心目录:
skyvern/
:后端主逻辑,包含 LLM 调用、CV 处理、任务编排等。skyvern-frontend/
:前端 UI,支持任务配置、运行监控、结果展示。integrations/
:第三方集成模块,如与 Playwright、Selenium 等的对接。evaluation/
:评测与基准测试相关代码。scripts/
:常用脚本,如环境初始化、数据处理等。.streamlit/
:Streamlit UI 配置。alembic/
:数据库迁移相关。
三、环境搭建与快速上手
3.1 环境准备
3.1.1 系统与依赖
Skyvern 推荐在 Linux/MacOS 环境下运行,Windows 亦可通过 WSL 兼容。主要依赖包括:
- Python 3.9+
- Node.js(用于前端构建)
- Docker(可选,便于一键部署)
- Chrome/Chromium 浏览器(自动化驱动)
3.1.2 克隆项目
git clone https://github.com/skyvern-ai/skyvern.git
cd skyvern
3.1.3 安装 Python 依赖
建议使用虚拟环境:
python3 -m venv venv
source venv/bin/activate
pip install -U pip
pip install -r requirements.txt
3.1.4 配置环境变量
复制并编辑 .env.example
:
cp .env.example .env
根据你的 LLM 服务(如 OpenAI、Gemini、Novita)填写对应的 API Key。例如:
OPENAI_COMPATIBLE_MODEL_NAME=gpt-3.5-turbo
OPENAI_COMPATIBLE_API_KEY=sk-xxxxxx
OPENAI_COMPATIBLE_API_BASE=https://api.openai.com/v1
3.1.5 启动服务
# 启动后端
python -m skyvern# 启动前端(可选)
cd skyvern-frontend
npm install
npm run dev
或使用 Docker 一键启动:
docker-compose up --build
3.2 验证安装
访问本地 UI(如 http://localhost:8501 或 http://localhost:3000),应能看到 Skyvern 的任务管理界面。
四、核心功能与实战演练
4.1 LLM+CV 自动化原理
Skyvern 的核心在于将 LLM 的自然语言理解能力与计算机视觉的元素识别能力结合,实现“像人一样”操作网页。其基本流程如下:
- 页面分析:通过浏览器截图、DOM 抓取等方式,获取页面结构与视觉信息。
- 意图解析:LLM 解析用户输入的自然语言指令,生成操作意图。
- 元素定位:结合 CV 模型和 DOM 信息,精准定位目标元素。
- 动作执行:通过 Playwright/Selenium 等驱动,完成点击、输入、滚动等操作。
- 多步编排:支持链式任务,自动处理页面跳转、弹窗等复杂场景。
4.2 典型用例实操
4.2.1 自动化登录流程
以自动登录 GitHub 为例,Skyvern 的任务配置如下:
steps:- description: "打开 GitHub 登录页"action: "navigate"url: "https://github.com/login"- description: "输入用户名"action: "type"selector: "input[name='login']"value: "your_username"- description: "输入密码"action: "type"selector: "input[name='password']"value: "your_password"- description: "点击登录按钮"action: "click"selector: "input[type='submit']"
你也可以直接用自然语言描述任务,Skyvern 会自动解析:
“打开 GitHub 登录页,输入用户名和密码,点击登录。”
4.2.2 复杂表单自动填写
对于多级表单、动态加载的页面,Skyvern 能自动识别表单结构,逐步填写并提交。例如:
“在某招聘网站注册账号,填写所有必填项,上传简历,提交注册。”
Skyvern 会自动处理文件上传、验证码识别(如集成第三方打码服务)、多步跳转等。
4.2.3 数据采集与爬取
Skyvern 支持自动化采集网页数据,并可将结果导出为 CSV/JSON。例如:
“抓取某电商网站前 10 页的商品名称和价格,保存为 CSV。”
Skyvern 会自动翻页、提取数据,并生成结构化文件。
4.3 工作流编排与调试
Skyvern 支持多步任务链式编排,可视化管理每一步的输入输出。你可以在 UI 中拖拽、编辑每个步骤,实时查看执行结果和日志,便于调试和优化。
五、进阶玩法与二次开发
5.1 自定义集成与插件开发
Skyvern 设计了灵活的插件机制,便于集成自定义 LLM、CV 模型或第三方服务。例如,你可以接入自有的 OCR 服务、验证码识别 API,或扩展支持新的浏览器驱动。
5.1.1 新增 LLM 支持
在 .env
中配置新的 LLM 接口参数,并在 skyvern/llm/
目录下实现对应的适配器即可。
5.1.2 集成自定义动作
在 skyvern/actions/
目录下新增自定义动作(如特殊的文件上传、复杂交互等),并在任务配置中调用。
5.2 与 CI/CD、测试平台集成
Skyvern 支持通过 API 触发任务,便于与 Jenkins、GitHub Actions 等 CI/CD 工具集成,实现自动化回归测试、冒烟测试等。
5.2.1 API 调用示例
curl -X POST http://localhost:8000/api/run \-H "Content-Type: application/json" \-d '{"steps": [...]}'
5.3 典型应用场景
- AI 测试工程师:自动化 UI 测试、回归测试、兼容性测试。
- RPA 工程师:自动化办公流程、数据录入、报表生成。
- 数据分析师:自动化数据采集、网页爬虫。
- 产品经理/运营:无需编程即可配置自动化任务,提高效率。
六、最佳实践与常见问题
6.1 提高自动化稳定性的建议
- 优先使用视觉+DOM双重定位,提升元素识别准确率。
- 合理设置等待时间,处理异步加载和动画。
- 对于验证码、滑块等反爬机制,集成第三方识别服务或人工干预。
- 利用 Skyvern 的“调试模式”,逐步执行并观察每一步结果。
6.2 常见问题解答
Q1:如何处理动态页面元素?
A:Skyvern 结合 CV 和 DOM 信息,能自动适应元素位置变化。必要时可通过自定义 selector 或视觉锚点增强定位。
Q2:如何扩展支持新的 LLM 或 CV 模型?
A:参考 skyvern/llm/
和 skyvern/cv/
目录,按接口规范实现适配器,并在配置文件中切换即可。
Q3:如何关闭数据上报/隐私保护?
A:设置环境变量 SKYVERN_TELEMETRY=false
即可关闭遥测。
七、结语
Skyvern 以 LLM+CV 为核心,极大提升了浏览器自动化的智能化和易用性。无论你是 AI 测试工程师、RPA 开发者,还是自动化爱好者,都能在 Skyvern 中找到高效、灵活的解决方案。
参考链接:
- Skyvern GitHub 仓库
- Skyvern 官网
相关文章:

Skyvern:用 AI+视觉驱动浏览器自动化
Skyvern:用 AI视觉驱动浏览器自动化 一、前言二、项目概览2.1 Skyvern 项目简介2.2 代码结构与模块划分 三、环境搭建与快速上手3.1 环境准备3.1.1 系统与依赖3.1.2 克隆项目3.1.3 安装 Python 依赖3.1.4 配置环境变量3.1.5 启动服务 3.2 验证安装 四、核心功能与实…...

数据库原理期末考试速成--最后附带两套题
引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…...
《探索React Native社交应用中WebRTC实现低延迟音视频通话的奥秘》
WebRTC,全称为Web Real-Time Communication,是一项开创性的开源技术,为Web和移动应用开启了实时通信的大门。它打破了传统通信的束缚,使得应用之间无需依赖繁琐的中间服务器,就能实现直接的点对点通信,这是…...
关于vue 本地代理
接口调用:其中我们可以约定一个拦截的标识, 用来给本地 http://localhost/ 进行代理要请求的测试地址https:abc.com 例子: axios.post(/OwnRateReport/-------------------------------------------------------00001)devServer: {proxy: {/…...
#跟着若城学鸿蒙#HarmonyOS NEXT学习之Blank组件详解
一、组件介绍 Blank(空白)组件是HarmonyOS NEXT中一个简单但非常实用的UI组件,它主要用于在布局中创建空白区域,帮助开发者更灵活地控制界面元素之间的间距和布局结构。虽然Blank组件本身不显示任何内容,但它在界面设…...
PX4开始之旅(二)通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信
核心知识点:通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信 1. 通俗易懂的解释 想象一下,MAVLink 就像是无人机(飞控)和地面站(QGroundControl)之间约定好的一种“语言”。这种语言有很多标准的“…...

数据结构基础--蓝桥杯备考
1.优缺点总述 STL中各容器对比图 各类线性数据结构优缺点 1.数组 1.优点 1.简单,容易理解 2.访问快捷,只需要用下标就可以 3.有某些应用场景直接对应,例如二维数组对应平面 2.缺点 删除和插入数据非常耗时 2.链表 1.优点 插入和删…...

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析
今天给大家分享几款2.4GHz无线通信芯片方案: 一、集成SOC芯片方案 XL2407P(芯岭技术) 集成射频收发机和微控制器(如九齐NY8A054E) 支持一对多组网和自动重传 发射功率8dBm,接收灵敏度-96.5dBm(…...
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷 一、刷机模式对比 1. Fastboot模式 简介:传统安卓底层刷机模式,通过USB连接电脑操作优点:支持大多数安卓设备,操作相对简单缺点:需要设备进入特定…...

Unity_JK框架【5】音效系统实现
在游戏开发中,音频是不可或缺的一部分,它能够极大地增强游戏的沉浸感和趣味性。今天,我们就用JK框架 探讨一下如何在Unity中实现一个强大的音频系统,并且通过实际的测试脚本来验证其功能👏。 一、音频模块类࿱…...

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件
打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口,使用的模型是 Stage 模型 在项目文件里,新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行,这里是第一步创建的文件…...
MySQL数据库——视图
目录 一、视图是什么? 二、特点 三、创建视图 四.查询视图 五.更新视图 六.视图的作用 总结 一、视图是什么? 视图是从一个或多个表中导出的虚拟表,它本身不存储数据,而是基于 SQL 查询的结果集。 二、特点 1.虚拟性࿱…...
redis数据结构-09 (ZADD、ZRANGE、ZRANK)
Redis 排序集简介:ZADD、ZRANGE、ZRANK Redis 有序集合是一种功能强大的数据结构,兼具集合和哈希的特性。它维护一组唯一元素,类似于集合;但每个元素都与一个分数相关联,类似于哈希。分数用于对有序集合中的元素进行排…...
PyTorch API 1 - 概述、数学运算、nn、实用工具、函数、张量
文章目录 torch张量创建操作索引、切片、连接与变异操作 加速器生成器随机采样原地随机采样准随机采样 序列化并行计算局部禁用梯度计算数学运算常量逐点运算归约操作比较运算频谱操作其他操作BLAS 和 LAPACK 运算遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历…...

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景
长短期记忆网络(LSTM)作为循环神经网络(RNN)的重要变体,通过门控机制有效解决了传统RNN的梯度消失问题,成为时序数据处理的核心技术。本文从理论起源、数学建模、网络架构、工程实现到行业应用,…...

c语言第一个小游戏:贪吃蛇小游戏02
接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键,也就是键盘快捷键,不是q、r、t,是 上下左右、F1、F2等等的键,我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…...
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
政府招投标数据爬虫项目--医疗实例项目文档 1. 项目概述1.1 项目目标1.2 技术栈 2. 系统架构2.1 模块划分2.2 流程示意图 3. 核心模块设计3.1 反爬处理模块(utils/anti_crawler.py)3.1.1 功能特性3.1.2 关键代码 3.2 爬虫模块(crawler/spider…...

Android架构之自定义native进程
在Android五层架构中,native层基本上全是c的世界,这些c进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c子进程,也是这众多的c进程,构建了整个android世界的native层。 …...
talk-centos6之间实现
在 CentOS 6.4 上配置和使用 talk 工具,需要注意系统版本较老,很多配置可能不同于现代系统。我会提供 详细步骤 自动化脚本,帮你在两台 CentOS 6.4 机器上实现局域网聊天。 ⸻ 🧱 一、系统准备 假设你有两台主机: …...

《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》
目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…...
数组中元素如何交换与打乱
1 问题 在本周学习了java基础语法中的数组,在学习数组后,我们会遇到关于数组中元素的倒序,交换,和无序打乱等问题,在Python中我们可以用list的方法进行元素倒序,那么我们在java中应该如何实现数组用元素的倒序和元素的打乱呢? 2 方法 使用循环,Random类,下标索引实现 关于元素…...

Nuitka 已不再安全? Nuitka/Cython 打包应用逆向工具 -- pymodhook
pymodhook是一个记录任意对Python模块的调用的库,用于Python逆向分析。 pymodhook库类似于Android的xposed框架,但不仅能记录函数的调用参数和返回值,还能记录模块的类的任意方法调用,以及任意派生对象的访问,基于pyob…...

【C】初阶数据结构14 -- 归并排序
本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1) 算法思想 2) 代码 3) 时间复杂度与空间复杂度分析 (1) 时间复杂度 (2) 空间复杂度 2 迭代版本的归并…...

华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)
一、路由过滤(filter-policy) 1、用于控制路由更新、接收的一个工具 2、只能过滤路由信息,无法过滤LSA 二、路由过滤(filter-policy)与动态路由协议 1、距离矢量路由协议 RIP动态路由协议 交换的是路由表࿰…...
NestJS 框架深度解析
框架功能分析 NestJS 是一个基于 Node.js 的渐进式框架,专为构建高效、可扩展的服务器端应用程序而设计。其核心理念结合了 面向对象编程(OOP)、函数式编程(FP) 和 函数式响应式编程(FRP)&…...
人脸识别门禁系统技术文档
人脸识别门禁系统技术文档 序言 本文档详细描述了人脸识别门禁系统的技术实现原理与方法。该系统旨在提供高安全性的门禁管理解决方案,通过先进的人脸识别技术,实现无接触式身份验证,提高安全管理效率。 系统整合了人工智能与计算机视觉技…...

SAP 交货单行项目含税金额计算报cx_sy_zerodivide处理
业务背景:SAP交货单只有数量,没有金额,所以开发报表从订单的价格按数量计算交货单的金额。 用户反馈近期报表出现异常: ****2012/12/12 清风雅雨 规格变更 Chg 修改开始 ** 修改原因:由于余数为0时,可能会报错溢出。…...

【Qt】之音视频编程1:QtAV的背景和安装篇
QtAV 背景与核心概念 1. 什么是 QtAV? QtAV 是一个基于 Qt 框架 和 FFmpeg 的多媒体播放库,旨在为 Qt 应用程序提供高性能、跨平台的音视频播放、处理及渲染功能。它封装了 FFmpeg 的底层编解码能力,并通过 Qt 的图形系统(如 QM…...

算法与数据结构 - 二叉树结构入门
目录 1. 普通二叉树结构 1.1. 常见术语 1.2. 完全二叉树 (Complete Binary Tree) 1.3. 满二叉树 (Full Binary Tree) 2. 特殊二叉树结构 2.1. 二叉搜索树 (BST) 2.1.1. BST 基本操作 - 查找 2.1.2. BST 基本操作 - 插入 2.1.3. BST 基本操作 - 删除 2.2. 平衡二叉树…...

如何使用远程桌面控制电脑
目的: 通过路由器使用pc控制台式机,实现了有线/无线pc与台式机的双向远程桌面控制 最核心就两条:get ip地址与被控制机器的账户与密码。 现象挺神奇:被控制电脑的电脑桌面处于休眠模式,此时强行唤醒被控电脑会导致中断…...