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

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

    • 一、前言
    • 二、项目概览
      • [2.1 Skyvern 项目简介](#2.1 Skyvern 项目简介)
      • [2.2 代码结构与模块划分](#2.2 代码结构与模块划分)
    • 三、环境搭建与快速上手
      • [3.1 环境准备](#3.1 环境准备)
        • [3.1.1 系统与依赖](#3.1.1 系统与依赖)
        • [3.1.2 克隆项目](#3.1.2 克隆项目)
        • [3.1.3 安装 Python 依赖](#3.1.3 安装 Python 依赖)
        • [3.1.4 配置环境变量](#3.1.4 配置环境变量)
        • [3.1.5 启动服务](#3.1.5 启动服务)
      • [3.2 验证安装](#3.2 验证安装)
    • 四、核心功能与实战演练
      • [4.1 LLM+CV 自动化原理](#4.1 LLM+CV 自动化原理)
      • [4.2 典型用例实操](#4.2 典型用例实操)
        • [4.2.1 自动化登录流程](#4.2.1 自动化登录流程)
        • [4.2.2 复杂表单自动填写](#4.2.2 复杂表单自动填写)
        • [4.2.3 数据采集与爬取](#4.2.3 数据采集与爬取)
      • [4.3 工作流编排与调试](#4.3 工作流编排与调试)
    • 五、进阶玩法与二次开发
      • [5.1 自定义集成与插件开发](#5.1 自定义集成与插件开发)
        • [5.1.1 新增 LLM 支持](#5.1.1 新增 LLM 支持)
        • [5.1.2 集成自定义动作](#5.1.2 集成自定义动作)
      • [5.2 与 CI/CD、测试平台集成](#5.2 与 CI/CD、测试平台集成)
        • [5.2.1 API 调用示例](#5.2.1 API 调用示例)
      • [5.3 典型应用场景](#5.3 典型应用场景)
    • 六、最佳实践与常见问题
      • [6.1 提高自动化稳定性的建议](#6.1 提高自动化稳定性的建议)
      • [6.2 常见问题解答](#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 克隆项目
bash 复制代码
git clone https://github.com/skyvern-ai/skyvern.git
cd skyvern
3.1.3 安装 Python 依赖

建议使用虚拟环境:

bash 复制代码
python3 -m venv venv
source venv/bin/activate
pip install -U pip
pip install -r requirements.txt
3.1.4 配置环境变量

复制并编辑 .env.example

bash 复制代码
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 启动服务
bash 复制代码
# 启动后端
python -m skyvern

# 启动前端(可选)
cd skyvern-frontend
npm install
npm run dev

或使用 Docker 一键启动:

bash 复制代码
docker-compose up --build

3.2 验证安装

访问本地 UI(如 http://localhost:8501http://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 的任务配置如下:

yaml 复制代码
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 调用示例
bash 复制代码
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 中找到高效、灵活的解决方案。


参考链接:

相关推荐
绝顶大聪明4 分钟前
[特征工程]机器学习-part2
人工智能·机器学习
火星资讯8 分钟前
上海雏鸟科技再赴越南,助力10518架无人机刷新吉尼斯记录
人工智能·科技·机器人
慕婉030720 分钟前
机器学习实战:6种数据集划分方法详解与代码实现
人工智能·深度学习·机器学习·数据集划分
灯下夜无眠27 分钟前
sklearn自定义pipeline的数据处理
人工智能·python·机器学习·pipeline·sklearn
Wnq1007233 分钟前
数据链共享:从印巴空战到工业控制的跨越性应用
大数据·人工智能·数据链共享
-曾牛43 分钟前
Azure OpenAI 聊天功能全解析:Java 开发者指南
java·开发语言·人工智能·spring·flask·azure·大模型应用
AALoveTouch1 小时前
霸王茶姬微信小程序自动化签到系统完整实现&解析
微信小程序·自动化·notepad++
范桂飓1 小时前
英语口语错题集
人工智能
是麟渊1 小时前
【论文解读】| ACL2024 | LANDeRMT:基于语言感知神经元路由的大模型机器翻译微调框架
人工智能·自然语言处理·机器翻译
白熊1881 小时前
【计算机视觉】3DDFA_V2中表情与姿态解耦及多任务平衡机制深度解析
人工智能·计算机视觉·3d