Doramagic 项目包 · 项目说明书

skyvern 项目

生成时间:2026-05-12 01:23:02 UTC

Skyvern 项目介绍

Skyvern 是一个开源的 Web 自动化平台,通过自然语言描述即可自动化执行复杂的网络任务。该项目结合了大型语言模型(LLM)和浏览器自动化技术,使非技术用户也能轻松创建和管理自动化工作流程。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 核心组件

继续阅读本节完整说明和来源证据。

章节 任务管理 (Tasks)

继续阅读本节完整说明和来源证据。

章节 工作流管理 (Workflows)

继续阅读本节完整说明和来源证据。

项目概述

Skyvern 是一个开源的 Web 自动化平台,通过自然语言描述即可自动化执行复杂的网络任务。该项目结合了大型语言模型(LLM)和浏览器自动化技术,使非技术用户也能轻松创建和管理自动化工作流程。

Skyvern 的核心功能包括:

  • 自然语言驱动的网页导航:用户只需描述任务目标,Skyvern 即可自动分析网页结构并执行相应操作
  • 多步骤工作流编排:支持创建、编辑和调度复杂的自动化工作流
  • 身份验证与凭证管理:内置对 TOTP/2FA、Magic Link 等多因素认证的支持
  • 浏览器会话管理:支持持久化浏览器会话和远程浏览器连接
  • 灵活的代理路由:可配置代理位置以满足地理位置需求

资料来源:README.md:1

系统架构

Skyvern 采用前后端分离的架构设计,主要由以下组件构成:

graph TD
    A[用户界面<br/>Skyvern Frontend] --> B[Skyvern Backend<br/>API 服务]
    B --> C[浏览器自动化引擎<br/>Forge SDK]
    C --> D[浏览器实例<br/>Chrome/Remote CDP]
    B --> E[数据库<br/>持久化存储]
    B --> F[LLM 提供商<br/>OpenAI/Anthropic/etc.]

核心组件

组件说明技术栈
Skyvern FrontendWeb 用户界面React, TypeScript, Tailwind CSS
Skyvern BackendRESTful API 服务Python (FastAPI)
Forge SDK浏览器自动化 SDKPython
MCP ToolsModel Context Protocol 工具集Python

资料来源:skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1 资料来源:skyvern-frontend/src/routes/workflows/editor/Workspace.tsx:1

主要功能模块

任务管理 (Tasks)

任务是 Skyvern 的核心执行单元,用户通过自然语言描述导航目标。

graph LR
    A[创建任务] --> B[填写导航目标<br/>Navigation Goal]
    B --> C{高级设置}
    C -->|是| D[配置导航载荷<br/>Navigation Payload]
    C -->|否| E[提交任务]
    D --> E
    E --> F[任务执行]
    F --> G[结果记录]

#### 任务创建表单

任务创建支持以下关键字段:

字段名类型说明
Navigation Goal文本描述 Skyvern 需要执行的操作和目标位置
Navigation PayloadJSON指定路由参数、状态或重要参数
Proxy Location选择项代理服务器地理位置
Browser Session ID文本持久化浏览器会话标识符 (格式: pbs_xxx)
CDP Address文本远程浏览器地址 (如 http://127.0.0.1:9222)

资料来源:skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1 资料来源:skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:1

工作流管理 (Workflows)

工作流允许用户编排多步骤的自动化任务链。

graph TD
    A[工作流编辑器<br/>Workflow Editor] --> B[版本对比<br/>Comparison Panel]
    B --> C{对比模式}
    C -->|历史模式| D[版本历史查看]
    C -->|Copilot 模式| E[AI 辅助审查]
    D --> F[选择版本]
    E --> G[接受/拒绝变更]

#### 工作流脚本

每个工作流可以包含多个脚本版本,支持以下功能:

  • 脚本缓存键管理
  • 版本历史追踪
  • 单版本运行统计
  • 成功率监控
指标说明
Total Revisions脚本总版本数
Runs当前版本运行次数
Success Rate成功率 (≥80% 绿色, ≥50% 黄色, <50% 红色)
Last Updated最后更新时间

资料来源:skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx:1 资料来源:skyvern-frontend/src/routes/workflows/WorkflowScriptDetailPage.tsx:1

凭证与认证管理

Skyvern 支持多种凭证存储和认证方式。

#### TOTP/2FA 处理

功能说明
Numeric Code数字验证码 (6位)
Magic Link魔术链接认证
Push Notification推送通知验证

凭证列表显示以下信息:

字段说明
Identifier邮箱或手机号码
Code验证码内容
Source来源服务
Workflow Run关联的工作流运行
Created创建时间
Expires过期时间

资料来源:skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1

调度管理 (Schedules)

支持基于 Cron 表达式的定时任务调度。

配置项说明
Cron ExpressionCron 表达式
Timezone时区设置
Next Scheduled Runs即将执行的运行时间预览

资料来源:skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx:1

MCP 工具集

Skyvern CLI 提供丰富的 MCP (Model Context Protocol) 工具,可与 Claude 等 AI 助手集成。

交互操作工具

工具名称功能描述
skyvern_click点击页面元素
skyvern_type输入文本内容
skyvern_scroll滚动页面
skyvern_hover鼠标悬停
skyvern_select_option选择下拉选项
skyvern_press_key模拟按键
skyvern_drag拖拽操作
skyvern_file_upload文件上传
skyvern_wait等待指定时间

数据提取工具

工具名称功能描述
skyvern_extract结构化 JSON 数据提取
skyvern_screenshot页面截图
skyvern_find元素查找
skyvern_validate数据验证
skyvern_evaluate执行 JavaScript 代码
skyvern_get_html获取页面 HTML
skyvern_get_value获取表单值
skyvern_get_styles获取元素样式

身份验证工具

工具名称功能描述
skyvern_login执行登录操作
skyvern_credential_list列出存储凭证
skyvern_credential_get获取凭证详情
skyvern_credential_delete删除凭证

支持的凭证存储服务:

  • Skyvern Vault
  • Bitwarden
  • 1Password
  • Azure Key Vault

标签页与框架工具

工具名称功能描述
skyvern_tab_new打开新标签页
skyvern_tab_list列出所有标签页
skyvern_tab_switch切换标签页
skyvern_tab_close关闭标签页
skyvern_tab_wait_for_new等待新标签页出现
skyvern_frame_list列出 iframe 框架
skyvern_frame_switch切换框架
skyvern_frame_main返回主框架

网络与控制台工具

工具名称功能描述
skyvern_console_messages获取控制台消息
skyvern_network_requests列出网络请求
skyvern_network_request_detail请求详情查看
skyvern_network_route设置请求路由
skyvern_network_unroute取消请求路由
skyvern_get_errors获取页面错误
skyvern_har_start开始 HAR 录制
skyvern_har_stop停止 HAR 录制
skyvern_handle_dialog处理弹窗对话框

浏览器状态工具

工具名称功能描述
skyvern_state_save保存浏览器状态
skyvern_state_load加载浏览器状态
skyvern_get_session_storage获取 Session Storage
skyvern_set_session_storage设置 Session Storage
skyvern_clear_session_storage清除 Session Storage
skyvern_clear_local_storage清除 Local Storage
skyvern_clipboard_read读取剪贴板
skyvern_clipboard_write写入剪贴板

工作流集成工具

工具名称功能描述
skyvern_workflow_create创建工作流
skyvern_workflow_list列出工作流
skyvern_workflow_get获取工作流详情

资料来源:skyvern/cli/mcp_tools/README.md:1

支持的大语言模型

Skyvern 支持多种 LLM 提供商的模型:

提供商支持的模型
OpenAIGPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
AnthropicClaude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus)
Azure OpenAI任意部署到 Azure 的 GPT 模型
AWS BedrockClaude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus)
GeminiGemini 3.1 Pro, Gemini 3 Flash

资料来源:README.md:1

本地运行与部署

环境要求

  • Python 3.10+
  • uv 包管理器

快速开始步骤

# 1. 创建虚拟环境
uv sync --group dev

# 2. 执行初始化配置
uv run skyvern quickstart

# 3. 访问 Web UI
# http://localhost:8080

代码运行模式

# 安装 Skyvern
pip install skyvern

# 初始化配置
skyvern quickstart

# 运行代码文件
skyvern run code --params '{"param1": "val1", "param2": "val2"}' main.py

资料来源:README.md:1 资料来源:skyvern-frontend/src/routes/workflows/editor/Workspace.tsx:1

遥测与隐私

Skyvern 默认收集基本的使用统计数据以帮助改进产品。

退出遥测收集:

export SKYVERN_TELEMETRY=false

资料来源:README.md:1

许可证

Skyvern 开源仓库采用 AGPL-3.0 许可证

例外情况:托管云服务中的反机器人功能属于商业闭源功能,不包含在开源版本中。

资料来源:README.md:1

开发者资源

资源链接
贡献指南CONTRIBUTING.md
官方文档https://www.skyvern.com/docs
Help Wanted IssuesGitHub Issues
Discord 社区https://discord.gg/fG2XXEuQX3
邮箱支持[email protected]

如需获取项目的高级概述、构建方法或使用问题解答,可使用 Code Sage AI 助手:

https://sage.storia.ai

资料来源:README.md:1

资料来源:[README.md:1]()

快速开始指南

Skyvern 是一个基于 Playwright 的 AI 驱动浏览器自动化工具,提供自然语言驱动的网页交互能力。本指南将帮助您在本地环境中快速部署和运行 Skyvern。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 步骤 1:安装 Docker Desktop

继续阅读本节完整说明和来源证据。

章节 步骤 2:克隆代码仓库

继续阅读本节完整说明和来源证据。

章节 步骤 3:配置环境变量

继续阅读本节完整说明和来源证据。

系统要求

组件最低要求说明
Python3.11+Skyvern 仅支持 Python 3.11 环境 资料来源:integrations/mcp/README.md
操作系统Windows/WSL/macOS/Linux全平台支持
Docker最新版仅 Docker 部署方式需要
uv最新版源码开发方式推荐使用 资料来源:README.md

部署方式概览

graph TD
    A[选择部署方式] --> B[Docker Compose 部署]
    A --> C[本地源码部署]
    A --> D[MCP 扩展部署]
    
    B --> B1[安装 Docker Desktop]
    B --> B2[克隆代码仓库]
    B --> B3[配置环境变量]
    B --> B4[启动服务]
    
    C --> C1[安装 uv]
    C --> C2[创建虚拟环境]
    C --> C3[运行快速启动向导]
    C --> C4[访问 Web UI]
    
    D --> D1[安装 Skyvern]
    D --> D2[初始化配置]
    D --> D3[启动 MCP 服务器]

方式一:Docker Compose 部署(推荐)

此方式适合希望快速体验 Skyvern 的用户,所有依赖已容器化。

步骤 1:安装 Docker Desktop

访问 Docker 官方网站 下载并安装 Docker Desktop。安装完成后启动 Docker 服务。

步骤 2:克隆代码仓库

git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern

资料来源:README.md

步骤 3:配置环境变量

复制示例配置文件并编辑:

cp .env.example .env

编辑 .env 文件,添加您的 LLM API 密钥:

环境变量必填说明
OPENAI_API_KEYOpenAI API 密钥
ANTHROPIC_API_KEYAnthropic Claude API 密钥
SKYVERN_TELEMETRY设置为 false 可禁用遥测数据收集

