Skyvern:用 AI+视觉驱动浏览器自动化

news2025/7/18 1:56:54

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 的自然语言理解能力与计算机视觉的元素识别能力结合,实现“像人一样”操作网页。其基本流程如下:

  1. 页面分析:通过浏览器截图、DOM 抓取等方式,获取页面结构与视觉信息。
  2. 意图解析:LLM 解析用户输入的自然语言指令,生成操作意图。
  3. 元素定位:结合 CV 模型和 DOM 信息,精准定位目标元素。
  4. 动作执行:通过 Playwright/Selenium 等驱动,完成点击、输入、滚动等操作。
  5. 多步编排:支持链式任务,自动处理页面跳转、弹窗等复杂场景。

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 官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库原理期末考试速成--最后附带两套题

引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…

数据结构基础--蓝桥杯备考

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

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析

今天给大家分享几款2.4GHz无线通信芯片方案: 一、集成SOC芯片方案 XL2407P(芯岭技术) 集成射频收发机和微控制器(如九齐NY8A054E) 支持一对多组网和自动重传 发射功率8dBm,接收灵敏度-96.5dBm&#xff08…

Unity_JK框架【5】音效系统实现

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

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件

打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口,使用的模型是 Stage 模型 在项目文件里,新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行,这里是第一步创建的文件…

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景

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

c语言第一个小游戏:贪吃蛇小游戏02

接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键,也就是键盘快捷键,不是q、r、t,是 上下左右、F1、F2等等的键,我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…

Android架构之自定义native进程

在Android五层架构中,native层基本上全是c的世界,这些c进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c子进程,也是这众多的c进程,构建了整个android世界的native层。 …

《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…

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动态路由协议 交换的是路由表&#xff0…

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地址与被控制机器的账户与密码。 现象挺神奇:被控制电脑的电脑桌面处于休眠模式,此时强行唤醒被控电脑会导致中断…

SpringMVC-执行流程

目录 前言 一、SpringMVC执行流程 SpringMVC 主要组件 SpringMVC 的执行流程 简要分析执行流程 总结 前言 理解SpringMVC的执行流程是学习SpringMVC工作原理的重要一步。 项目内容参考:SpringMVC-简介及入门-CSDN博客 一、SpringMVC执行流程 SpringMVC 主要组…

计算机网络网络层(下)

一、互联的路由选择协议(网络层控制层面内容) (一)有关路由选择协议的几个概念 1.理想的路由算法 (1)理想路由算法应具备的特点:算法必须正确和完整的,算法在计算上应简单&#x…

深入学习Zookeeper的知识体系

目录 1、介绍 1.1、CAP 理论 1.2、BASE 理论 1.3、一致性协议ZAB 1、介绍 2、角色 3、ZXID和myid 4、 历史队列 5、协议模式 6、崩溃恢复模式 7、脑裂问题 2、zookeeper 2.1、开源项目 2.2、功能 2.3、选举机制 3、数据模型 3.1、介绍 3.2、znode分类 4、监听…

大模型核心运行机制

大模型核心运行机制目录 一、核心架构:Transformer的演进与改进1.1 核心组件包括:1.1.1 自注意力机制(Self-Attention)1.1.2 多头注意力(Multi-Head Attention)1.1.3 位置编码(Positional Encod…