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: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 的任务配置如下:

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 中找到高效、灵活的解决方案。


参考链接:

相关推荐
郝学胜-神的一滴3 分钟前
Python浏览器自动化:Selenium与Playwright实战对比,网页爬虫&自动操作一站式指南
开发语言·爬虫·python·selenium·程序人生·自动化
传人once3 分钟前
从 PPT 到可交互原型:用 AI 做小程序原型的实践 | 深度实践版
人工智能·powerpoint·交互
元岳数字人小元9 分钟前
数字人私有化,如何搭建全链路内网推理体系
运维·人工智能·开源·人机交互·交互
龙猫科技说9 分钟前
AI 一句话建站实测|多款国产 AI 横向对比
人工智能
2601_9622035110 分钟前
快鹭办公、通达OA、奥哲、360织语怎么选:关注上手成本与日常易用性的对比横评
人工智能
csdn2015_13 分钟前
deepseek
ai
测试开发技术14 分钟前
AI时代我们要如何玩抓包测试:Reqable + AI Agent
软件测试·人工智能·测试工具·接口测试·agent·抓包
晨间晓15 分钟前
图片是什么色调?用华为云码道开发 OpenCV HSV 色调分布分析工具
人工智能·opencv·华为云
Frankie_stand16 分钟前
智能体任务书:编写要素、方法与实际案例
人工智能
俊哥V21 分钟前
每日 AI 研究简报 · 2026-10-16
人工智能·ai