资料来源:.env.example

步骤 4:启动服务

docker compose up -d

此命令将启动所有 Skyvern 组件服务,包括前端界面和后端服务。

步骤 5:访问 Web UI

服务启动后,在浏览器中打开 http://localhost:8080 即可访问 Skyvern 的 Web 用户界面。

资料来源:README.md

方式二:本地源码部署

此方式适合开发者参与 Skyvern 项目开发或需要自定义扩展的用户。

步骤 1:安装 uv

uv 是一个快速的 Python 包管理工具。根据 uv 官方文档 安装 uv。

步骤 2:创建虚拟环境并安装依赖

uv sync --group dev

此命令将创建 .venv 虚拟环境并安装所有开发依赖。

资料来源:README.md

步骤 3:运行快速启动向导

uv run skyvern quickstart

快速启动向导将引导您完成以下配置:

  1. LLM 提供商配置 - 选择并配置您要使用的 LLM 提供商
  2. API 密钥设置 - 输入相应的 API 密钥
  3. 数据库初始化 - 配置 SQLite 数据库
  4. 服务端口设置 - 配置 Web UI 访问端口

资料来源:skyvern/cli/quickstart.py

步骤 4:启动服务器

uv run skyvern run server

步骤 5:访问 Web UI

在浏览器中导航至 http://localhost:8080 开始使用。

方式三:MCP 扩展部署

Skyvern 提供 Model Context Protocol (MCP) 支持,允许 AI 应用通过 MCP 协议连接浏览器。

步骤 1:安装 Skyvern

pip install skyvern

步骤 2:初始化配置

skyvern init

初始化向导将引导您完成配置过程,支持连接到 Skyvern Cloud 或本地版本。

步骤 3:启动本地服务器(如需)

仅在本地模式下需要启动服务器:

skyvern run server

资料来源:integrations/mcp/README.md

支持的 LLM 提供商

Skyvern 支持多种 LLM 提供商:

提供商支持模型
OpenAIGPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
AnthropicClaude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus)
Azure OpenAI任何部署到 Azure 订阅的 GPT 模型
AWS BedrockClaude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus)
GeminiGemini 3.1 Pro, Gemini 3 Flash

资料来源:README.md

常见问题排查

问题 1:sqlite3.OperationalError - table organizations already exists

这是 1.0.31 版本中的已知 bug。解决方案:

rm ~/.skyvern/data.db   # 删除遗留的 SQLite 文件
pip install --upgrade skyvern   # 1.0.32+ 版本已修复
skyvern quickstart

或使用 uv 安装:

uv pip install skyvern

问题 2:pip install skyvern 失败 - ResolutionImpossible

依赖解析冲突问题。解决方案:升级到 1.0.32+ 版本或使用 uv:

uv pip install skyvern

资料来源:README.md

快速验证部署

部署完成后,您可以通过以下方式验证:

  1. 访问 http://localhost:8080 查看 Web UI 是否正常加载
  2. 创建一个简单的导航任务测试功能
  3. 检查日志确认 LLM 连接正常

后续步骤

遥测说明

Skyvern 默认收集基本使用统计信息以帮助改进产品。如需退出遥测数据收集,请设置环境变量:

SKYVERN_TELEMETRY=false

资料来源:README.md

资料来源:[README.md](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)

系统架构设计

Skyvern 是一个基于大语言模型(LLM)的浏览器自动化框架,其核心设计目标是让 AI 能够自主执行复杂的网页操作任务。本文详细阐述 Skyvern 的整体系统架构、核心组件及其交互关系。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 Forge 应用层

继续阅读本节完整说明和来源证据。

章节 Agent 智能体引擎

继续阅读本节完整说明和来源证据。

章节 浏览器管理层

继续阅读本节完整说明和来源证据。

架构概览

Skyvern 采用分层架构设计,主要包含以下核心层:

层次组件职责
API 层forge_app.py提供 RESTful API 接口,处理请求路由和业务编排
智能体层agent.py实现 LLM 驱动的决策逻辑和任务执行
浏览器层browser_manager.py / browser_factory.py管理浏览器实例的生命周期和自动化操作
存储层S3 / 数据库管理任务状态、凭证和工作流定义
集成层MCP Server提供与外部 AI 应用的集成能力

资料来源:README.md:1-50

核心组件架构

Forge 应用层

Forge 是 Skyvern 的核心应用框架,负责整合所有功能模块。应用采用异步架构设计,支持高并发任务处理。

graph TD
    A[API 请求] --> B[Forge App]
    B --> C[Agent 引擎]
    B --> D[Browser Manager]
    B --> E[工作流引擎]
    B --> F[凭证管理]
    
    C --> G[LLM Provider]
    D --> H[Browser Factory]
    H --> I[Playwright/CDP]
    E --> J[任务调度器]
    F --> K[Vault/TOTP]

资料来源:skyvern/forge/forge_app.py:1-100

Agent 智能体引擎

Agent 是 Skyvern 的核心决策模块,负责解析自然语言任务并生成可执行的浏览器操作序列。

Agent 的核心职责:

  • 解析用户提供的导航目标和操作指令
  • 管理浏览器会话状态和上下文
  • 决策下一步操作(点击、输入、导航等)
  • 处理异常情况和重试逻辑

资料来源:skyvern/forge/agent.py:1-80

浏览器管理层

浏览器管理是自动化能力的基础,采用模块化工厂模式支持多种浏览器后端。

浏览器管理架构

Browser Manager

BrowserManager 负责管理浏览器实例的生命周期,包括创建、销毁、状态监控等操作。

graph LR
    A[Browser Manager] --> B[Browser Factory]
    B --> C[Playwright Browser]
    B --> D[CDP Browser]
    B --> E[Remote Browser]
    
    C --> F[Chromium]
    C --> G[Firefox]
    C --> H[WebKit]

资料来源:skyvern/webeye/browser_manager.py:1-100

Browser Factory

BrowserFactory 实现工厂模式,根据配置动态创建不同类型的浏览器实例。

支持的浏览器类型:

类型配置键用途
PlaywrightBROWSER_TYPE=playwright本地自动化测试
CDP ConnectBROWSER_TYPE=cdp-connect连接到远程 Chrome DevTools
浏览器隧道--tunnelSkyvern Cloud 远程控制

资料来源:skyvern/webeye/browser_factory.py:1-80

浏览器连接方式

Skyvern 支持多种浏览器连接方式,以满足不同部署场景的需求。

本地浏览器连接:

# 通过 CDP 连接到本地 Chrome
BROWSER_TYPE=cdp-connect
BROWSER_REMOTE_DEBUGGING_URL=http://127.0.0.1:9222

远程浏览器隧道:

# 创建隧道连接到 Skyvern Cloud
skyvern browser serve --tunnel

资料来源:README.md:80-120

数据存储架构

S3 存储集成

Skyvern 使用 S3 URI 解析来处理文件存储和检索操作。

class S3Uri:
    def __init__(self, uri: str) -> None:
        self._parsed = urlparse(uri, allow_fragments=False)
    
    @property
    def bucket(self) -> str:
        return self._parsed.netloc
    
    @property
    def key(self) -> str:
        if self._parsed.query:
            return self._parsed.path.lstrip("/") + "?" + self._parsed.query
        else:
            return self._parsed.path.lstrip("/")
    
    @property
    def uri(self) -> str:
        return self._parsed.geturl()

资料来源:skyvern/forge/sdk/api/aws.py:50-80

AWS 客户端管理

采用单例模式管理 AWS 客户端实例,并设置 45 分钟的 TTL 以确保连接有效性。

_aws_client: AsyncAWSClient | None = None
_aws_client_created_at: float = 0.0
_AWS_CLIENT_TTL_SECONDS: float = 45 * 60  # 45 mins

资料来源:skyvern/forge/sdk/api/aws.py:80-90

MCP 集成架构

Model Context Protocol (MCP) 允许外部 AI 应用连接到 Skyvern 进行浏览器自动化。

MCP Server 架构

graph TD
    A[MCP Client App] --> B[Skyvern MCP Server]
    B --> C[Local Skyvern]
    B --> D[Skyvern Cloud]
    
    C --> E[Browser Agent]
    D --> E

资料来源:integrations/mcp/README.md:1-50

MCP 工具集

浏览器操作工具:

工具名称功能描述
skyvern_navigate导航到指定 URL
skyvern_click点击页面元素
skyvern_input输入文本内容
skyvern_select_option选择下拉选项
skyvern_press_key模拟键盘按键
skyvern_drag拖拽操作
skyvern_file_upload文件上传
skyvern_wait等待元素或时间

数据提取工具:

工具名称功能描述
skyvern_extract结构化 JSON 数据提取
skyvern_screenshot页面截图
skyvern_get_html获取页面 HTML
skyvern_get_value获取表单元素值

网络与调试工具:

工具名称功能描述
skyvern_network_requests获取网络请求列表
skyvern_network_route拦截网络请求
skyvern_console_messages获取控制台消息
skyvern_har_start/stopHAR 日志记录

认证凭证工具:

工具名称功能描述
skyvern_login执行网站登录
skyvern_credential_list列出存储的凭证
skyvern_credential_get获取凭证信息

资料来源:skyvern/cli/mcp_tools/README.md:1-60

凭证与安全管理

TOTP/2FA 支持

Skyvern 支持多种双因素认证方式,确保自动化任务能够处理需要 2FA 的网站。

支持的 2FA 类型:

类型描述
Numeric code基于时间的六位数字验证码
Magic link通过邮件发送的魔法链接

资料来源:skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1-50

凭证存储

Skyvern 提供安全的凭证存储机制,支持:

  • Skyvern Vault(内置安全存储)
  • Bitwarden 集成
  • 1Password 集成
  • Azure Key Vault 集成

资料来源:skyvern/cli/mcp_tools/README.md:30-40

工作流系统架构

工作流定义

工作流由多个 Block 组成,每个 Block 代表一个独立的操作单元。

支持的 Block 类型:

Block 类型功能
HTTP Request发送 HTTP 请求
Print Page打印页面为 PDF
Human Interaction暂停等待人工确认
Extract Data从页面提取结构化数据

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/WorkflowPostRunParameters.tsx:1-80

调度系统

Skyvern 支持基于 Cron 表达式的任务调度功能。

调度配置参数:

参数描述
cron_expressionCron 表达式定义执行时间
timezone时区设置
workflow_parameters工作流输入参数

资料来源:skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx:1-60

任务创建流程

任务表单配置

创建任务时,用户需要提供以下核心参数:

基本参数:

参数说明
Navigation Goal导航目标和操作指令
Navigation Payload可选的路由参数和状态信息

高级参数:

参数说明
Webhook Callback URL任务完成后的回调通知地址
Proxy Location代理服务器位置
Browser Session ID持久化浏览器会话 ID
Browser Address远程浏览器地址

资料来源:skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1-50

任务执行流程

sequenceDiagram
    participant User
    participant API
    participant Agent
    participant Browser
    participant LLM
    
    User->>API: 创建任务请求
    API->>Agent: 分发任务
    Agent->>LLM: 请求决策
    LLM-->>Agent: 返回操作指令
    Agent->>Browser: 执行浏览器操作
    Browser-->>Agent: 返回执行结果
    Agent->>LLM: 继续决策或结束
    Agent-->>API: 任务完成
    API-->>User: 返回结果

LLM 支持

支持的模型提供商

提供商支持模型
OpenAIGPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
AnthropicClaude 4.7 Opus, Claude 4.6, Claude 4.5
Azure OpenAI任意部署的 GPT 模型
AWS BedrockClaude 4.7, Claude 4.6, Claude 4.5
GeminiGemini 3.1 Pro, Gemini 3 Flash

资料来源:README.md:50-70

快速开始

环境配置

# 安装 uv 包管理器
# 创建虚拟环境
uv sync --group dev

# 初始化 Skyvern
uv run skyvern quickstart

# 启动服务
skyvern run all

资料来源:README.md:10-20

程序化使用

from skyvern import Skyvern

skyvern = Skyvern(api_key="your-api-key")
task = await skyvern.run_task(
    prompt="Find the top post on hackernews today",
)

架构设计原则

  1. 模块化设计:各组件职责明确,支持独立替换和扩展
  2. 异步优先:采用异步架构支持高并发场景
  3. 工厂模式:BrowserFactory 实现灵活的浏览器实例创建
  4. 单例管理:AWS 客户端等资源采用单例模式避免重复创建
  5. 凭证安全:敏感信息通过 Vault 等安全机制存储
  6. 可扩展性:MCP 协议支持与多种外部应用集成

总结

Skyvern 的系统架构围绕浏览器自动化核心能力,通过模块化设计实现了高内聚低耦合的组件关系。Forge 应用层作为统一入口,协调 Agent 智能体、浏览器管理、数据存储和外部集成四大功能模块,为用户提供了完整的浏览器自动化解决方案。

资料来源:[README.md:1-50](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)

AI 代理系统

注意:当前分析的源码上下文中未包含 skyvern/forge/agent.py、skyvern/forge/agentfunctions.py、skyvern/forge/sdk/copilot/agent.py 及 skyvern/forge/sdk/copilot/runtime.py 等核心 AI 代理系统文件。以下内容基于前端组件和工作流相关代码进行推断性说明,实...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 任务(Task)

继续阅读本节完整说明和来源证据。

章节 工作流(Workflow)

继续阅读本节完整说明和来源证据。

章节 任务块类型

继续阅读本节完整说明和来源证据。

注意:当前分析的源码上下文中未包含 skyvern/forge/agent.pyskyvern/forge/agent_functions.pyskyvern/forge/sdk/copilot/agent.pyskyvern/forge/sdk/copilot/runtime.py 等核心 AI 代理系统文件。以下内容基于前端组件和工作流相关代码进行推断性说明,实际架构细节请参阅上述核心文件。

概述

Skyvern 的 AI 代理系统是一个基于 LLM(大语言模型)驱动的自动化执行引擎,能够理解自然语言指令并在浏览器环境中完成复杂任务。该系统通过工作流(Workflow)编排多个任务块(Block),支持条件分支、人机交互、HTTP 请求执行等能力,实现端到端的自动化流程。

资料来源:integrations/mcp/README.md:1-20

核心概念

任务(Task)

任务是 AI 代理执行工作的基本单元,包含以下关键属性:

属性说明来源组件
navigation_goal自然语言描述的导航目标CreateNewTaskForm.tsx
navigation_payload导航参数、路由或状态信息CreateNewTaskForm.tsx
url目标网页地址SavedTaskForm.tsx
title任务名称SavedTaskForm.tsx
description任务目的描述SavedTaskForm.tsx
browser_session_id持久化浏览器会话 IDPromptBox.tsx
cdp_address浏览器服务地址PromptBox.tsx

资料来源:skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:10-30

工作流(Workflow)

工作流是由多个任务块组成的有向图,定义自动化任务的执行顺序和条件逻辑。

graph TD
    A[开始] --> B[条件判断块]
    B -->|条件为真| C[任务执行块]
    B -->|条件为假| D[HTTP 请求块]
    C --> E[人机交互块]
    D --> F[结束]
    E --> F

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItem.tsx:1-40

工作流执行引擎

任务块类型

工作流由不同类型的任务块组成,每种块承担特定功能:

块类型功能高级设置
task_block执行具体任务引擎类型、错误码映射、最大重试次数、最大步数
human_interaction暂停等待人工输入超时配置
http_request执行外部 API 调用请求超时、认证信息
condition_block条件分支判断条件表达式

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:1-50

执行状态与分支

工作流执行时会记录以下关键状态信息:

  • executed_branch_expression:已执行的条件表达式
  • executed_branch_next_block:分支判断后的下一个目标块
  • next_block_label:下一个待执行块的标签
graph LR
    A[评估条件] --> B{条件结果}
    B -->|True| C[执行 True 分支]
    B -->|False| D[执行 False 分支]
    C --> E[next_block_label]
    D --> E

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItem.tsx:40-70

代理执行流程

┌─────────────────────────────────────────────────────────────┐
│                      用户输入任务                            │
├─────────────────────────────────────────────────────────────┤
│  1. 解析 navigation_goal(自然语言目标)                       │
│  2. 提取 navigation_payload(参数/状态)                       │
│  3. 确定初始 URL 和代理行为                                   │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│                    LLM 决策循环                               │
├─────────────────────────────────────────────────────────────┤
│  • 分析当前页面状态                                           │
│  • 决定下一步操作(点击/输入/滚动/导航等)                        │
│  • 处理异常和错误恢复                                          │
│  • 评估任务完成条件                                            │
└─────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────┐
│                    浏览器自动化执行                            │
├─────────────────────────────────────────────────────────────┤
│  • 通过 CDP(Chrome DevTools Protocol)控制浏览器              │
│  • 可选使用代理服务器进行地理位置路由                            │
│  • 支持持久化会话复用                                          │
└─────────────────────────────────────────────────────────────┘

资料来源:skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:1-50

高级配置选项

执行引擎配置

配置项说明默认值
engine使用的 LLM 引擎OpenAI GPT-4
max_retries失败最大重试次数3
max_steps_per_run单次运行最大步数50
error_code_mapping自定义错误码映射表-

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:20-45

浏览器配置

配置项说明示例
browser_session_id持久化会话标识符pbs_xxx
cdp_address远程调试地址http://127.0.0.1:9222
proxy_location代理服务器位置各地区可选

资料来源:skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:50-80

脚本缓存与复用

Skyvern 支持脚本(Scripts)功能,允许在工作流中存储和复用代码片段:

属性说明
cache_key_value脚本缓存键
total_revisions脚本版本总数
runs脚本被执行次数
last_updated最后更新时间

资料来源:skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx:20-40

支持的 LLM 提供商

提供商支持模型
OpenAIGPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini
AnthropicClaude 4.7 Opus, Claude 4.6, Claude 4.5 系列
Azure OpenAI任意部署的 GPT 模型
AWS BedrockClaude 4.7, Claude 4.6, Claude 4.5 系列
GeminiGemini 3.1 Pro, Gemini 3 Flash

资料来源:README.md:50-60

Model Context Protocol (MCP) 集成

Skyvern 提供 MCP 服务器实现,允许 AI 应用连接浏览器进行自动化操作:

graph LR
    A[Claude/其他 LLM 应用] -->|MCP 协议| B[Skyvern MCP 服务器]
    B -->|浏览器控制| C[网页操作]
    B -->|API 调用| D[外部服务]
    
    subgraph 连接方式
        E[本地 Skyvern 服务器]
        F[Skyvern Cloud]
    end
    
    B -.-> E
    B -.-> F

MCP 支持的功能

  • 填写表单
  • 下载文件
  • 网页信息研究
  • 自动化数据采集

资料来源:integrations/mcp/README.md:1-30

工作流执行统计

工作流运行后提供以下关键指标:

指标说明阈值颜色
成功率成功运行占比≥80% 绿色、≥50% 黄色、<50% 红色
运行次数当前版本的执行总数-
历史版本数早于当前版本的修订数量-

资料来源:skyvern-frontend/src/routes/workflows/WorkflowScriptDetailPage.tsx:20-50

调度执行

工作流支持基于 Cron 表达式的定时调度:

配置项说明
timezone调度时区
cron_expressionCron 表达式
next_runs接下来预计执行的时间点
created_at创建时间
modified_at最后修改时间

调度配置界面实时显示下一次预计运行时间,支持用户选择时区和预览调度计划。

资料来源:skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx:1-50

总结

Skyvern 的 AI 代理系统通过自然语言理解、工作流编排和浏览器自动化三大核心能力,实现了复杂的网页自动化任务。系统支持灵活的条件分支、人机交互、脚本复用和定时调度,可与主流 LLM 提供商集成,适用于网页数据采集、表单填写、自动化测试等多种场景。

资料来源:[integrations/mcp/README.md:1-20]()

任务系统

任务系统是 Skyvern 的核心模块,负责管理和自动化浏览器操作任务。该系统允许用户通过自然语言描述定义导航目标和操作步骤,Skyvern 自动解析指令并在浏览器中执行相应操作。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 TaskRequest 任务请求

继续阅读本节完整说明和来源证据。

章节 TaskV2 数据模型

继续阅读本节完整说明和来源证据。

章节 TaskV1Service 服务

继续阅读本节完整说明和来源证据。

概述

任务系统是 Skyvern 的核心模块,负责管理和自动化浏览器操作任务。该系统允许用户通过自然语言描述定义导航目标和操作步骤,Skyvern 自动解析指令并在浏览器中执行相应操作。

任务系统采用双版本架构设计,包含 v1 和 v2 两个版本的服务实现,支持向后兼容的同时引入更强大的功能。任务由多个核心组件构成,包括任务请求、导航目标、导航负载和执行状态追踪。

资料来源:skyvern/services/task_v2_service.py:1-50

核心数据模型

TaskRequest 任务请求

任务请求是创建任务时提交的核心数据结构,包含执行任务所需的所有信息。

字段类型描述
urlstring任务起始 URL,浏览器首先导航到此页面
navigation_goalstring导航目标,描述 Skyvern 应执行的操作
navigation_payloadobject导航负载,传递额外的参数、路由或状态信息
titlestring任务名称,用于标识和管理
descriptionstring任务描述,说明任务的用途

资料来源:skyvern/forge/sdk/schemas/tasks.py:1-30

TaskV2 数据模型

TaskV2 是任务系统的核心数据结构,继承自基础任务模型并扩展了更多功能。

classDiagram
    class TaskV2 {
        +str task_id
        +str organization_id
        +TaskRequestV2 request
        +TaskStatus status
        +List~Step~ steps
        +datetime created_at
        +datetime modified_at
        +int max_steps
        +str error
    }
    
    class TaskRequestV2 {
        +str url
        +str navigation_goal
        +Dict navigation_payload
        +str title
        +str description
        +str webhook_callback_url
    }
    
    class Step {
        +str step_id
        +str task_id
        +StepStatus status
        +str action
        +str reasoning
        +str result
    }
    
    TaskV2 --> TaskRequestV2
    TaskV2 --> Step

资料来源:skyvern/forge/sdk/schemas/task_v2.py:1-100

任务服务架构

TaskV1Service 服务

TaskV1Service 是早期版本的任务服务实现,提供基本的任务创建、查询和执行功能。

方法功能
create_task()创建新任务
get_task()获取任务详情
list_tasks()列出组织内的所有任务
cancel_task()取消正在执行的任务

资料来源:skyvern/services/task_v1_service.py:1-80

TaskV2Service 服务

TaskV2Service 是当前推荐使用的任务服务版本,提供增强的功能和更好的扩展性。

graph TD
    A[create_task] --> B{验证请求}
    B -->|通过| C[创建任务记录]
    B -->|失败| D[返回错误]
    C --> E[进入队列]
    E --> F{分配执行器}
    F --> G[执行任务步骤]
    G --> H{步骤完成?}
    H -->|是| I{还有更多步骤?}
    I -->|是| G
    I -->|否| J[任务完成]
    H -->|否| K[处理错误]
    K --> L[记录错误状态]

资料来源:skyvern/services/task_v2_service.py:1-150

任务生命周期

任务状态流转

任务在执行过程中会经历多种状态,了解这些状态有助于监控和调试任务执行。

stateDiagram-v2
    [*] --> Created: 创建任务
    Created --> Queued: 进入队列
    Queued --> Running: 开始执行
    Running --> Completed: 正常完成
    Running --> Failed: 执行失败
    Running --> Cancelled: 用户取消
    Completed --> [*]
    Failed --> [*]
    Cancelled --> [*]

状态详情

状态描述
Created任务已创建,等待进入队列
Queued任务在队列中等待执行,通常需要1-2分钟
Running任务正在执行,浏览器操作进行中
Completed任务成功完成
Failed任务执行失败,可能包含错误信息
Cancelled用户主动取消的任务

资料来源:skyvern/forge/sdk/schemas/task_v2.py:50-80

SDK 使用指南

Python SDK 任务创建

使用 Skyvern Python SDK 可以方便地创建和管理任务:

from skyvern import Skyvern

skyvern = Skyvern(api_key="your-api-key")

# 创建并等待任务完成
task = await skyvern.run_task(
    prompt="Find the top post on hackernews today",
    url="https://news.ycombinator.com",
)

print(f"Task ID: {task.task_id}")
print(f"Status: {task.status}")

资料来源:README.md:1-50

异步任务执行

任务可以在后台异步执行,无需保持脚本运行:

import asyncio
from skyvern_langchain.client import DispatchTask

dispatch_task = DispatchTask(api_key="your-api-key")

async def main():
    result = await dispatch_task.ainvoke(
        "Navigate to the Hacker News homepage and get the top 3 posts."
    )
    print(result)

asyncio.run(main())

资料来源:integrations/langchain/README.md:1-60

前端集成

任务创建表单

前端界面提供直观的表单组件用于创建任务:

// CreateNewTaskForm.tsx 核心结构
<FormField
  control={form.control}
  name="navigationGoal"
  render={({ field }) => (
    <FormItem>
      <FormLabel>
        <h1 className="text-lg">Navigation Goal</h1>
        <h2 className="text-base text-slate-400">
          Where should Skyvern go and what should Skyvern do?
        </h2>
      </FormLabel>
      <FormControl>
        <AutoResizingTextarea
          placeholder="Tell Skyvern what to do."
          {...field}
        />
      </FormControl>
    </FormItem>
  )}
/>

资料来源:skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1-30

导航负载配置

高级设置允许用户指定额外的导航参数:

参数描述示例
routes指定导航路径["/login", "/dashboard"]
states页面状态信息{"loggedIn": true}
custom_headers自定义请求头{"Authorization": "Bearer xxx"}

资料来源:skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx:40-80

任务执行步骤

步骤追踪

每个任务执行过程中会被分解为多个步骤,每个步骤记录详细执行信息:

字段描述
step_id步骤唯一标识
action执行的浏览器操作
reasoningLLM 推理过程
result操作结果
status步骤状态

资料来源:skyvern/forge/sdk/schemas/task_v2.py:80-120

实时流显示

前端支持实时查看任务执行画面:

// TaskActions.tsx 流显示逻辑
if (task?.status === Status.Running && streamImgSrc.length > 0) {
  return (
    <div className="h-full w-full">
      <ZoomableImage
        src={`data:image/${streamFormat};base64,${streamImgSrc}`}
      />
    </div>
  );
}

资料来源:skyvern-frontend/src/routes/tasks/detail/TaskActions.tsx:30-50

任务管理接口

列出任务

获取组织内的任务历史记录:

// TaskHistory.tsx 任务列表结构
<TableHeader>
  <TableRow>
    <TableHead className="w-1/4">ID</TableHead>
    <TableHead className="w-1/4">URL</TableHead>
    <TableHead className="w-1/6">Status</TableHead>
    <TableHead className="w-1/4">Created At</TableHead>
    <TableHead className="w-1/12" />
  </TableRow>
</TableHeader>

资料来源:skyvern-frontend/src/routes/tasks/list/TaskHistory.tsx:20-35

查看任务详情

查看特定任务的详细信息和参数:

// TaskParameters.tsx 参数展示
<section className="space-y-8 rounded-lg bg-slate-elevation3 px-6 py-5">
  <div className="flex gap-16">
    <div className="w-72">
      <h1 className="text-lg">URL</h1>
      <h2 className="text-base text-slate-400">
        The starting URL for the task
      </h2>
    </div>
    <Input value={task.request.url} readOnly />
  </div>
</section>

资料来源:skyvern-frontend/src/routes/tasks/detail/TaskParameters.tsx:15-35

定时任务调度

任务系统支持通过定时调度自动化执行任务:

组件功能
CreateScheduleDialog创建调度对话框
WorkflowSchedulePanel工作流调度面板
ScheduleCard调度卡片展示
ScheduleDetailPage调度详情页面

调度配置

// CreateScheduleDialog.tsx 调度创建
<DialogFooter>
  <Button variant="secondary" onClick={() => setOpen(false)}>
    Cancel
  </Button>
  <Button disabled={!valid || isPending} onClick={handleSubmit}>
    {isPending ? "Creating..." : "Create Schedule"}
  </Button>
</DialogFooter>

资料来源:skyvern-frontend/src/routes/workflows/editor/panels/schedulePanel/CreateScheduleDialog.tsx:60-80

凭证与安全

TOTP 认证支持

任务系统支持二次验证(2FA)集成:

// CredentialsTotpTab.tsx
<PushTotpCodeForm
  className="mt-4"
  showAdvancedFields
  onSuccess={handleFormSuccess}
/>
字段描述
totp_identifier凭证标识符(邮箱或手机号)
totp_typeOTP 类型(numeric_code 或 magic_link)

资料来源:skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:15-40

最佳实践

1. 导航目标编写

编写清晰的导航目标描述:

# 推荐写法
"Find the top post on hackernews today and extract the title and URL"

# 避免
"Check the website"  # 过于模糊

2. URL 指定

始终提供完整的起始 URL,避免重定向导致的定位问题。

3. 导航负载使用

对于需要传递额外状态的场景,使用导航负载而非将所有信息放在导航目标中:

{
  "routes": ["/login", "/dashboard", "/reports"],
  "context": {
    "user_id": "12345",
    "view_mode": "detailed"
  }
}

4. 错误处理

监控任务状态并实现适当的错误处理逻辑:

if task.status == Status.Failed:
    print(f"Task failed: {task.error}")
elif task.status == Status.Completed:
    print("Task completed successfully")

相关文档

资料来源:[skyvern/services/task_v2_service.py:1-50]()

工作流系统

Skyvern 工作流系统(Workflow System)是一个用于编排多个自动化任务的核心模块,允许用户将多个浏览器任务、动作、数据提取操作等链接在一起,形成一个完整的自动化业务流程。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 工作流定义(WorkflowDefinition)

继续阅读本节完整说明和来源证据。

章节 工作流块(WorkflowBlock)

继续阅读本节完整说明和来源证据。

章节 块执行参数

继续阅读本节完整说明和来源证据。

系统概述

工作流系统的主要功能包括:

  • 多步骤自动化编排:将多个独立的浏览器任务和操作链接成连贯的工作流程
  • 灵活的参数传递:支持在不同的块(Block)之间传递参数和数据
  • 条件分支控制:支持基于条件的分支执行逻辑
  • 循环迭代:支持对数据集进行遍历处理
  • 错误处理与恢复:支持在块失败时继续执行或回退到 AI 重新生成代码

核心数据模型

工作流定义(WorkflowDefinition)

工作流定义是整个工作流系统的核心数据结构,包含以下关键属性:

属性类型说明
idstring工作流唯一标识符
titlestring工作流标题
descriptionstring工作流描述
parameterslist输入参数定义
blockslist工作流中的块列表
versionint版本号
statusWorkflowStatus工作流状态
folder_idstring所属文件夹 ID
created_bystring创建者 ID
edited_bystring最后编辑者 ID

资料来源:skyvern/schemas/workflows.py

工作流块(WorkflowBlock)

工作流块是组成工作流的基本单元,每种块类型代表不同的操作或功能。

块类型体系

Skyvern 工作流支持多种类型的块,用于构建复杂的自动化流程:

块类型说明主要参数
BrowserTask / Taskv2浏览器任务,执行网页自动化操作prompt, url, max_steps, totp_verification_url
Navigation导航块,跳转到指定 URLurl, continue_on_failure
Action动作块,执行点击、输入等操作action_type, selector
Extraction数据提取块,从页面提取结构化数据json_schema, prompt
Validation验证块,验证页面状态或数据schema, error_codes
TextPrompt文本提示块,调用 LLM 生成文本prompt, llm_key, json_schema
HTTPRequestHTTP 请求块,发送 API 请求url, method, headers, body
Wait等待块,等待指定时间或条件duration
PrintPage打印块,打印当前页面format, landscape, print_background
HumanInteraction人工交互块,暂停等待用户确认instructions, positive_descriptor
Conditional条件块,基于条件选择执行分支expression
ForLoop循环块,遍历数据集合iterable, loop_variable
FileDownload文件下载块url, download_filename
Login登录块credentials
Code自定义代码块code, language

资料来源:skyvern/forge/sdk/workflow/models/block.py

块执行参数

不同的块类型支持特定的参数配置:

// Taskv2 块参数示例
interface Taskv2BlockParameters {
  prompt: string;           // 任务提示词
  url: string;             // 目标 URL
  max_steps: number;       // 最大步数
  totp_verification_url?: string;  // TOTP 验证 URL
  totp_identifier?: string;       // TOTP 标识符
  disable_cache?: boolean;        // 是否禁用缓存
}
// 文本提示块参数示例
interface TextPromptBlockParameters {
  prompt: string;          // 提示词模板
  llm_key: string;        // 使用的 LLM 密钥
  json_schema?: object;   // 输出 JSON Schema
  parameters: string[];   // 依赖的参数列表
}

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/WorkflowPostRunParameters.tsx

工作流执行流程

执行架构

graph TD
    A[开始工作流] --> B[加载工作流定义]
    B --> C[初始化参数]
    C --> D[执行第一个块]
    D --> E{块类型判断}
    E -->|Task/Action| F[启动浏览器任务]
    E -->|Extraction| G[提取数据]
    E -->|HTTPRequest| H[发送 HTTP 请求]
    E -->|Conditional| I[评估条件]
    E -->|ForLoop| J[开始循环]
    F --> K{任务状态}
    K -->|成功| L[保存结果]
    K -->|失败| M{AI Fallback?}
    M -->|是| N[重新生成代码]
    M -->|否| O[报告错误]
    L --> P{还有下一个块?}
    P -->|是| D
    P -->|否| Q[工作流完成]
    N --> F

执行模式

工作流支持两种执行模式:

模式说明适用场景
Skyvern Agent使用 AI Agent 动态生成执行代码复杂、变化的网页环境
Code使用预先保存的成功运行的代码稳定、可复现的任务
// 开始节点配置
interface StartNodeData {
  runWith: 'agent' | 'code';    // 执行模式
  aiFallback: boolean;          // AI 回退开关
  codeKey?: string;             // 代码缓存键
  cacheKey?: string;            // 缓存键
  adaptiveCaching?: boolean;    // 自适应缓存
  generateScriptOnTerminal?: boolean;  // 结束时生成脚本
  runSequentially?: boolean;    // 顺序执行
  sequentialKey?: string;       // 顺序执行键
}

资料来源:skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx

工作流运行管理

工作流运行(WorkflowRun)

工作流运行实例包含以下核心信息:

属性说明
workflow_run_id运行唯一 ID
workflow_permanent_id关联的工作流永久 ID
parent_workflow_run_id父运行 ID(用于嵌套工作流)
organization_id组织 ID
status运行状态
parameters运行参数
output运行输出结果

运行参数验证

工作流运行前会对输入参数进行严格的类型验证:

参数类型验证规则
json必填,字符串需可解析为有效 JSON
boolean必填,布尔值
integer / float必填,需为有效数字
file_url必填,URL 格式
string可选,空字符串视为空值
// 参数验证逻辑示例
const validateParameter = (parameter: WorkflowParameter, value: any) => {
  if (parameter.workflow_parameter_type === 'json') {
    if (value === null || value === undefined) return "This field is required";
    if (typeof value === 'string') {
      try {
        JSON.parse(value.trim());
        return true;
      } catch (e) {
        return "Invalid JSON";
      }
    }
  }
  // ... 其他类型验证
};

资料来源:skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx

Webhook 回调

工作流完成后可向指定的 Webhook URL 发送回调通知:

interface WebhookConfig {
  webhookCallbackUrl: string;  // 回调 URL
  // 回调将包含工作流执行的详细结果
}

调度与定时执行

调度配置

工作流支持通过 Cron 表达式进行定时调度:

配置项说明
cron_expressionCron 表达式
timezone时区设置
schedule_name调度名称(可选,自动生成)
schedule_description调度描述(可选)
workflow_parameters运行时参数

快速预设

系统提供常用的 Cron 预设:

预设标签表达式说明
每小时0 * * * *每小时整点执行
每天0 0 * * *每天午夜执行
每周0 0 * * 0每周日执行
每月0 0 1 * *每月1日执行

资料来源:skyvern-frontend/src/routes/schedules/CreateOrgScheduleDialog.tsx

MCP 集成

Skyvern 通过 MCP(Model Context Protocol)提供工作流相关的工具函数:

工作流管理工具

工具名称功能
skyvern_workflow_create创建新工作流
skyvern_workflow_list列出所有工作流
skyvern_workflow_get获取工作流详情
skyvern_workflow_run运行工作流
skyvern_workflow_status查询运行状态
skyvern_workflow_update更新工作流
skyvern_workflow_delete删除工作流
skyvern_workflow_cancel取消运行中的工作流
skyvern_workflow_update_folder更新工作流所属文件夹

工作流构建工具

工具名称功能
skyvern_block_schema获取块类型定义
skyvern_block_validate验证块配置

缓存脚本工具

工具名称功能
skyvern_script_list_for_workflow列出工作流的缓存脚本
skyvern_script_get_code获取脚本代码
skyvern_script_versions获取脚本版本历史
skyvern_script_deploy部署脚本
skyvern_script_fallback_episodes获取回退事件记录

资料来源:skyvern/cli/mcp_tools/README.md

前端组件架构

工作流编辑器

graph TD
    A[工作流编辑器] --> B[WorkflowHistoryPanel]
    A --> C[块编辑面板]
    A --> D[StartNode]
    A --> E[WorkflowTriggerNode]
    C --> F[BlockParameters]
    F --> |TextPrompt| G[TextPromptBlockParameters]
    F --> |Taskv2| H[Taskv2BlockParameters]
    F --> |URL| I[GotoUrlBlockParameters]
    F --> |Conditional| J[ConditionalBlockParameters]

运行时信息展示

工作流运行过程中的每个块都会记录详细的执行信息:

信息类型说明
extracted_information提取的数据结果(JSON 格式)
failure_reason失败原因(如有)
navigation_goal原始导航目标
parameters块执行参数
diagnostics诊断信息链接
interface BlockExecutionInfo {
  block_type: WorkflowBlockTypes;
  task_id?: string;
  status: Status;
  output?: object;
  executed_branch_expression?: string;
  executed_branch_result?: boolean;
  executed_branch_next_block?: string;
}

资料来源:skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineItemInfoSection.tsx

数据库模型转换

后端通过 convert_to_workflow 函数将数据库模型转换为前端可用的数据结构:

def convert_to_workflow(
    workflow_model: WorkflowModel,
    is_template: bool = False,
) -> Workflow:
    return Workflow(
        workflow_id=workflow_model.workflow_id,
        workflow_permanent_id=workflow_model.workflow_permanent_id,
        title=workflow_model.title,
        version=workflow_model.version,
        is_saved_task=workflow_model.is_saved_task,
        is_template=is_template,
        description=workflow_model.description,
        workflow_definition=WorkflowDefinition.model_validate(
            workflow_model.workflow_definition
        ),
        # ... 其他字段映射
    )

资料来源:skyvern/forge/sdk/db/utils.py

常见使用场景

场景一:发票批量下载

  1. 使用 URL 块导航到发票页面
  2. 使用 Filter 块设置日期过滤条件
  3. 使用 Extraction 块提取发票列表
  4. 使用 ForLoop 块遍历每个发票
  5. 使用 FileDownload 块下载每个发票

场景二:电商自动化购买

  1. 使用 URL 块导航到产品页面
  2. 使用 Browser Action 块添加商品到购物车
  3. 使用 Navigation 块进入购物车页面
  4. 使用 Validation 块验证购物车状态
  5. 使用 Browser Action 块完成结账流程

场景三:数据采集与报告

  1. 使用 HTTPRequest 块获取外部 API 数据
  2. 使用 TextPrompt 块使用 LLM 分析数据
  3. 使用 Email 块发送分析报告

错误处理机制

块级别错误处理

每个块支持 continue_on_failure 配置,控制失败时的行为:

配置值行为
true继续执行下一个块
false停止工作流并报告错误

AI 自愈机制

当使用代码执行模式失败时,系统支持自动回退到 AI Agent 重新生成代码:

任务失败 → 检查 AI Fallback 设置 → 启用则用 AI 重新生成 → 再次执行

资料来源:skyvern-frontend/src/routes/workflows/editor/nodes/StartNode/StartNode.tsx

文件夹组织

工作流支持通过文件夹进行组织管理:

操作说明
创建文件夹skyvern_folder_create
列出文件夹skyvern_folder_list
获取文件夹skyvern_folder_get
更新文件夹skyvern_folder_update
删除文件夹skyvern_folder_delete

资料来源:skyvern/cli/mcp_tools/README.md

相关资源

  • 官方文档:https://skyvern.com/docs/workflows
  • MCP 集成文档:https://skyvern.com/docs/integrations/mcp
  • GitHub 仓库:https://github.com/Skyvern-AI/skyvern

资料来源:[skyvern/schemas/workflows.py]()

数据库与数据模型

Skyvern 是一个基于浏览器的自动化平台,其数据模型设计用于支持工作流执行、任务管理、凭证存储、日程调度等核心功能。系统采用 Python 作为后端开发语言,使用 SQLAlchemy 作为 ORM 框架,并通过 Alembic 进行数据库版本管理。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 组织与认证模型

继续阅读本节完整说明和来源证据。

章节 工作流相关模型

继续阅读本节完整说明和来源证据。

章节 任务模型

继续阅读本节完整说明和来源证据。

概述

Skyvern 是一个基于浏览器的自动化平台,其数据模型设计用于支持工作流执行、任务管理、凭证存储、日程调度等核心功能。系统采用 Python 作为后端开发语言,使用 SQLAlchemy 作为 ORM 框架,并通过 Alembic 进行数据库版本管理。

Skyvern 的数据库层主要位于 skyvern/forge/sdk/db/ 目录下,核心数据模型定义在 models.py 文件中,数据访问逻辑封装在 repositories 目录下。

核心数据模型

组织与认证模型

#### Organization(组织)

Organization 模型定义了 Skyvern 中的顶级组织实体,用于多租户隔离。

字段类型说明
organization_idUUID组织唯一标识符
nameString组织名称
created_atDateTime创建时间
modified_atDateTime修改时间

资料来源:skyvern/forge/sdk/db/models.py

#### User(用户)

User 模型关联到特定组织,存储用户认证信息。

字段类型说明
user_idUUID用户唯一标识符
organization_idUUID所属组织 ID(外键)
emailString用户邮箱
hashed_passwordString密码哈希值
is_superuserBoolean是否为超级管理员

资料来源:skyvern/forge/sdk/db/models.py

工作流相关模型

#### Workflow(工作流)

Workflow 是 Skyvern 自动化的核心实体,定义了自动化任务的配置和执行逻辑。

字段类型说明
workflow_idUUID工作流唯一标识符
organization_idUUID所属组织 ID(外键)
titleString工作流标题
descriptionString工作流描述
definitionJSON工作流定义(包含所有块和连接)
proxy_configJSON代理配置
max_steps_per_runInteger每次运行的最大步数
created_atDateTime创建时间
modified_atDateTime修改时间

资料来源:skyvern/forge/sdk/db/models.py

#### WorkflowVersion(工作流版本)

用于版本控制,记录工作流的修改历史。

字段类型说明
workflow_version_idUUID版本 ID
workflow_idUUID所属工作流 ID(外键)
versionInteger版本号
definitionJSON该版本的完整定义
created_atDateTime创建时间

资料来源:skyvern/forge/sdk/db/models.py

#### WorkflowRun(工作流运行实例)

记录每次工作流执行的实例及其状态。

字段类型说明
workflow_run_idUUID运行实例 ID
workflow_idUUID所属工作流 ID(外键)
statusEnum运行状态(pending/running/completed/failed)
workflow_revisionInteger运行时使用的工作流版本
started_atDateTime开始时间
completed_atDateTime完成时间
error_codeString错误代码(如果失败)
error_messageString错误信息
task_idUUID关联的底层任务 ID

资料来源:skyvern/forge/sdk/db/models.py

#### WorkflowBlock(工作流块实例)

表示工作流运行时每个块的执行状态。

字段类型说明
block_idUUID块实例 ID
workflow_run_idUUID所属运行 ID(外键)
block_typeString块类型(task/condition/action 等)
block_id_refString引用工作流定义中的块 ID
statusEnum块执行状态
orderInteger执行顺序
outputJSON块输出数据
executed_branch_expressionString条件分支表达式(如果适用)
executed_branch_next_blockString实际执行的下一个块

资料来源:skyvern/forge/sdk/db/models.py

任务模型

#### Task(任务)

Task 是 Skyvern 底层的任务执行单元,每个工作流运行会创建相应的任务。

字段类型说明
task_idUUID任务唯一标识符
organization_idUUID所属组织 ID(外键)
workflow_run_idUUID关联的工作流运行 ID
statusEnum任务状态(pending/running/completed/failed)
navigation_goalText导航目标描述
navigation_payloadJSON导航负载参数
extracted_contentJSON提取的内容
failure_reasonString失败原因
created_atDateTime创建时间
modified_atDateTime修改时间

资料来源:skyvern/forge/sdk/db/models.py

#### TaskStep(任务步骤)

记录任务的每个执行步骤。

字段类型说明
step_idUUID步骤 ID
task_idUUID所属任务 ID(外键)
orderInteger步骤顺序
statusEnum步骤状态
actionString执行的动作
reasoningTextAI 推理过程
resultJSON步骤执行结果
error_codeString错误代码
error_messageString错误信息

资料来源:skyvern/forge/sdk/db/models.py

凭证模型

#### Credential(凭证)

安全存储各种认证凭据。

字段类型说明
credential_idUUID凭证 ID
organization_idUUID所属组织 ID(外键)
credential_nameString凭证名称
credential_typeString凭证类型(api_key/oauth/password 等)
credential_valueEncryptedString加密存储的凭证值
metadataJSON额外元数据
created_atDateTime创建时间

资料来源:skyvern/forge/sdk/db/models.py

#### CustomCredentialServiceAuthToken(自定义凭证服务令牌)

用于存储自定义凭证服务的认证令牌。

字段类型说明
idUUID令牌 ID
organization_idUUID所属组织 ID(外键)
token_typeString令牌类型
api_base_urlStringAPI 基础 URL
api_tokenEncryptedString加密的 API 令牌
created_atDateTime创建时间

资料来源:skyvern/forge/sdk/db/models.py

#### TOTP(两步验证码)

存储 TOTP 相关配置。

字段类型说明
totp_idUUIDTOTP ID
organization_idUUID所属组织 ID(外键)
identifierString标识符(邮箱/手机等)
totp_typeEnumTOTP 类型(numeric/magic_link)
totp_valueEncryptedString加密的 TOTP 密钥
created_atDateTime创建时间

资料来源:skyvern/forge/sdk/db/models.py

日程调度模型

#### Schedule(日程)

用于定时触发工作流执行。

字段类型说明
schedule_idUUID日程 ID
organization_idUUID所属组织 ID(外键)
workflow_idUUID关联的工作流 ID(外键)
cron_expressionStringCron 表达式
timezoneString时区
workflow_parametersJSON工作流参数字典
created_atDateTime创建时间
modified_atDateTime修改时间

资料来源:skyvern/forge/sdk/db/models.py

脚本与缓存模型

#### WorkflowScript(工作流脚本)

存储可重用的工作流代码片段。

字段类型说明
script_idUUID脚本 ID
organization_idUUID所属组织 ID(外键)
workflow_permanent_idUUID关联的工作流永久 ID
cache_keyString缓存键
current_revisionInteger当前版本号
created_atDateTime创建时间
modified_atDateTime修改时间

资料来源:skyvern/forge/sdk/db/models.py

#### WorkflowScriptRevision(脚本版本)

存储脚本的各个版本。

字段类型说明
revision_idUUID版本 ID
script_idUUID所属脚本 ID(外键)
revisionInteger版本号
contentText脚本内容
created_atDateTime创建时间

资料来源:skyvern/forge/sdk/db/models.py

数据仓库层

Repository 模式

Skyvern 使用 Repository 模式封装数据访问逻辑,所有仓库类位于 skyvern/forge/sdk/db/repositories 目录下。

graph TD
    A[Service Layer] --> B[Repository Layer]
    B --> C[SQLAlchemy Session]
    C --> D[(Database)]
    
    E[OrganizationRepository] --> B
    F[WorkflowRepository] --> B
    G[TaskRepository] --> B
    H[CredentialRepository] --> B
    I[ScheduleRepository] --> B

核心 Repository 类

Repository 类职责主要方法
OrganizationRepository组织管理create, get, update, delete
WorkflowRepository工作流 CRUDcreate_workflow, get_workflow, update_workflow
WorkflowRunRepository工作流运行管理create_run, get_run, update_status
TaskRepository任务管理create_task, get_task, update_task
TaskStepRepository任务步骤管理create_step, get_steps
CredentialRepository凭证管理create_credential, get_credential
ScheduleRepository日程管理create_schedule, get_schedules
WorkflowScriptRepository脚本管理create_script, get_revisions

资料来源:skyvern/forge/sdk/db/repositories

数据库迁移

Alembic 版本管理

Skyvern 使用 Alembic 进行数据库版本控制,迁移文件位于 alembic/versions/ 目录。

迁移目录结构:

alembic/
├── env.py              # Alembic 环境配置
├── script.py.mako      # 迁移脚本模板
└── versions/           # 迁移版本文件
    ├── xxx_initial.py
    ├── xxx_add_workflow.py
    ├── xxx_add_credential.py
    └── ...

迁移操作

graph LR
    A[修改 models.py] --> B[生成迁移脚本]
    B --> C[alembic revision --autogenerate]
    C --> D[应用迁移]
    D --> E[alembic upgrade head]

资料来源:alembic/versions

数据关系图

工作流执行数据流

graph TD
    A[Workflow] -->|1:N| B[WorkflowVersion]
    A -->|1:N| C[WorkflowRun]
    C -->|1:N| D[WorkflowBlock]
    C -->|1:1| E[Task]
    E -->|1:N| F[TaskStep]
    
    A -->|1:N| G[Schedule]
    
    A -->|1:N| H[WorkflowScript]
    H -->|1:N| I[WorkflowScriptRevision]
    
    J[Organization] -->|1:N| A
    J -->|1:N| K[Credential]
    J -->|1:N| E

凭证存储结构

graph TD
    A[Organization] -->|1:N| B[Credential]
    A -->|1:N| C[CustomCredentialServiceAuthToken]
    A -->|1:N| D[TOTP]
    
    B -->|credential_type| E[api_key]
    B -->|credential_type| F[oauth]
    B -->|credential_type| G[password]
    
    D -->|totp_type| H[numeric]
    D -->|totp_type| I[magic_link]

数据安全

敏感数据加密

以下字段使用 EncryptedString 类型存储,确保敏感信息在数据库中加密:

资料来源:skyvern/forge/sdk/db/models.py

组织隔离

所有数据模型都包含 organization_id 字段,确保多租户环境下的数据隔离。数据访问时必须指定组织 ID,防止跨租户数据泄露。

与前端的交互

API 端点

前端通过 REST API 与后端交互,关键的数据接口包括:

接口路径用途
/api/v1/workflows工作流管理
/api/v1/tasks任务管理
/api/v1/credentials凭证管理
/api/v1/schedules日程管理
/api/v1/scripts脚本管理

资料来源:skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx 资料来源:skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx

状态管理

前端使用 React Query 或类似工具进行服务端状态管理,从后端 API 获取数据后缓存并同步到 UI 组件。

sequenceDiagram
    Frontend->>Backend: GET /api/v1/workflows
    Backend->>Database: SELECT workflows
    Database->>Backend: workflow data
    Backend->>Frontend: JSON response
    Frontend->>Frontend: Update UI state

总结

Skyvern 的数据库设计采用清晰的分层架构,核心数据模型覆盖了组织管理、工作流自动化、任务执行、凭证安全和日程调度等关键业务场景。通过 Repository 模式封装数据访问,配合 Alembic 进行数据库版本管理,确保了系统的可维护性和扩展性。所有敏感数据采用加密存储,组织级别的数据隔离保障了多租户环境的安全性。

资料来源:[skyvern/forge/sdk/db/models.py]()

凭证管理系统

Skyvern 的凭证管理系统(Credential Management System)是用于安全存储、管理和调用用户认证凭据的核心模块。该系统支持多种凭证类型和外部密钥管理服务集成,为浏览器自动化任务和工作流执行提供安全的身份验证能力。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 组件特性

继续阅读本节完整说明和来源证据。

章节 数据展示

继续阅读本节完整说明和来源证据。

章节 TOTP 凭证标签

继续阅读本节完整说明和来源证据。

概述

Skyvern 的凭证管理系统(Credential Management System)是用于安全存储、管理和调用用户认证凭据的核心模块。该系统支持多种凭证类型和外部密钥管理服务集成,为浏览器自动化任务和工作流执行提供安全的身份验证能力。

凭证管理系统的主要职责包括:

  • 安全存储密码、信用卡信息和密钥凭证
  • 集成外部密钥管理服务(Bitwarden、Azure Key Vault、1Password)
  • 支持双因素认证(2FA/TOTP)流程
  • 为工作流节点和 HTTP 请求提供凭证注入能力
  • 管理会话持久化和浏览器认证状态

资料来源:CredentialSelector.tsx:45-52

凭证类型

Skyvern 支持三种主要凭证类型,每种类型对应不同的使用场景。

凭证类型英文标识说明
密码凭证password用于网站登录和表单认证的用户名密码组合
信用卡凭证credit_card用于支付表单的信用卡信息存储
密钥凭证secret用于 API 密钥、OAuth Token 等敏感字符串

凭证类型在前端界面中通过下拉选择器呈现,用户可以根据实际需求选择相应的凭证类型进行配置。

资料来源:CredentialSelector.tsx:43-53

凭证选择器组件

CredentialSelector 是工作流编辑器中用于选择已配置凭证的 UI 组件。该组件提供以下功能:

组件特性

  • 显示凭证名称和关联域名
  • 根据凭证类型显示对应标签(Password / Credit Card / Secret)
  • 支持过滤和搜索凭证列表
  • 内置凭证创建模态框入口

数据展示

凭证选择器展示每个凭证的以下信息:

  • 凭证名称
  • 关联 URL 的主机名(从 tested_url 字段提取)
  • 凭证类型标签
  • 凭证描述
<p className="text-xs text-slate-400">
  {credential.credential_type === "password"
    ? "Password"
    : credential.credential_type === "credit_card"
      ? "Credit Card"
      : "Secret"}
</p>

资料来源:CredentialSelector.tsx:37-54

双因素认证(TOTP)支持

Skyvern 提供了完整的双因素认证(Time-based One-Time Password)支持,用于处理需要动态验证码的认证场景。

TOTP 凭证标签

CredentialsTotpTab 组件提供 TOTP 凭证管理界面,包含以下功能:

  • 验证码推送表单:用户输入收到的验证码,Skyvern 自动提取并关联到相关任务执行
  • 按标识符过滤:支持按邮箱或手机号码筛选 TOTP 凭证记录
  • 按类型过滤:支持选择全部类型、纯数字验证码(totp)或魔法链接(magic_link)

2FA 代码处理流程

用户在认证过程中收到包含验证码的消息后,通过推送表单将验证码提交给 Skyvern。系统自动识别验证码格式并附加到相应的运行实例。

<h2 className="text-lg font-semibold">Push a 2FA Code</h2>
<p className="mt-1 text-sm text-slate-400">
  Paste the verification message you received. Skyvern extracts the code
  and attaches it to the relevant run.
</p>

资料来源:CredentialsTotpTab.tsx:14-19

自定义凭证服务配置

对于需要使用私有密钥管理服务的场景,Skyvern 支持配置自定义凭证服务。

配置表单功能

CustomCredentialServiceConfigForm 组件提供以下配置选项:

  • API 基础 URL:指定凭证服务 API 的基础地址
  • 认证令牌:输入服务的访问令牌
  • 令牌类型:支持多种令牌认证方式
  • 创建时间:记录凭证服务的初始化时间

敏感信息处理

系统对敏感信息进行掩码处理,只显示令牌的前 8 个字符:

<div>
  <strong>Token (masked):</strong>{" "}
  {parsedConfig.api_token.length > 8
    ? `${parsedConfig.api_token.slice(0, 8)}...`
    : "********"}
</div>

资料来源:CustomCredentialServiceConfigForm.tsx:23-32

MCP 工具集成

Skyvern 通过 MCP(Model Context Protocol)提供完整的凭证管理工具集,支持在 AI 应用中调用凭证操作。

可用工具列表

工具名称功能说明
skyvern_login执行网站登录流程
skyvern_credential_list列出所有可用凭证
skyvern_credential_get获取指定凭证详情
skyvern_credential_delete删除指定凭证

支持的密钥管理服务

MCP 凭证工具支持与以下密钥管理服务集成:

  • Skyvern Vault:内置的安全存储服务
  • Bitwarden:开源密码管理器
  • 1Password:商业密码管理平台
  • Azure Key Vault:微软云密钥管理服务

所有集成都支持自动处理双因素认证(2FA)和 TOTP 流程。

资料来源:cli/mcp_tools/README.md:26-32

工作流中的凭证使用

HTTP 请求节点

在工作流编辑器中,HttpRequestNode 组件为 HTTP 请求提供凭证注入能力。支持的凭证引用格式包括:

// 密码凭证引用
{{ my_credential.username }}
{{ my_credential.password }}

// 密钥凭证引用
{{ my_secret.secret_value }}

凭证变量在运行时会被自动替换为实际存储的敏感值。

快速提示功能

HTTP 请求节点内置了凭证使用指引,帮助用户正确配置认证信息:

  • 导入 cURL 功能:从 API 文档快速转换请求配置
  • 快速添加头部:自动插入常用的认证和内容类型头部
  • 响应数据引用:在后续节点中引用请求返回的状态码、头部和响应体

资料来源:HttpRequestNode.tsx:8-22

凭证数据模型

核心字段

凭证对象包含以下核心属性:

字段名类型说明
credential_idstring凭证唯一标识符
credential_typeenum凭证类型(password/credit_card/secret)
namestring凭证显示名称
tested_urlstring关联的测试 URL(可选)
created_atdatetime创建时间戳
api_base_urlstring自定义服务的 API 地址
api_tokenstring访问令牌(存储时加密)
token_typestring令牌类型标识

自定义凭证服务对象

对于外部服务集成,凭证服务配置包含:

字段名说明
id服务配置唯一标识
token_type令牌类型
created_at配置创建时间
api_base_urlAPI 基础地址
api_token认证令牌(加密存储)

资料来源:CustomCredentialServiceConfigForm.tsx:18-23

安全设计

敏感数据保护

系统采用多层安全策略保护敏感凭证数据:

  1. 存储加密:API 令牌等敏感信息在数据库中加密存储
  2. 显示掩码:前端界面只显示部分令牌信息,防止信息泄露
  3. 传输安全:通过 HTTPS 协议确保数据传输安全
  4. 访问控制:凭证访问需要相应的权限验证

凭证隔离

每个工作区和用户拥有独立的凭证存储空间,确保不同租户之间的数据隔离。

相关命令

Skyvern CLI 提供了便捷的凭证管理命令:

# 列出所有凭证
skyvern credential list

# 获取指定凭证
skyvern credential get <credential_id>

# 删除凭证
skyvern credential delete <credential_id>

扩展阅读

资料来源:[CredentialSelector.tsx:45-52]()

前端组件结构

Skyvern 前端是一个基于 React 和 TypeScript 构建的单页应用(SPA),负责提供用户与 Skyvern 自动化引擎交互的界面。前端采用现代化的组件架构,通过 react-router-dom 进行路由管理,使用 React Hook Form 进行表单处理,并借助 Tailwind CSS 实现样式系统。组件结构按照功能模块划分为任务(Tasks)、...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 1. 任务模块(Tasks)

继续阅读本节完整说明和来源证据。

章节 2. 工作流模块(Workflows)

继续阅读本节完整说明和来源证据。

章节 3. 调度模块(Schedules)

继续阅读本节完整说明和来源证据。

概述

Skyvern 前端是一个基于 React 和 TypeScript 构建的单页应用(SPA),负责提供用户与 Skyvern 自动化引擎交互的界面。前端采用现代化的组件架构,通过 react-router-dom 进行路由管理,使用 React Hook Form 进行表单处理,并借助 Tailwind CSS 实现样式系统。组件结构按照功能模块划分为任务(Tasks)、工作流(Workflows)、调度(Schedules)和凭证(Credentials)四大核心区域。

目录结构

Skyvern 前端源码位于 skyvern-frontend/src/ 目录下,核心路由和组件按照以下结构组织:

skyvern-frontend/src/
├── routes/                    # 路由层
│   ├── tasks/                # 任务模块
│   │   ├── create/           # 任务创建相关组件
│   │   └── ...
│   ├── workflows/            # 工作流模块
│   │   ├── editor/           # 工作流编辑器
│   │   │   ├── panels/       # 编辑器面板
│   │   │   ├── nodes/        # 节点组件
│   │   │   └── Workspace.tsx
│   │   ├── components/       # 工作流通用组件
│   │   ├── copilot/          # AI 副驾驶组件
│   │   └── workflowRun/      # 工作流运行相关
│   ├── schedules/            # 调度模块
│   ├── credentials/          # 凭证模块
│   └── App.tsx              # 应用根组件
└── components/              # 共享组件库

核心模块架构

1. 任务模块(Tasks)

任务模块负责创建和管理自动化任务,是 Skyvern 前端的核心功能之一。

#### 1.1 CreateNewTaskForm 组件

CreateNewTaskForm.tsx 是新建任务的表单组件,提供了导航目标(Navigation Goal)的输入功能。

字段类型说明
navigationGoalstring描述 Skyvern 应该去哪里以及做什么
navigationPayloadobject指定重要参数、路由或状态(高级设置)

组件使用 AutoResizingTextarea 组件实现自动调整高度的文本输入区域,当值为 null 时显示空字符串。高级设置区域通过条件渲染展示 navigationPayload 输入框。

资料来源:CreateNewTaskForm.tsx:10-25

#### 1.2 SavedTaskForm 组件

SavedTaskForm.tsx 用于加载和编辑已保存的任务。与 CreateNewTaskForm 类似,但增加了代码编辑器(CodeEditor)支持 JSON 格式的 navigationPayload 输入。高级设置区域可通过按钮切换显示/隐藏状态。

资料来源:SavedTaskForm.tsx:1-50

2. 工作流模块(Workflows)

工作流模块是 Skyvern 前端最复杂的部分,包含了可视化编辑器、执行表单、历史记录和 AI 副驾驶等功能。

#### 2.1 工作流编辑器架构

工作流编辑器采用节点面板(Node Panels)的架构设计,核心组件包括:

  • WorkflowEditor.tsx - 编辑器主容器
  • WorkflowHistoryPanel.tsx - 历史记录面板
  • StartNode.tsx - 起始节点配置

#### 2.2 StartNode 节点配置

StartNode 组件定义了工作流执行的核心参数:

参数类型默认值说明
runWithenum"agent"执行方式:Skyvern Agent 或 Code
aiFallbackboolean-启用 AI 自愈功能,代码执行失败时自动回退到 AI 重新生成
codeKeystring-可选的代码缓存键值

组件使用 HelpTooltip 组件提供上下文相关的帮助提示,使用 Select 组件选择执行方式,使用 Switch 组件控制布尔选项。

资料来源:StartNode.tsx:1-40

#### 2.3 RunWorkflowForm 执行表单

RunWorkflowForm.tsx 是运行工作流的表单组件,集成了以下功能:

输入参数验证

针对不同类型的工作流参数,表单实现了差异化的验证逻辑:

// JSON 类型参数验证
if (parameter.workflow_parameter_type === "json") {
    if (value === null || value === undefined) {
        return "This field is required";
    }
    if (typeof value === "string") {
        const trimmed = value.trim();
        if (trimmed === "") {
            return "This field is required";
        }
        try {
            JSON.parse(trimmed);
            return true;
        } catch (e) {
            return "Invalid JSON";
        }
    }
}

// 布尔类型参数验证
if (parameter.workflow_parameter_type === "boolean") {
    if (value === null || value === undefined) {
        return "This field is required";
    }
}

// 数值类型参数验证
if (parameter.workflow_parameter_type === "integer" || 
    parameter.workflow_parameter_type === "float") {
    if (value === null || value === undefined || Number.isNaN(value)) {
        return "This field is required";
    }
}

资料来源:RunWorkflowForm.tsx:1-80

Webhook 回调 URL 验证

表单使用 Zod schema 进行 URL 格式验证:

rules={{
    validate: (value) => {
        if (value === null || value === "") {
            return;
        }
        if (typeof value !== "string") {
            return "Invalid URL";
        }
        const urlSchema = z.string().url({ message: "Invalid URL" });
        const { success } = urlSchema.safeParse(value);
        if (!success) {
            return "Invalid URL";
        }
    },
}}

#### 2.4 WorkflowsTable 工作流列表

WorkflowsTable.tsx 提供了工作流的分页列表展示功能,集成了分页组件(Pagination)用于导航。

#### 2.5 CreateFromTemplateDialog 模板对话框

模板对话框允许用户基于预设模板创建工作流,支持模板搜索和筛选功能。组件使用卡片式布局展示模板,支持模糊搜索匹配模板标题和描述。

资料来源:CreateFromTemplateDialog.tsx:1-60

3. 调度模块(Schedules)

调度模块管理定时执行的工作流任务。

#### 3.1 CreateOrgScheduleDialog 创建调度对话框

创建调度的对话框组件提供了以下功能:

功能组件类型说明
工作流选择Select从可用工作流列表中选择
调度名称Input可选,自动生成如果为空
调度描述Input可选
参数配置ScheduleParametersSection工作流参数输入
Cron 预设Button Group常用 Cron 表达式快速选择
自定义 CronInput手动输入 Cron 表达式

组件预设了多个 Cron 表达式模板供快速选择:

const CRON_PRESETS = [
    { label: "Every hour", expression: "0 * * * *" },
    { label: "Every day", expression: "0 0 * * *" },
    { label: "Every week", expression: "0 0 * * 0" },
    // ...
];

资料来源:CreateOrgScheduleDialog.tsx:1-80

#### 3.2 ScheduleCard 调度卡片

ScheduleCard 组件用于在工作流编辑器面板中展示单个调度任务,包含以下功能:

  • 调度名称和时间显示
  • 时区信息展示
  • 启用/禁用开关(Switch)
  • 删除操作按钮
  • 下次执行时间预览
<Switch
    checked={schedule.enabled}
    disabled={isToggling}
    onCheckedChange={(checked) =>
        onToggle(schedule.workflow_schedule_id, checked)
    }
/>

资料来源:ScheduleCard.tsx:1-50

#### 3.3 ScheduleDetailPage 调度详情页

调度详情页展示调度的完整信息,包括创建时间、最后修改时间、Cron 表达式和时区等元数据。

<div className="space-y-2">
    <div className="flex items-start justify-between">
        <span className="text-sm text-slate-400">Created</span>
        <span className="text-sm text-slate-50">
            {basicLocalTimeFormat(schedule.created_at)}
        </span>
    </div>
    <div className="flex items-start justify-between">
        <span className="text-sm text-slate-400">Last Modified</span>
        <span className="text-sm text-slate-50">
            {basicLocalTimeFormat(schedule.modified_at)}
        </span>
    </div>
</div>

资料来源:ScheduleDetailPage.tsx:1-50

4. 凭证模块(Credentials)

凭证模块管理用户的认证凭据,包括 2FA/TOTP 验证码处理。

#### 4.1 CredentialsTotpTab TOTP 凭证管理

CredentialsTotpTab 组件提供了以下功能:

功能说明
PushTotpCodeForm推送 2FA 验证码表单
标识符筛选按邮箱或电话筛选
OTP 类型筛选支持全部/Numeric code/Magic link

组件支持从验证消息中自动提取 TOTP 验证码并附加到相关运行任务。

资料来源:CredentialsTotpTab.tsx:1-50

5. AI 副驾驶(Copilot)

#### 5.1 WorkflowCopilotChat 对话界面

WorkflowCopilotChat 组件提供了与 AI 副驾驶对话的功能,用户可以:

  • 描述工作流目标
  • 指定目标网站
  • 选择要使用的凭证
  • 获取 AI 生成的工作流建议

组件在最后一条消息中显示建议的工作流操作按钮(Review/Accept)。

{showProposedPanel ? (
    <>
        <button onClick={() => handleReviewWorkflow(proposedWorkflow)}>
            Review
        </button>
        <button onClick={() => handleAcceptWorkflow(proposedWorkflow)}>
            Accept
        </button>
    </>
) : null}

资料来源:WorkflowCopilotChat.tsx:1-60

组件交互流程

工作流执行流程

graph TD
    A[选择工作流] --> B[RunWorkflowForm]
    B --> C{是否有输入参数?}
    C -->|有| D[填写参数]
    C -->|无| E[配置执行选项]
    D --> E
    E --> F{选择执行方式}
    F -->|Agent| G[使用 Skyvern Agent]
    F -->|Code| H{代码已缓存?}
    H -->|是| I[使用缓存代码执行]
    H -->|否| J[先生成代码]
    I --> K{执行失败且启用AI Fallback?}
    J --> K
    K -->|是| L[回退到 AI 重新生成]
    K -->|否| M[标记失败]
    G --> N[Webhook 回调结果]
    L --> N
    M --> N

调度创建流程

graph LR
    A[CreateOrgScheduleDialog] --> B[选择工作流]
    B --> C[配置参数值]
    C --> D[设置 Cron 表达式]
    D --> E[选择时区]
    E --> F[提交创建]
    F --> G[ScheduleCard 显示]

表单验证模式

Skyvern 前端采用 React Hook Form 进行表单状态管理,验证模式遵循以下规则:

必填字段验证

// 字符串类型
if (parameter.workflow_parameter_type === "string") {
    if (value === null || value === undefined) {
        return "This field is required";
    }
    if (typeof value === "string" && value.trim() === "") {
        return "This field is required";
    }
}

// 文件 URL 类型
if (parameter.workflow_parameter_type === "file_url") {
    if (value === null || value === undefined || 
        (typeof value === "string" && value.trim() === "")) {
        return "This field is required";
    }
}

URL 验证

使用 Zod schema 进行 URL 格式验证:

const urlSchema = z.string().url({ message: "Invalid URL" });
const { success } = urlSchema.safeParse(value);
if (!success) {
    return "Invalid URL";
}

状态管理模式

组件状态管理

组件内部使用 React Hook 管理状态:

Hook用途示例
useState本地状态筛选条件、对话框开关
useForm表单状态表单值、错误、提交处理
useMutation异步操作创建、更新、删除操作
useQuery数据获取工作流列表、详情查询

状态提升

在需要跨组件共享状态的场景中,组件通过回调函数将状态提升到父组件管理:

const handleParameterChange = (key: string, value: any) => {
    setParameters((prev) => ({ ...prev, [key]: value }));
};

UI 组件库

Skyvern 前端使用以下核心 UI 组件库:

组件来源用途
AutoResizingTextarea自定义自动调整高度的文本输入
CodeEditor自定义代码/JSON 编辑器
ProxySelector自定义代理位置选择
Select/SelectContent/SelectItemRadix UI下拉选择框
Dialog/DialogContentRadix UI对话框
Table/TableHeader/TableBodyRadix UI表格
SwitchRadix UI开关控件
Button自定义按钮组件
Badge自定义标签组件

样式系统

前端使用 Tailwind CSS 进行样式管理,采用以下设计规范:

  • 颜色系统:使用 slate-* 色系定义文本和背景
  • 间距系统:使用 gap-*space-y-* 定义间距
  • 圆角:使用 rounded-lgrounded-md 定义圆角
  • 阴影:使用 shadow-* 定义阴影效果
  • 深色模式:组件支持 dark: 前缀实现深色模式适配

组件导出规范

每个组件文件通过命名导出(Named Export)导出组件:

export { WorkflowHistoryPanel };
export { ScheduleCard };
export { WorkflowsTable };

这种方式便于 Tree Shaking 优化和按需导入。

总结

Skyvern 前端采用了清晰的分层架构设计,将功能模块划分为任务、工作流、调度和凭证四大领域。每个领域包含表单、面板、对话框等特定类型的组件,通过 React Hook Form 实现统一的表单管理。组件之间通过回调函数和状态提升实现解耦,同时借助 TypeScript 的类型系统确保代码的健壮性。前端使用 Tailwind CSS 实现响应式设计,并支持深色模式,为用户提供一致且现代的界面体验。

资料来源:[CreateNewTaskForm.tsx:10-25]()

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:what ensures it’s the correct one in that context?

可能阻塞安装或首次运行。

medium 来源证据:Release v1.0.29

可能阻塞安装或首次运行。

medium 来源证据:Task Execution Performance: Seeking guidance on optimizing execution speed

可能增加新用户试用和生产接入成本。

medium 来源证据:[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)

可能增加新用户试用和生产接入成本。

Pitfall Log / 踩坑日志

项目:Skyvern-AI/skyvern

摘要:发现 23 个潜在踩坑项,其中 1 个为 high/blocking;最高优先级:安全/权限坑 - 来源证据:what ensures it’s the correct one in that context?。

1. 安全/权限坑 · 来源证据:what ensures it’s the correct one in that context?

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:what ensures it’s the correct one in that context?
  • 对用户的影响:可能阻塞安装或首次运行。
  • 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。

2. 安装坑 · 来源证据:Release v1.0.29

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Release v1.0.29
  • 对用户的影响:可能阻塞安装或首次运行。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

3. 安装坑 · 来源证据:Task Execution Performance: Seeking guidance on optimizing execution speed

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:Task Execution Performance: Seeking guidance on optimizing execution speed
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。

4. 安装坑 · 来源证据:[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

5. 配置坑 · 来源证据:Performance bottleneck: High latency for simple form-filling workflows

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:Performance bottleneck: High latency for simple form-filling workflows
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。

6. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 建议检查:将假设转成下游验证清单。
  • 防护动作:假设必须转成验证项;没有验证结果前不能写成事实。
  • 证据:capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass.

7. 维护坑 · 来源证据:Release v1.0.34

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:Release v1.0.34
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。

8. 维护坑 · 来源证据:Release v1.0.35

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题:Release v1.0.35
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。

9. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 建议检查:补 GitHub 最近 commit、release、issue/PR 响应信号。
  • 防护动作:维护活跃度未知时,推荐强度不能标为高信任。
  • 证据:evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing

10. 安全/权限坑 · 下游验证发现风险项

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:下游已经要求复核,不能在页面中弱化。
  • 建议检查:进入安全/权限治理复核队列。
  • 防护动作:下游风险存在时必须保持 review/recommendation 降级。
  • 证据:downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium

11. 安全/权限坑 · 存在安全注意事项

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:No sandbox install has been executed yet; downstream must verify before user use.
  • 对用户的影响:用户安装前需要知道权限边界和敏感操作。
  • 建议检查:转成明确权限清单和安全审查提示。
  • 防护动作:安全注意事项必须面向用户前置展示。
  • 证据:risks.safety_notes | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | No sandbox install has been executed yet; downstream must verify before user use.

12. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 建议检查:把风险写入边界卡,并确认是否需要人工复核。
  • 防护动作:评分风险必须进入边界卡,不能只作为内部分数。
  • 证据:risks.scoring_risks | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium

13. 安全/权限坑 · 来源证据:Clarification on the Custom credential documentation on the Delete API with empty body

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Clarification on the Custom credential documentation on the Delete API with empty body
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_a5164e5767dc4b618ce1c862ed440eaa | https://github.com/Skyvern-AI/skyvern/issues/4256 | 来源类型 github_issue 暴露的待验证使用条件。

14. 安全/权限坑 · 来源证据:GROQ error

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:GROQ error
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_fb8dab5ab6224386a6b341234a8e90be | https://github.com/Skyvern-AI/skyvern/issues/4366 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

15. 安全/权限坑 · 来源证据:Release v1.0.27

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.27
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_23488c9e7f354979bdbf8e9554b4b647 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.27 | 来源类型 github_release 暴露的待验证使用条件。

16. 安全/权限坑 · 来源证据:Release v1.0.30

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.30
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_6929e0e36e1549e9bd95f29d1d4cfbdf | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.30 | 来源类型 github_release 暴露的待验证使用条件。

17. 安全/权限坑 · 来源证据:Release v1.0.31

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.31
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_40ca78dbdbe141f383c8d202f08db28b | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.31 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

18. 安全/权限坑 · 来源证据:Release v1.0.32

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.32
  • 对用户的影响:可能阻塞安装或首次运行。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_4eaa09d9a74f49efb0fb81c9bdebe6a3 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

19. 安全/权限坑 · 来源证据:Release v1.0.33

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.33
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_ba7d530f080e4c88ad47ac26ba2781a7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33 | 来源讨论提到 docker 相关条件,需在安装/试用前复核。

20. 安全/权限坑 · 来源证据:Release v1.0.36

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Release v1.0.36
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_236e050a3837462692b739322738a7a2 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36 | 来源讨论提到 node 相关条件,需在安装/试用前复核。

21. 安全/权限坑 · 来源证据:persist_browser_session flag saves sessions but never retrieves them on subsequent runs

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:persist_browser_session flag saves sessions but never retrieves them on subsequent runs
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_b56e85161a3b4b7682c8ab13127be8d0 | https://github.com/Skyvern-AI/skyvern/issues/4390 | 来源类型 github_issue 暴露的待验证使用条件。

22. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 建议检查:抽样最近 issue/PR,判断是否长期无人处理。
  • 防护动作:issue/PR 响应未知时,必须提示维护风险。
  • 证据:evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | issue_or_pr_quality=unknown

23. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 建议检查:确认最近 release/tag 和 README 安装命令是否一致。
  • 防护动作:发布节奏未知或过期时,安装说明必须标注可能漂移。
  • 证据:evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | release_recency=unknown

来源:Doramagic 发现、验证与编译记录