{
  "canonical_name": "Skyvern-AI/skyvern",
  "compilation_id": "pack_32a6e00b48e04b018d39d1592d6dee5d",
  "created_at": "2026-05-16T07:49:04.763977+00:00",
  "created_by": "project-pack-compiler",
  "feedback": {
    "carrier_selection_notes": [
      "viable_asset_types=skill, recipe, host_instruction, eval, preflight",
      "recommended_asset_types=skill, recipe, host_instruction, eval, preflight"
    ],
    "evidence_delta": {
      "confirmed_claims": [
        "identity_anchor_present",
        "capability_and_host_targets_present",
        "install_path_declared_or_better"
      ],
      "missing_required_fields": [],
      "must_verify_forwarded": [
        "Run or inspect `pip install skyvern` in an isolated environment.",
        "Confirm the project exposes the claimed capability to at least one target host."
      ],
      "quickstart_execution_scope": "allowlisted_sandbox_smoke",
      "sandbox_command": "pip install skyvern",
      "sandbox_container_image": "python:3.12-slim",
      "sandbox_execution_backend": "docker",
      "sandbox_planner_decision": "llm_execute_isolated_install",
      "sandbox_validation_id": "sbx_36c6ca95fdf6442d8ea98357c9fe2d80"
    },
    "feedback_event_type": "project_pack_compilation_feedback",
    "learning_candidate_reasons": [],
    "template_gaps": []
  },
  "identity": {
    "canonical_id": "project_d1375172a837399fc326bdbc81600dd7",
    "canonical_name": "Skyvern-AI/skyvern",
    "homepage_url": null,
    "license": "unknown",
    "repo_url": "https://github.com/Skyvern-AI/skyvern",
    "slug": "skyvern",
    "source_packet_id": "phit_28dea91e651e4c9f9ed6a1d14dc69ca8",
    "source_validation_id": "dval_c306c31c798e4351af3292c822347541"
  },
  "merchandising": {
    "best_for": "需要软件开发与交付能力，并使用 local_cli的用户",
    "github_forks": null,
    "github_stars": null,
    "one_liner_en": "<!-- DOCTOC SKIP -->",
    "one_liner_zh": "<!-- DOCTOC SKIP -->",
    "primary_category": {
      "category_id": "software-development",
      "confidence": "medium",
      "name_en": "Software Development",
      "name_zh": "软件开发与交付",
      "reason": "matched_keywords:git, cli"
    },
    "target_user": "使用 local_cli 等宿主 AI 的用户",
    "title_en": "skyvern",
    "title_zh": "skyvern 能力包",
    "visible_tags": [
      {
        "label_en": "Security & Permissions",
        "label_zh": "安全审查与权限治理",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "product_domain-security-permissions",
        "type": "product_domain"
      },
      {
        "label_en": "Web Task Automation",
        "label_zh": "网页任务自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "user_job-web-task-automation",
        "type": "user_job"
      },
      {
        "label_en": "Natural-language Web Actions",
        "label_zh": "自然语言网页操作",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "core_capability-natural-language-web-actions",
        "type": "core_capability"
      },
      {
        "label_en": "Checkpoint Resume",
        "label_zh": "断点恢复流程",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "workflow_pattern-checkpoint-resume",
        "type": "workflow_pattern"
      },
      {
        "label_en": "Structured Data Extraction",
        "label_zh": "结构化数据提取",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "selection_signal-structured-data-extraction",
        "type": "selection_signal"
      }
    ]
  },
  "packet_id": "phit_28dea91e651e4c9f9ed6a1d14dc69ca8",
  "page_model": {
    "artifacts": {
      "artifact_slug": "skyvern",
      "files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json",
        "REPO_INSPECTION.md",
        "CAPABILITY_CONTRACT.json",
        "EVIDENCE_INDEX.json",
        "CLAIM_GRAPH.json"
      ],
      "required_files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json"
      ]
    },
    "detail": {
      "capability_source": "Project Hit Packet + DownstreamValidationResult",
      "commands": [
        {
          "command": "pip install skyvern",
          "label": "Python / pip · 官方安装入口",
          "source": "https://github.com/Skyvern-AI/skyvern#readme",
          "verified": true
        }
      ],
      "display_tags": [
        "安全审查与权限治理",
        "网页任务自动化",
        "自然语言网页操作",
        "断点恢复流程",
        "结构化数据提取"
      ],
      "eyebrow": "软件开发与交付",
      "glance": [
        {
          "body": "判断自己是不是目标用户。",
          "label": "最适合谁",
          "value": "需要软件开发与交付能力，并使用 local_cli的用户"
        },
        {
          "body": "先理解能力边界，再决定是否继续。",
          "label": "核心价值",
          "value": "<!-- DOCTOC SKIP -->"
        },
        {
          "body": "未完成验证前保持审慎。",
          "label": "继续前",
          "value": "publish to Doramagic.ai project surfaces"
        }
      ],
      "guardrail_source": "Boundary & Risk Card",
      "guardrails": [
        {
          "body": "Prompt Preview 只展示流程，不证明项目已安装或运行。",
          "label": "Check 1",
          "value": "不要把试用当真实运行"
        },
        {
          "body": "local_cli",
          "label": "Check 2",
          "value": "确认宿主兼容"
        },
        {
          "body": "publish to Doramagic.ai project surfaces",
          "label": "Check 3",
          "value": "先隔离验证"
        }
      ],
      "mode": "skill, recipe, host_instruction, eval, preflight",
      "pitfall_log": {
        "items": [
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：what ensures it’s the correct one in that context?",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：what ensures it’s the correct one in that context?",
            "user_impact": "可能阻塞安装或首次运行。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Release v1.0.29",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Release v1.0.29",
            "user_impact": "可能阻塞安装或首次运行。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Task Execution Performance: Seeking guidance on optimizing execution speed",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Performance bottleneck: High latency for simple form-filling workflows",
            "category": "配置坑",
            "evidence": [
              "community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Performance bottleneck: High latency for simple form-filling workflows",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "README/documentation is current enough for a first validation pass.",
            "category": "能力坑",
            "evidence": [
              "capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass."
            ],
            "severity": "medium",
            "suggested_check": "将假设转成下游验证清单。",
            "title": "能力判断依赖假设",
            "user_impact": "假设不成立时，用户拿不到承诺的能力。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.34",
            "category": "维护坑",
            "evidence": [
              "community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Release v1.0.34",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.35",
            "category": "维护坑",
            "evidence": [
              "community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Release v1.0.35",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "未记录 last_activity_observed。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing"
            ],
            "severity": "medium",
            "suggested_check": "补 GitHub 最近 commit、release、issue/PR 响应信号。",
            "title": "维护活跃度未知",
            "user_impact": "新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "进入安全/权限治理复核队列。",
            "title": "下游验证发现风险项",
            "user_impact": "下游已经要求复核，不能在页面中弱化。"
          },
          {
            "body": "No sandbox install has been executed yet; downstream must verify before user use.",
            "category": "安全/权限坑",
            "evidence": [
              "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."
            ],
            "severity": "medium",
            "suggested_check": "转成明确权限清单和安全审查提示。",
            "title": "存在安全注意事项",
            "user_impact": "用户安装前需要知道权限边界和敏感操作。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "risks.scoring_risks | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "把风险写入边界卡，并确认是否需要人工复核。",
            "title": "存在评分风险",
            "user_impact": "风险会影响是否适合普通用户安装。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Clarification on the Custom credential documentation on the Delete API with empty body",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_a5164e5767dc4b618ce1c862ed440eaa | https://github.com/Skyvern-AI/skyvern/issues/4256 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Clarification on the Custom credential documentation on the Delete API with empty body",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：GROQ error",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_fb8dab5ab6224386a6b341234a8e90be | https://github.com/Skyvern-AI/skyvern/issues/4366 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：GROQ error",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.27",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_23488c9e7f354979bdbf8e9554b4b647 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.27 | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Release v1.0.27",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.30",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_6929e0e36e1549e9bd95f29d1d4cfbdf | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.30 | 来源类型 github_release 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：Release v1.0.30",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          }
        ],
        "source": "ProjectPitfallLog + ProjectHitPacket + validation + community signals",
        "summary": "发现 23 个潜在踩坑项，其中 1 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：what ensures it’s the correct one in that context?。",
        "title": "踩坑日志"
      },
      "snapshot": {
        "contributors": null,
        "forks": null,
        "license": "unknown",
        "note": "站点快照，非实时质量证明；用于开工前背景判断。",
        "stars": null
      },
      "source_url": "https://github.com/Skyvern-AI/skyvern",
      "steps": [
        {
          "body": "不安装项目，先体验能力节奏。",
          "code": "preview",
          "title": "先试 Prompt"
        },
        {
          "body": "理解输入、输出、失败模式和边界。",
          "code": "manual",
          "title": "读说明书"
        },
        {
          "body": "把上下文交给宿主 AI 继续工作。",
          "code": "context",
          "title": "带给 AI"
        },
        {
          "body": "进入主力环境前先完成安装入口与风险边界验证。",
          "code": "verify",
          "title": "沙箱验证"
        }
      ],
      "subtitle": "<!-- DOCTOC SKIP -->",
      "title": "skyvern 能力包",
      "trial_prompt": "# skyvern - Prompt Preview\n\n> Copy the prompt below into your AI host before installing anything.\n> Its purpose is to let you safely feel the project's workflow, not to claim the project has already run.\n\n## Copy this prompt\n\n```text\nYou are using an independent Doramagic capability pack for Skyvern-AI/skyvern.\n\nProject:\n- Name: skyvern\n- Repository: https://github.com/Skyvern-AI/skyvern\n- Summary: <!-- DOCTOC SKIP -->\n- Host target: local_cli\n\nGoal:\nHelp me evaluate this project for the following task without installing it yet: <!-- DOCTOC SKIP -->\n\nBefore taking action:\n1. Restate my task, success standard, and boundary.\n2. Identify whether the next step requires tools, browser access, network access, filesystem access, credentials, package installation, or host configuration.\n3. Use only the Doramagic Project Pack, the upstream repository, and the source-linked evidence listed below.\n4. If a real command, install step, API call, file write, or host integration is required, mark it as \"requires post-install verification\" and ask for approval first.\n5. If evidence is missing, say \"evidence is missing\" instead of filling the gap.\n\nPreviewable capabilities:\n- Capability 1: Use the source-backed project context to guide one small, checkable workflow step.\n\nCapabilities that require post-install verification:\n- Capability 1: Use the source-backed project context to guide one small, checkable workflow step.\n\nCore service flow:\n1. introduction: Introduction to Skyvern. Produce one small intermediate artifact and wait for confirmation.\n2. system-architecture: System Architecture. Produce one small intermediate artifact and wait for confirmation.\n3. browser-automation: Browser Automation Engine. Produce one small intermediate artifact and wait for confirmation.\n4. workflow-system: Workflow System. Produce one small intermediate artifact and wait for confirmation.\n5. ai-commands: AI-Powered Commands. Produce one small intermediate artifact and wait for confirmation.\n\nSource-backed evidence to keep in mind:\n- https://github.com/Skyvern-AI/skyvern#readme\n- .claude/skills/bump-version/SKILL.md\n- docs/skill.md\n- skyvern/cli/skills/qa/SKILL.md\n- skyvern/cli/skills/skyvern/SKILL.md\n- skyvern/cli/skills/smoke-test/SKILL.md\n- skyvern/cli/skills/testing/SKILL.md\n- README.md\n- skyvern/__init__.py\n- skyvern/constants.py\n\nFirst response rules:\n1. Start Step 1 only.\n2. Explain the one service action you will perform first.\n3. Ask exactly three questions about my target workflow, success standard, and sandbox boundary.\n4. Stop and wait for my answers.\n\nStep 1 follow-up protocol:\n- After I answer the first three questions, stay in Step 1.\n- Produce six parts only: clarified task, success standard, boundary conditions, two or three options, tradeoffs for each option, and one recommendation.\n- End by asking whether I confirm the recommendation.\n- Do not move to Step 2 until I explicitly confirm.\n\nConversation rules:\n- Advance one step at a time and wait for confirmation after each small artifact.\n- Write outputs as recommendations or planned checks, not as completed execution.\n- Do not claim tests passed, files changed, commands ran, APIs were called, or the project was installed.\n- If the user asks for execution, first provide the sandbox setup, expected output, rollback, and approval checkpoint.\n```\n",
      "voices": [
        {
          "body": "来源平台：github。github/github_issue: Clarification on the Custom credential documentation on the Delete API w（https://github.com/Skyvern-AI/skyvern/issues/4256）；github/github_issue: GROQ error（https://github.com/Skyvern-AI/skyvern/issues/4366）；github/github_issue: Task Execution Performance: Seeking guidance on optimizing execution spe（https://github.com/Skyvern-AI/skyvern/issues/4375）；github/github_issue: [Feature Request] Multi-session VNC support for local/self-hosted deploy（https://github.com/Skyvern-AI/skyvern/issues/4392）；github/github_issue: persist_browser_session flag saves sessions but never retrieves them on （https://github.com/Skyvern-AI/skyvern/issues/4390）；github/github_issue: Performance bottleneck: High latency for simple form-filling workflows（https://github.com/Skyvern-AI/skyvern/issues/4439）；github/github_issue: what ensures it’s the correct one in that context?（https://github.com/Skyvern-AI/skyvern/issues/5637）；github/github_release: Release v1.0.36（https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36）；github/github_release: Release v1.0.35（https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35）；github/github_release: Release v1.0.34（https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34）；github/github_release: Release v1.0.33（https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33）；github/github_release: Release v1.0.32（https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32）。这些是项目级外部声音，不作为单独质量证明。",
          "items": [
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Clarification on the Custom credential documentation on the Delete API w",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4256"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "GROQ error",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4366"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Task Execution Performance: Seeking guidance on optimizing execution spe",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4375"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Feature Request] Multi-session VNC support for local/self-hosted deploy",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4392"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "persist_browser_session flag saves sessions but never retrieves them on ",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4390"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "Performance bottleneck: High latency for simple form-filling workflows",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/4439"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "what ensures it’s the correct one in that context?",
              "url": "https://github.com/Skyvern-AI/skyvern/issues/5637"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Release v1.0.36",
              "url": "https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Release v1.0.35",
              "url": "https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Release v1.0.34",
              "url": "https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Release v1.0.33",
              "url": "https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "Release v1.0.32",
              "url": "https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32"
            }
          ],
          "status": "已收录 13 条来源",
          "title": "社区讨论"
        }
      ]
    },
    "homepage_card": {
      "category": "软件开发与交付",
      "desc": "<!-- DOCTOC SKIP -->",
      "effort": "安装已验证",
      "forks": null,
      "icon": "code",
      "name": "skyvern 能力包",
      "risk": "可发布",
      "slug": "skyvern",
      "stars": null,
      "tags": [
        "安全审查与权限治理",
        "网页任务自动化",
        "自然语言网页操作",
        "断点恢复流程",
        "结构化数据提取"
      ],
      "thumb": "gray",
      "type": "Skill Pack"
    },
    "manual": {
      "markdown": "# https://github.com/Skyvern-AI/skyvern 项目说明书\n\n生成时间：2026-05-16 07:39:12 UTC\n\n## 目录\n\n- [Introduction to Skyvern](#introduction)\n- [System Architecture](#system-architecture)\n- [Browser Automation Engine](#browser-automation)\n- [Workflow System](#workflow-system)\n- [AI-Powered Commands](#ai-commands)\n- [Database Models](#database-models)\n- [Artifact Storage](#artifact-storage)\n- [Credential Management](#credential-management)\n- [LLM Provider Configuration](#llm-providers)\n- [Model Context Protocol (MCP) Integration](#mcp-integration)\n\n<a id='introduction'></a>\n\n## Introduction to Skyvern\n\n### 相关页面\n\n相关主题：[System Architecture](#system-architecture), [Browser Automation Engine](#browser-automation)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/mcpb/claude_desktop/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcpb/claude_desktop/README.md)\n- [skyvern/forge/sdk/api/aws.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/aws.py)\n</details>\n\n# Introduction to Skyvern\n\n## Overview\n\nSkyvern is an open-source browser automation platform that enables AI agents to interact with websites by understanding natural language instructions. The platform combines large language model (LLM) powered reasoning with browser automation capabilities, allowing developers to create workflows that can navigate websites, fill out forms, extract data, download files, and perform complex multi-step web tasks autonomously.\n\nSkyvern operates by interpreting user prompts and executing browser actions through a CDP (Chrome DevTools Protocol) connection, providing AI applications with the ability to interact with the web just like a human user would 资料来源：[README.md:1-50]()\n\n## Key Features\n\n### Multi-LLM Support\n\nSkyvern supports integration with multiple LLM providers, enabling flexible deployment options:\n\n| Provider | Supported Models |\n|----------|------------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |\n| Azure OpenAI | Any GPT models deployed to Azure subscription |\n| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |\n| Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md:65-72]()\n\n### Workflow Automation\n\nSkyvern enables the creation of automated workflows that can:\n\n- Navigate to websites and interact with web elements\n- Fill out forms and submit data\n- Extract structured information from web pages\n- Handle authentication and credential management\n- Download files and manage browser sessions\n- Handle multi-factor authentication (2FA/TOTP)\n- Schedule and execute tasks on a recurring basis\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1-30]()\n\n### Model Context Protocol (MCP) Integration\n\nSkyvern provides MCP server implementation for seamless integration with AI applications. This allows AI applications to connect to Skyvern and utilize its browser automation capabilities through a standardized protocol 资料来源：[integrations/mcp/README.md:1-25]()\n\n## Architecture Overview\n\n### System Components\n\n```mermaid\ngraph TD\n    A[AI Application] -->|MCP Protocol| B[Skyvern MCP Server]\n    B --> C[Skyvern API]\n    C --> D[Task Executor]\n    D --> E[Browser Automation Engine]\n    E --> F[CDP Browser Instance]\n    \n    G[LLM Provider] -->|Reasoning| D\n    H[Credential Vault] -->|Auth| D\n    I[Schedule Manager] -->|Trigger| C\n```\n\n### Browser Connection Options\n\nSkyvern supports multiple browser connection modes:\n\n1. **Local CDP Browser** - Connect to a locally running Chrome instance\n2. **Skyvern Cloud Browser** - Use managed browser infrastructure\n3. **Browser Tunneling** - Expose local browser to Skyvern Cloud via tunnel\n\n资料来源：[README.md:85-120]()\n\n## Getting Started\n\n### Installation and Setup\n\nRequirements: Python 3.11+ environment 资料来源：[integrations/mcp/README.md:15]()\n\n```bash\n# Install Skyvern\npip install skyvern\n\n# Initialize configuration\nskyvern init\n\n# Run the server (local mode only)\nskyvern run server\n```\n\n### Quickstart for Contributors\n\n```bash\n# Install dependencies using uv\nuv sync --group dev\n\n# Run setup wizard\nuv run skyvern quickstart\n\n# Access UI at http://localhost:8080\n```\n\n资料来源：[README.md:45-60]()\n\n## SDK Usage\n\n### Python SDK\n\n```python\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your-api-key\")\nskyvern.set_browser_context(\n    browser_type=\"cdp-connect\",\n    remote_debugging_url=\"http://127.0.0.1:9222\"\n)\ntask = await skyvern.run_task(\n    prompt=\"Find the top post on hackernews today\"\n)\n```\n\n### MCP Tools\n\nSkyvern provides comprehensive MCP tools for browser automation:\n\n| Category | Tools |\n|----------|-------|\n| Navigation | `skyvern_navigate`, `skyvern_click`, `skyvern_select_option`, `skyvern_press_key`, `skyvern_drag` |\n| Data Extraction | `skyvern_extract`, `skyvern_screenshot`, `skyvern_find`, `skyvern_validate`, `skyvern_get_html` |\n| Authentication | `skyvern_login`, `skyvern_credential_list`, `skyvern_credential_get` |\n| Tabs & Frames | `skyvern_tab_new`, `skyvern_tab_list`, `skyvern_tab_switch`, `skyvern_frame_list` |\n| Network | `skyvern_console_messages`, `skyvern_network_requests`, `skyvern_network_route` |\n\n资料来源：[skyvern/cli/mcp_tools/README.md:1-50]()\n\n## Workflows\n\nSkyvern supports workflow-based automation where complex tasks can be defined as a series of steps with conditional logic, evaluations, and human interaction checkpoints.\n\n```mermaid\ngraph LR\n    A[Start] --> B[Block 1: Action]\n    B --> C[Block 2: Condition]\n    C -->|True| D[Block 3: Evaluation]\n    C -->|False| E[Block 4: Fallback]\n    D --> F[Human Interaction]\n    F --> G[Continue to Next]\n    E --> G\n```\n\n### Workflow Block Types\n\n| Block Type | Purpose |\n|------------|---------|\n| Action | Execute browser actions (click, type, navigate) |\n| Condition | Branch logic based on page state |\n| Evaluation | Run JavaScript to validate or extract data |\n| Human Interaction | Pause workflow for manual input |\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItem.tsx:1-60]()\n\n## Authentication and Credentials\n\n### Credential Services\n\nSkyvern supports multiple credential backends:\n\n- Skyvern Vault (built-in)\n- Bitwarden\n- 1Password\n- Azure Key Vault\n- Custom credential services via API configuration\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:1-40]()\n\n### 2FA/TOTP Handling\n\nSkyvern provides automated TOTP code extraction and attachment to runs:\n\n```tsx\n<PushTotpCodeForm\n  showAdvancedFields\n  onSuccess={handleFormSuccess}\n/>\n```\n\nThe system extracts verification codes from push notifications and attaches them to relevant workflow runs automatically.\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1-30]()\n\n## Task Creation\n\n### Navigation Goal\n\nTasks are defined using natural language prompts that describe what Skyvern should do:\n\n```\nprompt=\"Find the top post on hackernews today\"\n```\n\n### Advanced Settings\n\n| Parameter | Description |\n|-----------|-------------|\n| Navigation Payload | JSON parameters for routes/states |\n| Proxy Location | Route through geographic proxies |\n| Browser Session ID | Use persistent browser sessions |\n| Browser Address | CDP server address |\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:1-50]()\n\n## Scheduling\n\nTasks and workflows can be scheduled using cron expressions with timezone support:\n\n```python\nschedule = await skyvern.create_schedule(\n    workflow_id=\"workflow_xxx\",\n    cron_expression=\"0 9 * * *\",  # Daily at 9 AM\n    timezone=\"America/New_York\"\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/schedulePanel/CreateScheduleDialog.tsx:1-60]()\n\n## Cloud Integration\n\n### Browser Tunneling\n\nConnect Skyvern Cloud to your local browser with existing cookies and extensions:\n\n```bash\n# Start Chrome with tunnel to Skyvern Cloud\nskyvern browser serve --tunnel\n```\n\nThis command creates a tunnel URL that can be used to run tasks with your local browser state 资料来源：[README.md:115-135]()\n\n### Claude Desktop Integration\n\nSkyvern provides downloadable `.mcpb` bundles for quick Claude Desktop setup:\n\n```bash\n./scripts/package-mcpb.sh 1.0.23\n```\n\n资料来源：[skyvern/cli/mcpb/claude_desktop/README.md:1-25]()\n\n## Telemetry\n\nBy default, Skyvern collects basic usage statistics to understand how the platform is being used. To opt-out:\n\n```bash\nexport SKYVERN_TELEMETRY=false\n```\n\n资料来源：[README.md:35-38]()\n\n## License\n\nSkyvern's open-source repository is licensed under AGPL-3.0. The core automation logic is available in this repository, with anti-bot measures available in the managed cloud offering 资料来源：[README.md:40-43]()\n\n## Documentation and Support\n\n- **Documentation**: [https://www.skyvern.com/docs](https://www.skyvern.com/docs)\n- **Discord Community**: [https://discord.gg/fG2XXEuQX3](https://discord.gg/fG2XXEuQX3)\n- **Email Support**: founders@skyvern.com\n- **GitHub Issues**: [Help Wanted标签的问题](https://github.com/skyvern-ai/skyvern/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)\n\n## Related Documentation\n\nFor more detailed information on specific features:\n\n- [MCP Integration Guide](../integrations/mcp/README.md)\n- [CLI MCP Tools Reference](../skyvern/cli/mcp_tools/README.md)\n- [Claude Desktop Setup](../skyvern/cli/mcpb/claude_desktop/README.md)\n- [Browser Connection Configuration](https://www.skyvern.com/docs/optimization/browser-tunneling)\n\n---\n\n<a id='system-architecture'></a>\n\n## System Architecture\n\n### 相关页面\n\n相关主题：[Introduction to Skyvern](#introduction), [Browser Automation Engine](#browser-automation), [Workflow System](#workflow-system)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx)\n- [skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx)\n- [skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/Workspace.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/Workspace.tsx)\n- [skyvern-frontend/src/components/BrowserStream.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/components/BrowserStream.tsx)\n- [skyvern/forge/sdk/api/aws.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/aws.py)\n- [README.md](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)\n</details>\n\n# System Architecture\n\n## Overview\n\nSkyvern is an AI-powered web automation framework that enables programmatic browser control through natural language instructions. The system architecture consists of three primary layers: a React-based frontend interface, a Python backend API (Forge), and a browser automation engine. This document provides a comprehensive technical overview of the system's components, data flows, and integration patterns.\n\n## High-Level Architecture\n\n```mermaid\ngraph TD\n    subgraph Frontend[\"Frontend Layer (React/TypeScript)\"]\n        UI[User Interface]\n        Forms[Task & Workflow Forms]\n        Stream[Browser Stream Viewer]\n    end\n    \n    subgraph Backend[\"Backend Layer (Python/Forge)\"]\n        API[Forge API]\n        Agent[AI Agent Engine]\n        Workflow[Workflow Engine]\n        Scheduler[Scheduler Service]\n    end\n    \n    subgraph Browser[\"Browser Automation Layer\"]\n        BrowserMgr[Browser Manager]\n        CDP[Chrome DevTools Protocol]\n        BrowserInst[Browser Instances]\n    end\n    \n    subgraph Storage[\"Storage & External Services\"]\n        S3[S3 Storage]\n        DB[(Database)]\n        LLM[LLM Providers]\n    end\n    \n    UI --> Forms\n    Forms --> API\n    UI --> Stream\n    Stream --> BrowserMgr\n    API --> Agent\n    API --> Workflow\n    API --> Scheduler\n    Agent --> BrowserMgr\n    Agent --> LLM\n    Workflow --> S3\n    Scheduler --> DB\n    BrowserMgr --> CDP\n    CDP --> BrowserInst\n```\n\n## Frontend Architecture\n\nThe frontend is a React-based Single Page Application (SPA) located in the `skyvern-frontend/` directory. It provides user interfaces for task creation, workflow management, credentials handling, and real-time browser streaming.\n\n### Component Structure\n\n| Component Category | Location | Purpose |\n|-------------------|----------|---------|\n| Task Forms | `src/routes/tasks/create/` | Task creation and management forms |\n| Workflow Editor | `src/routes/workflows/editor/` | Visual workflow building interface |\n| Credentials | `src/routes/credentials/` | Credential and TOTP management |\n| Schedules | `src/routes/schedules/` | Schedule viewing and configuration |\n| Shared Components | `src/components/` | Reusable UI components |\n\n### Key Frontend Components\n\n#### BrowserStream Component\n\nThe `BrowserStream` component handles real-time browser visualization. It displays animated loading states while establishing connections and renders rotating messages to indicate progress.\n\n```typescript\n// skyvern-frontend/src/components/BrowserStream.tsx\n<RotateThrough interval={7 * 1000}>\n  <span>Hm, working on the connection...</span>\n  <span>Hang tight, we're almost there...</span>\n  <span>Just a moment...</span>\n  <span>Backpropagating...</span>\n  <span>Attention is all I need...</span>\n  <span>Consulting the manual...</span>\n</RotateThrough>\n```\n\n资料来源：[skyvern-frontend/src/components/BrowserStream.tsx]()\n\n#### Task Forms\n\nTask creation is handled through two primary form components:\n\n1. **CreateNewTaskForm**: Used for creating new tasks with navigation goals\n2. **SavedTaskForm**: Used for creating tasks from saved templates\n\nBoth forms support advanced settings including navigation payloads for specifying parameters, routes, or states:\n\n```typescript\n// Navigation Payload field in SavedTaskForm\n<FormField\n  control={form.control}\n  name=\"navigationPayload\"\n  render={({ field }) => (\n    <FormItem>\n      <FormLabel>\n        <h1 className=\"text-lg\">Navigation Payload</h1>\n        <h2 className=\"text-base text-slate-400\">\n          Specify important parameters, routes, or states\n        </h2>\n      </FormLabel>\n      <CodeEditor {...field} language=\"json\" />\n    </FormItem>\n  )}\n/>\n```\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx]()\n\n#### Workflow Editor Workspace\n\nThe workflow editor workspace provides local execution capabilities with a dialog-based interface for running code locally:\n\n```typescript\n// skyvern-frontend/src/routes/workflows/editor/Workspace.tsx\nfunction bash(command: string, code?: string) {\n  return <code className=\"rounded bg-slate-800 px-1.5 py-0.5\">{command}</code>;\n}\n\n// Installation and setup instructions\n// 1. Install skyvern: pip install skyvern\n// 2. Set up skyvern: skyvern quickstart\n// 3. Run the code: skyvern run code --params '{...}' main.py\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/Workspace.tsx]()\n\n## Backend Architecture (Forge)\n\nThe Forge backend is the core Python application that handles task execution, workflow orchestration, and browser automation. Key modules include:\n\n### Forge Application\n\nThe main application entry point in `skyvern/forge/forge_app.py` initializes the FastAPI application, configures middleware, and registers routes.\n\n### AI Agent Engine\n\nThe agent system in `skyvern/forge/agent.py` processes natural language instructions and generates executable browser actions. The agent:\n\n1. Receives task definitions and navigation goals\n2. Interacts with LLM providers for decision-making\n3. Generates action sequences for browser automation\n4. Handles error recovery and retry logic\n\n### Workflow Service\n\nWorkflow definitions are managed through the SDK service in `skyvern/forge/sdk/workflow/service.py`. This module provides:\n\n- Workflow creation and versioning\n- Script management with cache keys\n- Execution history tracking\n\n## Browser Automation Layer\n\n### Browser Manager\n\nThe browser manager (`skyvern/webeye/browser_manager.py`) orchestrates browser instances using Chrome DevTools Protocol (CDP). It provides:\n\n- Browser pool management\n- Session persistence\n- Screenshot and recording capabilities\n- Multi-tab support\n\n### Browser Configuration Options\n\nThe frontend exposes several browser configuration parameters:\n\n| Parameter | Type | Purpose |\n|-----------|------|---------|\n| `proxyLocation` | string | Proxy server routing |\n| `browserSessionId` | string | Persistent session identifier (format: `pbs_xxx`) |\n| `cdpAddress` | string | Remote CDP endpoint (e.g., `http://127.0.0.1:9222`) |\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx]()\n\n## Data Storage and External Services\n\n### AWS Integration\n\nSkyvern uses AWS services for storage and cloud operations. The `S3Uri` class provides URI parsing for S3 resources:\n\n```python\n# skyvern/forge/sdk/api/aws.py\nclass S3Uri:\n    \"\"\"Parse and manipulate S3 URIs.\"\"\"\n    \n    def __init__(self, uri: str) -> None:\n        self._parsed = urlparse(uri, allow_fragments=False)\n    \n    @property\n    def bucket(self) -> str:\n        return self._parsed.netloc\n    \n    @property\n    def key(self) -> str:\n        if self._parsed.query:\n            return self._parsed.path.lstrip(\"/\") + \"?\" + self._parsed.query\n        return self._parsed.path.lstrip(\"/\")\n```\n\n资料来源：[skyvern/forge/sdk/api/aws.py]()\n\n### Workflow Scripts Storage\n\nScripts are stored with metadata including cache keys and revision counts:\n\n| Field | Description |\n|-------|-------------|\n| `Cache Key Value` | Unique identifier for the script |\n| `Total Revisions` | Number of versions |\n| `Runs` | Execution count |\n| `Last Updated` | Most recent modification timestamp |\n\n资料来源：[skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx]()\n\n## Task Execution Model\n\n### Task Creation Flow\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant Frontend\n    participant Forge API\n    participant Agent\n    participant Browser\n    \n    User->>Frontend: Enter navigation goal\n    User->>Frontend: Configure advanced settings\n    User->>Frontend: Submit task\n    Frontend->>Forge API: POST /v1/tasks\n    Forge API->>Agent: Create task instance\n    Agent->>Browser: Initialize browser session\n    Browser-->>Agent: Session established\n    Agent-->>Forge API: Task created\n    Forge API-->>Frontend: Task response\n    Frontend-->>User: Display task status\n```\n\n### Task States\n\n| State | Description |\n|-------|-------------|\n| `Navigation Goal` | Primary instruction for the agent |\n| `Navigation Payload` | Additional parameters, routes, states |\n| `Proxy Location` | Optional proxy routing |\n| `Browser Session ID` | Persistent session reference |\n\n## Workflow System Architecture\n\n### Workflow Components\n\n| Component | Purpose |\n|-----------|---------|\n| Workflow Scripts | Cached code blocks with versioning |\n| Schedules | Cron-based execution triggers |\n| Workflow Runs | Individual execution instances |\n| Workflow History | Version tracking and modification history |\n\n### Schedule Configuration\n\nSchedules support timezone-aware cron expressions:\n\n```typescript\n// Schedule display components\n<div className=\"space-y-2\">\n  <span className=\"text-sm text-slate-400\">Timezone</span>\n  <span className=\"text-sm text-slate-50\">{schedule.timezone}</span>\n</div>\n<div className=\"space-y-2\">\n  <span className=\"text-sm text-slate-400\">Cron</span>\n  <code className=\"font-mono text-xs\">{schedule.cron_expression}</code>\n</div>\n```\n\n资料来源：[skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx]()\n\n### Script Versioning\n\nEach workflow script maintains a revision history:\n\n```typescript\n// Revision count calculation\n{versions?.versions\n  ? versions.versions.filter(\n      (v) => v.version < (activeVersion ?? 0),\n    ).length\n  : 0}\n<span className=\"text-sm font-normal\">prior</span>\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/WorkflowScriptDetailPage.tsx]()\n\n## Credentials and Authentication\n\n### TOTP/2FA Management\n\nSkyvern supports 2FA code management for authenticated workflows:\n\n| Component | Description |\n|-----------|-------------|\n| `PushTotpCodeForm` | Form for submitting verification codes |\n| Identifier Filter | Filter by email or phone |\n| OTP Type Filter | Filter by type (TOTP/Magic Link) |\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx]()\n\n## LLM Provider Integration\n\nSkyvern supports multiple LLM providers through a unified interface:\n\n| Provider | Supported Models |\n|----------|------------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6, Claude 4.5 |\n| Azure OpenAI | Any deployed GPT models |\n| AWS Bedrock | Claude 4.7, Claude 4.6, Claude 4.5 |\n| Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md]()\n\n## Development and Deployment\n\n### Local Development Setup\n\n```bash\n# 1. Create virtual environment\nuv sync --group dev\n\n# 2. Initialize configuration\nuv run skyvern quickstart\n\n# 3. Access UI\n# Navigate to http://localhost:8080\n```\n\n资料来源：[README.md]()\n\n### Running Workflows Locally\n\nThe workspace editor provides local execution capabilities:\n\n```bash\n# 1. Install skyvern\npip install skyvern\n\n# 2. Set up skyvern\nskyvern quickstart\n\n# 3. Run workflow code\nskyvern run code --params '{\"param1\": \"val1\"}' main.py\n```\n\n## System Data Flow\n\n```mermaid\ngraph LR\n    subgraph Input[\"User Input\"]\n        Prompt[Natural Language Prompt]\n        Payload[Navigation Payload]\n        Config[Configuration]\n    end\n    \n    subgraph Processing[\"Forge Processing\"]\n        Parse[Parse & Validate]\n        Agent[Agent Reasoning]\n        Plan[Action Planning]\n    end\n    \n    subgraph Execution[\"Browser Execution\"]\n        Navigate[Navigate]\n        Interact[Interact]\n        Extract[Extract Data]\n    end\n    \n    subgraph Output[\"Results\"]\n        Screenshots[Screenshots]\n        Data[Extracted Data]\n        Logs[Execution Logs]\n    end\n    \n    Input --> Parse\n    Parse --> Agent\n    Agent --> Plan\n    Plan --> Execute\n    Execute --> Output\n    \n    style Input fill:#e1f5fe\n    style Processing fill:#fff3e0\n    style Execution fill:#e8f5e9\n    style Output fill:#f3e5f5\n```\n\n## Summary\n\nThe Skyvern system architecture follows a modular design with clear separation of concerns:\n\n1. **Frontend Layer**: React SPA providing task creation, workflow editing, and real-time visualization\n2. **Backend Layer**: Python FastAPI application handling agent orchestration, workflow management, and scheduling\n3. **Browser Layer**: Chrome DevTools Protocol-based automation engine for web interaction\n4. **Storage Layer**: S3 for large objects, database for structured data, and LLM providers for reasoning\n\nThe system supports multiple LLM providers, enables persistent browser sessions, and provides comprehensive workflow versioning and scheduling capabilities.\n\n---\n\n<a id='browser-automation'></a>\n\n## Browser Automation Engine\n\n### 相关页面\n\n相关主题：[Introduction to Skyvern](#introduction), [AI-Powered Commands](#ai-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/webeye/__init__.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/__init__.py)\n- [skyvern/webeye/browser_manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/browser_manager.py)\n- [skyvern/webeye/browser_state.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/browser_state.py)\n- [skyvern/webeye/real_browser_manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/real_browser_manager.py)\n- [skyvern/webeye/actions/handler.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/actions/handler.py)\n- [skyvern/webeye/cdp_connection.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/cdp_connection.py)\n</details>\n\n# Browser Automation Engine\n\n## Overview\n\nThe Browser Automation Engine is the core component of Skyvern that enables AI agents to interact with websites through browser control. Instead of relying on fragile XPath-based selectors that break with website layout changes, Skyvern leverages Vision LLMs combined with Playwright and Chrome DevTools Protocol (CDP) to visually understand and interact with web pages.\n\nThe engine provides a unified interface for:\n\n- Launching and managing browser sessions\n- Navigating to URLs with configurable behavior\n- Executing actions (click, type, scroll, hover, etc.)\n- Capturing screenshots for LLM analysis\n- Extracting structured data from web pages\n- Handling multi-step workflows across websites\n\n资料来源：[README.md:60-80]()\n\n## Architecture\n\n### System Components\n\n```mermaid\ngraph TD\n    A[Agent / Task Request] --> B[Browser Manager]\n    B --> C[Real Browser Manager]\n    C --> D[Playwright Browser]\n    C --> E[CDP Connection]\n    D --> F[Browser State]\n    F --> G[Screenshot Capture]\n    F --> H[DOM Extraction]\n    E --> I[DevTools Protocol]\n    G --> J[Vision LLM Analysis]\n    J --> K[Action Handler]\n    K --> C\n```\n\n### Module Structure\n\n| Module | Purpose |\n|--------|---------|\n| `webeye/__init__.py` | Public API exports and core abstractions |\n| `browser_manager.py` | Abstract browser manager interface |\n| `real_browser_manager.py` | Concrete Playwright-based implementation |\n| `browser_state.py` | Page state representation and snapshot |\n| `actions/handler.py` | Action execution and coordination |\n| `cdp_connection.py` | Chrome DevTools Protocol communication |\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py:30-50]()\n\n## Browser Session Management\n\n### Session Lifecycle\n\n```mermaid\nstateDiagram-v2\n    [*] --> Created: browser_session_id\n    Created --> Launching: launch()\n    Launching --> Ready: browser ready\n    Ready --> Navigating: navigate(url)\n    Navigating --> Ready: page loaded\n    Ready --> Executing: perform_action()\n    Executing --> Ready: action complete\n    Ready --> Closed: close()\n    Closed --> [*]\n```\n\n### Persistent Browser Sessions\n\nSkyvern supports persistent browser sessions that maintain cookies, local storage, and login states across task executions:\n\n```python\n# Create a persistent browser session\nbrowser_session_id = \"pbs_xxxxxxxxxxxx\"\n\n# Reuse session for subsequent tasks\ntask = await skyvern.run_task(\n    prompt=\"Download invoice from my account\",\n    browser_session_id=browser_session_id,\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:40-60]()\n\n### Session Configuration Parameters\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `browser_session_id` | string | ID of a persistent browser session |\n| `cdp_address` | string | Browser DevTools address (e.g., `http://127.0.0.1:9222`) |\n| `proxy_location` | string | Geographic proxy for requests |\n| `extra_http_headers` | dict | Custom HTTP headers for requests |\n| `totp_identifier` | string | 2FA identifier for authenticated flows |\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py:40-55]()\n\n## Chrome DevTools Protocol Integration\n\n### CDP Connection\n\nThe CDP connection module provides low-level access to Chrome's debugging interface:\n\n```python\n# CDP connection configuration\ncdp_address = \"http://127.0.0.1:9222\"\n```\n\nSkyvern can connect to:\n\n1. **Local Chrome** - Chrome with remote debugging enabled\n2. **Existing Browser** - Your Chrome with cookies and extensions\n3. **Cloud Browser** - Skyvern-hosted browser via tunnel\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:65-80]()\n\n### Remote Debugging Setup\n\n```bash\n# Step 1: Open Chrome with remote debugging\nchrome --remote-debugging-port=9222\n\n# Or use Skyvern's CLI helper\nskyvern init browser\n```\n\nThe browser exposes WebSocket endpoint at `http://127.0.0.1:9222` for CDP commands.\n\n资料来源：[README.md:45-65]()\n\n## Browser State Representation\n\n### State Components\n\n```mermaid\ngraph LR\n    A[Browser State] --> B[Current URL]\n    A --> C[Screenshot]\n    A --> D[DOM Tree]\n    A --> E[Cookies]\n    A --> F[Local Storage]\n    A --> G[Viewport Info]\n```\n\n### Browser State Object\n\n| Property | Description |\n|----------|-------------|\n| `url` | Current page URL |\n| `title` | Page title |\n| `screenshot` | Base64-encoded screenshot |\n| `dom_tree` | Parsed DOM structure |\n| `viewport` | Viewport dimensions |\n| `elements` | Interactive element mapping |\n\n资料来源：[skyvern/webeye/browser_state.py]()\n\n## Action Handler\n\n### Supported Actions\n\nThe action handler executes LLM-decided actions on the browser:\n\n| Action | Parameters | Description |\n|--------|------------|-------------|\n| `click` | element_selector | Click on specified element |\n| `type` | text, element_selector | Enter text into input field |\n| `hover` | element_selector | Mouse hover over element |\n| `scroll` | direction, amount | Scroll page view |\n| `select` | value, element_selector | Select dropdown option |\n| `press_key` | key | Press keyboard key |\n| `wait` | duration | Wait for page to settle |\n| `navigate` | url | Go to URL |\n| `screenshot` | - | Capture current view |\n| `extract` | schema | Extract data per schema |\n\n资料来源：[skyvern/webeye/actions/handler.py]()\n\n### Action Execution Flow\n\n```mermaid\nsequenceDiagram\n    participant LLM as Vision LLM\n    participant AH as Action Handler\n    participant BM as Browser Manager\n    participant Browser as Playwright/CDP\n    \n    LLM->>AH: Decide action from screenshot\n    AH->>BM: Execute action request\n    BM->>Browser: CDP/Playwright command\n    Browser-->>BM: Action result\n    BM-->>AH: Updated browser state\n    AH-->>LLM: State + screenshot for next decision\n```\n\n## Browser Configuration Options\n\n### Launch Configuration\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `headless` | true | Run browser without visible window |\n| `viewport_width` | 1280 | Browser viewport width |\n| `viewport_height` | 720 | Browser viewport height |\n| `user_agent` | auto | User agent string |\n| `ignore_https_errors` | false | Allow invalid certs |\n\n### Navigation Options\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `url` | string | Target URL |\n| `navigation_payload` | object | Parameters, routes, or initial states |\n| `follow_redirects` | boolean | Auto-follow HTTP redirects |\n| `timeout` | int | Navigation timeout in ms |\n\n资料来源：[skyvern-frontend/src/routes/tasks/detail/TaskParameters.tsx:20-40]()\n\n## Integration with Agent System\n\n### Agent Protocol Integration\n\nThe browser automation engine integrates with Skyvern's agent protocol:\n\n```python\nrun_request=TaskRunRequest(\n    engine=RunEngine.skyvern_v2,\n    prompt=task_v2.prompt,\n    url=task_v2.url,\n    browser_session_id=run_request.browser_session_id,\n    totp_identifier=task_v2.totp_identifier,\n    proxy_location=task_v2.proxy_location,\n    max_steps=run_request.max_steps,\n)\n```\n\n### Workflow Block Execution\n\n```mermaid\ngraph TD\n    A[Workflow Run] --> B[Initialize Browser]\n    B --> C[Go To URL Block]\n    C --> D[Browser Navigation]\n    D --> E[Action Block]\n    E --> F[Extract/Process]\n    F --> G{More Blocks?}\n    G -->|Yes| E\n    G -->|No| H[Close Browser]\n    H --> I[Return Results]\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:10-50]()\n\n## Advanced Features\n\n### Custom Browser Connection\n\nConnect Skyvern Cloud to a local browser running on your machine:\n\n```bash\n# Start Chrome with tunnel to Skyvern Cloud\nskyvern browser serve --tunnel\n```\n\nThis enables:\n- Use existing cookies and logins\n- Bypass VPN restrictions\n- Full browser control via Skyvern API\n\n资料来源：[README.md:80-100]()\n\n### Proxy Support\n\nRoute browser traffic through geographic proxies:\n\n```python\nskyvern.run_task(\n    prompt=\"Search for local restaurants\",\n    proxy_location=\"us-east-1\",  # or \"eu-west-1\", \"ap-south-1\"\n)\n```\n\nAvailable proxy locations provide access to region-specific content.\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:25-35]()\n\n## Error Handling\n\n### Browser-Specific Errors\n\n| Error Type | Cause | Recovery |\n|------------|-------|----------|\n| Navigation timeout | Page fails to load | Retry with extended timeout |\n| Element not found | Dynamic content issues | Re-screenshot and retry |\n| Browser crash | Memory/extension issues | Restart browser session |\n| CDP connection lost | Network disruption | Reconnect and resume |\n\n### Error Code Mapping\n\nCustom error codes can be mapped for workflow-specific handling:\n\n```python\ntask = await skyvern.run_task(\n    prompt=\"Process order\",\n    error_code_mapping={\n        \"ERR_LOGIN_FAILED\": \"retry_with_2fa\",\n        \"ERR_PAYMENT_DECLINED\": \"notify_user\",\n    },\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:45-65]()\n\n## Security Considerations\n\n### Browser Tunneling Security\n\n> [!WARNING]\n> Always use `--api-key` when exposing your browser via tunnel. Without it, anyone with the URL has full control of your browser.\n\nBest practices:\n- Never expose browser tunnels publicly\n- Use authenticated connections only\n- Rotate tunnel URLs frequently\n- Limit browser session access\n\n资料来源：[README.md:95-105]()\n\n### Secure Credential Management\n\nTOTP/2FA codes are handled through secure credential storage:\n\n```python\ntask = await skyvern.run_task(\n    prompt=\"Login to bank account\",\n    totp_identifier=\"banking_2fa_user@example.com\",\n)\n```\n\nThe system extracts codes from push notifications or SMS and attaches them to relevant workflow steps.\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:10-30]()\n\n## Summary\n\nThe Browser Automation Engine provides Skyvern's core capability to automate web interactions using Vision LLMs. Key aspects:\n\n- **Unified abstraction** over Playwright and CDP protocols\n- **Persistent sessions** for maintaining login states\n- **Visual understanding** via screenshot-based LLM analysis\n- **Flexible configuration** for proxy, headers, and browser options\n- **Integrated with workflows** for complex multi-step automation\n\nThis architecture enables Skyvern to operate on websites it has never seen before, adapt to layout changes automatically, and apply the same workflow across many different sites.\n\n---\n\n<a id='workflow-system'></a>\n\n## Workflow System\n\n### 相关页面\n\n相关主题：[System Architecture](#system-architecture), [Database Models](#database-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/workflow/models/block.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/models/block.py)\n- [skyvern/forge/sdk/workflow/models/workflow.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/models/workflow.py)\n- [skyvern/forge/sdk/workflow/service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/service.py)\n- [skyvern/forge/sdk/workflow/workflow_definition_converter.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/workflow_definition_converter.py)\n- [skyvern/services/workflow_service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/services/workflow_service.py)\n- [skyvern/services/block_service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/services/block_service.py)\n</details>\n\n# Workflow System\n\n## Overview\n\nThe Skyvern Workflow System is a core automation framework that enables chaining multiple tasks together to form cohesive units of work. It allows users to create complex multi-step automations by composing reusable building blocks called \"workflow blocks.\"\n\n## Architecture\n\n```mermaid\ngraph TD\n    subgraph \"Frontend Layer\"\n        WE[Workflow Editor]\n        RR[Run Workflow Form]\n        DP[Debugger Panel]\n    end\n    \n    subgraph \"API Layer\"\n        AP[Agent Protocol Routes]\n        WS[Webhook Endpoint]\n    end\n    \n    subgraph \"Service Layer\"\n        WFS[Workflow Service]\n        BS[Block Service]\n    end\n    \n    subgraph \"Core SDK\"\n        WMS[Workflow Models]\n        BMS[Block Models]\n        WDC[Definition Converter]\n        WSS[Workflow Service SDK]\n    end\n    \n    WE --> AP\n    RR --> AP\n    AP --> WFS\n    WFS --> BS\n    WFS --> WMS\n    BS --> BMS\n    WDC --> WMS\n    WDC --> BMS\n    WSS --> WMS\n    WSS --> BMS\n```\n\n## Workflow Model\n\n### WorkflowDefinition\n\nThe `WorkflowDefinition` is the core model representing a workflow:\n\n```python\nclass WorkflowDefinition(BaseModel):\n    title: str\n    description: Optional[str] = None\n    blocks: List[WorkflowBlockDefinition]\n    parameters: List[WorkflowParameter] = []\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `title` | `str` | Human-readable workflow title |\n| `description` | `Optional[str]` | Optional description of workflow purpose |\n| `blocks` | `List[WorkflowBlockDefinition]` | Ordered list of block definitions |\n| `parameters` | `List[WorkflowParameter]` | Input parameters for workflow execution |\n\n资料来源：[skyvern/forge/sdk/workflow/models/workflow.py]()\n\n### WorkflowParameter\n\nWorkflows accept typed input parameters:\n\n```python\nclass WorkflowParameter(BaseModel):\n    key: str\n    workflow_parameter_type: WorkflowParameterType\n    default_value: Optional[Any] = None\n    description: Optional[str] = None\n    required: bool = True\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `key` | `str` | Parameter identifier |\n| `workflow_parameter_type` | `WorkflowParameterType` | Type: `string`, `integer`, `float`, `boolean`, `json` |\n| `default_value` | `Optional[Any]` | Default value if not provided |\n| `description` | `Optional[str]` | Parameter description |\n| `required` | `bool` | Whether parameter is mandatory |\n\n资料来源：[skyvern/forge/sdk/workflow/models/workflow.py]()\n\n## Block Types\n\nSkyvern supports 23 block types for multi-step automations. Each block type serves a specific purpose in workflow execution.\n\n```mermaid\ngraph TD\n    A[Workflow Start] --> B{Block Type}\n    B --> C[Browser Tasks]\n    B --> D[Data Operations]\n    B --> E[Control Flow]\n    B --> F[External Integration]\n    \n    C --> C1[Task v2]\n    C --> C2[Browser Action]\n    C --> C3[Navigation]\n    C --> C4[Login]\n    \n    D --> D1[Extraction]\n    D --> D2[HTTP Request]\n    D --> D3[File Download]\n    \n    E --> E1[Conditional]\n    E --> E2[For Loop]\n    E --> E3[Wait]\n    \n    F --> F1[Email]\n    F --> F2[Text Prompt]\n    F --> F3[Print Page]\n```\n\n### Supported Block Types\n\n| Block Type | Purpose | Key Parameters |\n|------------|---------|----------------|\n| `Taskv2` | Multi-step browser automation | `prompt`, `url`, `max_steps`, `totp_verification_url`, `disable_cache` |\n| `URL` | Navigate to a URL | `url`, `continue_on_failure` |\n| `Wait` | Pause execution | `duration` |\n| `TextPrompt` | LLM text generation | `prompt`, `llm_key`, `json_schema` |\n| `HTTPRequest` | External API calls | `url`, `method`, `headers`, `body` |\n| `Extraction` | Data extraction from page | `prompt`, `llm_key` |\n| `Validation` | Validate extracted data | `prompt`, `error_codes` |\n| `PrintPage` | Print to PDF | `format`, `landscape`, `print_background` |\n| `HumanInteraction` | Pause for human input | `instructions`, `positive_descriptor`, `negative_descriptor` |\n| `Conditional` | Branch logic | `expression` |\n| `ForLoop` | Iterate over items | `items`, `variable_name` |\n| `FileDownload` | Download files | `url`, `follow_redirects`, `save_response_as_file` |\n| `BrowserAction` | Single browser action | `action_type`, `element_id` |\n| `Login` | Handle authentication | `credential_id`, `totp_identifier` |\n\n资料来源：[skyvern/forge/sdk/workflow/models/block.py]()\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Block Execution Model\n\n### WorkflowBlockExecution\n\nEach block execution is tracked with its status:\n\n```python\nclass WorkflowBlockExecution(BaseModel):\n    workflow_run_id: str\n    block_id: str\n    block_type: WorkflowBlockType\n    status: WorkflowBlockStatus\n    output: Optional[Any] = None\n    failure_reason: Optional[str] = None\n    executed_branch_expression: Optional[str] = None\n    executed_branch_result: Optional[bool] = None\n    executed_branch_next_block: Optional[str] = None\n```\n\n| Status | Description |\n|--------|-------------|\n| `created` | Block added to execution queue |\n| `queued` | Waiting for execution |\n| `running` | Currently executing |\n| `completed` | Successfully finished |\n| `failed` | Execution failed |\n| `cancelled` | Cancelled by user |\n\n### Block Parameters by Type\n\n#### Taskv2BlockParameters\n\n```python\nclass Taskv2BlockParameters(BaseModel):\n    prompt: str\n    url: Optional[str] = None\n    max_steps: Optional[int] = None\n    totp_verification_url: Optional[str] = None\n    totp_identifier: Optional[str] = None\n    disable_cache: bool = False\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `prompt` | `str` | - | Navigation goal for the browser agent |\n| `url` | `Optional[str]` | `None` | Starting URL for navigation |\n| `max_steps` | `Optional[int]` | `None` | Maximum steps before stopping |\n| `totp_verification_url` | `Optional[str]` | `None` | URL for 2FA verification |\n| `totp_identifier` | `Optional[str]` | `None` | Identifier for TOTP credentials |\n| `disable_cache` | `bool` | `False` | Disable action caching |\n\n资料来源：[skyvern/forge/sdk/workflow/models/block.py]()\n\n#### GotoUrlBlockParameters\n\n```python\nclass GotoUrlBlockParameters(BaseModel):\n    url: str\n    continue_on_failure: bool = False\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | `str` | - | Target URL to navigate to |\n| `continue_on_failure` | `bool` | `False` | Continue workflow on navigation failure |\n\n#### WaitBlockParameters\n\n```python\nclass WaitBlockParameters(BaseModel):\n    duration: int\n```\n\n#### PrintPageBlockParameters\n\n```python\nclass PrintPageBlockParameters(BaseModel):\n    format: PrintFormat = PrintFormat.A4\n    landscape: bool = False\n    print_background: bool = False\n    include_timestamp: bool = True\n    custom_filename: Optional[str] = None\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `format` | `PrintFormat` | `A4` | Page format: `A4`, `Letter`, `Legal` |\n| `landscape` | `bool` | `False` | Use landscape orientation |\n| `print_background` | `bool` | `False` | Print background colors |\n| `include_timestamp` | `bool` | `True` | Include timestamp in footer |\n| `custom_filename` | `Optional[str]` | `None` | Custom output filename |\n\n#### HumanInteractionBlockParameters\n\n```python\nclass HumanInteractionBlockParameters(BaseModel):\n    instructions: Optional[str] = None\n    positive_descriptor: Optional[str] = None\n    negative_descriptor: Optional[str] = None\n```\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `instructions` | `Optional[str]` | Instructions for the human |\n| `positive_descriptor` | `Optional[str]` | Label for positive confirmation |\n| `negative_descriptor` | `Optional[str]` | Label for negative/cancellation action |\n\n## Workflow Execution Flow\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant API\n    participant WorkflowService\n    participant BlockService\n    participant Executor\n\n    Client->>API: POST /workflows/{id}/run\n    API->>WorkflowService: create_workflow_run()\n    WorkflowService->>WorkflowService: Validate parameters\n    WorkflowService->>WorkflowService: Create WorkflowRun record\n    WorkflowService-->>API: WorkflowRun\n    \n    loop For each block\n        API->>BlockService: execute_block()\n        BlockService->>Executor: Process block\n        Executor-->>BlockService: Block result\n        BlockService-->>API: WorkflowBlockExecution\n    end\n    \n    API->>Client: Webhook callback (optional)\n```\n\n## Workflow Service API\n\n### Core Operations\n\n| Method | Description | Source |\n|--------|-------------|--------|\n| `create_workflow` | Create new workflow | [skyvern/forge/sdk/workflow/service.py]() |\n| `get_workflow` | Retrieve workflow by ID | [skyvern/forge/sdk/workflow/service.py]() |\n| `update_workflow` | Update workflow definition | [skyvern/forge/sdk/workflow/service.py]() |\n| `delete_workflow` | Delete workflow | [skyvern/forge/sdk/workflow/service.py]() |\n| `list_workflows` | List all workflows | [skyvern/forge/sdk/workflow/service.py]() |\n| `run_workflow` | Execute workflow | [skyvern/services/workflow_service.py]() |\n| `cancel_workflow_run` | Cancel running workflow | [skyvern/services/workflow_service.py]() |\n\n### Running Workflows\n\nWorkflows can be executed via:\n\n1. **API**: `POST /workflows/{workflow_id}/run`\n2. **CLI**: `skyvern_workflow_run` tool\n3. **Schedule**: Cron-based scheduled execution\n\n### Run Parameters\n\nWhen running a workflow, the following parameters can be specified:\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `parameters` | `Dict[str, Any]` | Workflow input parameters |\n| `webhook_callback_url` | `Optional[str]` | URL for result callback |\n| `proxy_location` | `Optional[ProxyLocation]` | Geographic proxy location |\n| `run_with` | `RunWith` | `agent` or `code` execution mode |\n| `ai_fallback` | `bool` | Fall back to AI if code generation fails |\n\n资料来源：[skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx]()\n\n## Webhook Integration\n\nWorkflows support webhook callbacks for asynchronous result delivery:\n\n```mermaid\ngraph LR\n    A[Workflow Run] --> B{Complete?}\n    B -->|Yes| C[Send webhook]\n    B -->|No| D[Retry queue]\n    D --> B\n    C --> E[Customer Endpoint]\n```\n\nThe webhook payload includes:\n\n```python\n{\n    \"workflow_run_id\": str,\n    \"workflow_id\": str,\n    \"status\": WorkflowRunStatus,\n    \"output\": Optional[Any],\n    \"failure_reason\": Optional[str],\n    \"created_at\": datetime,\n    \"modified_at\": datetime,\n    \"blocks\": List[WorkflowBlockExecution]\n}\n```\n\n## MCP Integration\n\nSkyvern provides MCP (Model Context Protocol) tools for workflow management:\n\n### Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_workflow_create` | Create new workflow |\n| `skyvern_workflow_list` | List all workflows |\n| `skyvern_workflow_get` | Get workflow details |\n| `skyvern_workflow_run` | Execute workflow |\n| `skyvern_workflow_status` | Check run status |\n| `skyvern_workflow_update` | Update workflow |\n| `skyvern_workflow_delete` | Delete workflow |\n| `skyvern_workflow_cancel` | Cancel running workflow |\n| `skyvern_block_schema` | Get block type schema |\n| `skyvern_block_validate` | Validate block definition |\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Frontend Components\n\n### Workflow Editor\n\nLocated at `/workflows/{workflow_id}/build`, the editor provides:\n\n- Visual block composition\n- Block parameter configuration\n- Workflow validation\n- Preview mode\n\n### Run Workflow Form\n\nLocated at `/workflows/{workflow_id}/run`, supports:\n\n- Parameter input with type validation\n- Run method selection (`agent` or `code`)\n- Webhook URL configuration\n- Proxy location selection\n\n### Debugger Panel\n\nLocated at `/workflows/{workflow_id}/debug`, provides:\n\n- Real-time execution status\n- Block-by-block output inspection\n- Extracted information viewer\n- Failure reason analysis\n\n### Workflow Run Timeline\n\nDisplays execution history with:\n\n- Block status indicators\n- Execution timestamps\n- Extracted data per block\n- Navigation to diagnostics\n\n## Data Flow\n\n```mermaid\ngraph TD\n    subgraph \"Definition Layer\"\n        WD[Workflow Definition]\n        BD[Block Definitions]\n        WP[Workflow Parameters]\n    end\n    \n    subgraph \"Execution Layer\"\n        WR[Workflow Run]\n        BR[Block Executions]\n        ST[State Management]\n    end\n    \n    subgraph \"Output Layer\"\n        OT[Output Data]\n        ER[Error Reports]\n        WH[Webhook Events]\n    end\n    \n    WD --> WR\n    BD --> BR\n    WP --> WR\n    BR --> ST\n    ST --> OT\n    BR -->|on failure| ER\n    WR --> WH\n```\n\n## Key Features\n\n### Conditional Execution\n\nThe `Conditional` block evaluates expressions and branches workflow execution:\n\n```python\nclass ConditionalBlockParameters(BaseModel):\n    expression: str  # e.g., \"data.status == 'approved'\"\n```\n\nAfter evaluation, the system records:\n- `executed_branch_expression`: The evaluated expression\n- `executed_branch_result`: Boolean result\n- `executed_branch_next_block`: Next block ID based on result\n\n### For Loop Iteration\n\nThe `ForLoop` block iterates over collections:\n\n```python\nclass ForLoopBlockParameters(BaseModel):\n    items: List[Any]\n    variable_name: str  # Variable to expose in loop context\n```\n\n### Error Handling\n\nBlocks support `continue_on_failure` flag for graceful degradation:\n\n```python\nclass GotoUrlBlockParameters:\n    url: str\n    continue_on_failure: bool = False\n```\n\nWhen enabled, workflow continues to next block on failure.\n\n### TOTP/2FA Support\n\nBrowser tasks can handle two-factor authentication:\n\n```python\nclass Taskv2BlockParameters:\n    totp_verification_url: Optional[str]\n    totp_identifier: Optional[str]\n```\n\nUsers can push verification codes via the frontend or API.\n\n## Security Considerations\n\n### Webhook Signature Validation\n\nWebhook endpoints must validate signatures:\n\n```python\nasync def webhook(request: Request) -> Response:\n    signature = request.headers.get(\"x-skyvern-signature\")\n    timestamp = request.headers.get(\"x-skyvern-timestamp\")\n    \n    if not signature or not timestamp:\n        raise HTTPException(status_code=400)\n    \n    payload = await request.body()\n    expected = generate_skyvern_signature(\n        payload.decode(\"utf-8\"),\n        settings.SKYVERN_API_KEY\n    )\n```\n\n### Credential Management\n\nWorkflows requiring authentication reference stored credentials by ID rather than embedding sensitive data.\n\n## CLI Commands\n\n```bash\n# Switch between environments\nskyvern mcp switch\n\n# List workflows\nskyvern workflow list\n\n# Run workflow\nskyvern workflow run <workflow_id>\n```\n\n## See Also\n\n- [Task System](tasks.md) - Single-task automation\n- [Browser Agent](browser-agent.md) - AI-powered web navigation\n- [Credential Management](credentials.md) - Secure credential storage\n- [Scheduling System](schedules.md) - Cron-based workflow execution\n\n---\n\n<a id='ai-commands'></a>\n\n## AI-Powered Commands\n\n### 相关页面\n\n相关主题：[Browser Automation Engine](#browser-automation), [LLM Provider Configuration](#llm-providers)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/agent_functions.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/agent_functions.py)\n- [skyvern/forge/sdk/copilot/agent.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/copilot/agent.py)\n- [skyvern/forge/sdk/copilot/tools.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/copilot/tools.py)\n- [skyvern/library/skyvern_browser_page_ai.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/library/skyvern_browser_page_ai.py)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/skills/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/README.md)\n</details>\n\n# AI-Powered Commands\n\nSkyvern provides a comprehensive suite of AI-powered commands that enable intelligent browser automation through natural language instructions. These commands leverage Large Language Models (LLMs) to interpret user intent and execute complex browser interactions autonomously.\n\n## Overview\n\nAI-Powered Commands in Skyvern represent a paradigm shift from traditional scripted automation to intelligent, intent-based browser control. Instead of writing precise step-by-step instructions, users describe what they want to achieve in natural language, and Skyvern's AI agents interpret and execute the necessary browser actions.\n\nThe system integrates with multiple LLM providers including OpenAI (GPT-4.1, o3, o4-mini), Anthropic (Claude 4.5-4.7), Azure OpenAI, AWS Bedrock, and Google Gemini to power the AI decision-making engine.\n\n## Architecture\n\n```mermaid\ngraph TD\n    A[User Input / Natural Language] --> B[Copilot Agent]\n    B --> C[LLM Provider]\n    C --> D[Decision Engine]\n    D --> E[Browser Actions]\n    E --> F[Element Interaction]\n    F --> G[State Validation]\n    G --> H[Continue / Complete]\n    \n    B --> I[Tool Selection]\n    I --> J[Data Extraction]\n    I --> K[Visual Validation]\n    I --> L[Network Monitoring]\n    \n    subgraph Tools\n        J\n        K\n        L\n    end\n```\n\n## Core Components\n\n### Copilot Agent (`skyvern/forge/sdk/copilot/agent.py`)\n\nThe Copilot Agent serves as the central orchestration layer for AI-powered commands. It maintains conversation context, manages tool selection, and coordinates the execution flow between user instructions and browser actions.\n\n| Component | Responsibility |\n|-----------|----------------|\n| Context Manager | Maintains conversation history and state |\n| Tool Selector | Chooses appropriate tools based on intent |\n| Action Executor | Executes browser actions |\n| Response Formatter | Formats AI responses for user consumption |\n\n### Tool System (`skyvern/forge/sdk/copilot/tools.py`)\n\nSkyvern's tool system provides a comprehensive set of primitives for browser automation. Each tool is designed to handle specific interaction patterns while being composable for complex workflows.\n\n### Browser Page AI (`skyvern/library/skyvern_browser_page_ai.py`)\n\nThis module provides the foundational AI capabilities for understanding and interacting with web page content. It includes element identification, content extraction, and visual analysis capabilities.\n\n## Navigation and Interaction Commands\n\n### Element Interactions\n\n| Command | Purpose | Parameters |\n|---------|---------|------------|\n| `skyvern_click` | Click on identified elements | `element_selector`, `options` |\n| `skyvern_type` | Enter text into input fields | `text`, `element_selector` |\n| `skyvern_hover` | Hover over elements | `element_selector` |\n| `skyvern_scroll` | Scroll within page or elements | `direction`, `amount` |\n| `skyvern_select_option` | Select dropdown options | `value`, `element_selector` |\n| `skyvern_press_key` | Press keyboard keys | `key`, `modifiers` |\n| `skyvern_drag` | Drag and drop operations | `source`, `target` |\n| `skyvern_wait` | Wait for conditions | `condition`, `timeout` |\n| `skyvern_file_upload` | Upload files to elements | `file_path`, `element_selector` |\n\n### Browser Navigation\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_navigate` | Navigate to URLs |\n| `skyvern_go_back` | Navigate browser history back |\n| `skyvern_go_forward` | Navigate browser history forward |\n| `skyvern_reload` | Reload current page |\n\n### Tab and Frame Management\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_tab_new` | Open new browser tab |\n| `skyvern_tab_list` | List all open tabs |\n| `skyvern_tab_switch` | Switch to specific tab |\n| `skyvern_tab_close` | Close current or specified tab |\n| `skyvern_tab_wait_for_new` | Wait for new tab to open |\n| `skyvern_frame_list` | List all iframes on page |\n| `skyvern_frame_switch` | Switch to iframe context |\n\n## Data Extraction Commands\n\nSkyvern provides multiple methods for extracting structured data from web pages:\n\n### Structured Extraction\n\n| Command | Purpose | Output Format |\n|---------|---------|---------------|\n| `skyvern_extract` | Extract structured data | JSON with defined schema |\n| `skyvern_get_html` | Get page HTML | Raw HTML string |\n| `skyvern_get_value` | Get form element values | String or JSON |\n\n### Visual Extraction\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_screenshot` | Capture full or partial screenshots |\n| `skyvern_get_styles` | Get computed CSS styles |\n| `skyvern_find` | Find elements by visual similarity |\n\n### Content Analysis\n\nThe extraction system uses AI to understand page structure and extract relevant information based on user intent. It supports:\n\n- Dynamic schema generation based on natural language requests\n- Multi-field extraction from complex layouts\n- Nested data structures and repeating elements\n- Confidence scoring for extracted values\n\n## Validation and Verification\n\n### AI-Powered Validation\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_validate` | Validate element states or page conditions |\n| `skyvern_evaluate` | Run JavaScript for custom validation |\n| `skyvern_evaluate_async` | Execute async JavaScript operations |\n\nValidation commands use the LLM to interpret complex conditions that would be difficult to express in traditional selectors or XPath expressions.\n\n### Screenshot Validation\n\nThe screenshot command supports comparison against reference images and can detect visual regressions:\n\n```python\nresult = await skyvern.screenshot(\n    full_page=True,\n    compare_with=\"baseline.png\",\n    threshold=0.1  # 10% allowed difference\n)\n```\n\n## Network and Console Commands\n\n### Network Monitoring\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_network_requests` | List network requests |\n| `skyvern_network_request_detail` | Get request/response details |\n| `skyvern_network_route` | Intercept and modify requests |\n| `skyvern_network_unroute` | Remove request interception |\n| `skyvern_har_start` | Start HAR recording |\n| `skyvern_har_stop` | Stop and export HAR data |\n\n### Console Inspection\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_console_messages` | Retrieve console logs |\n| `skyvern_get_errors` | Get JavaScript errors |\n| `skyvern_handle_dialog` | Handle browser dialogs (alert, confirm, prompt) |\n\n## Authentication and Credentials\n\n### Login Commands\n\nSkyvern supports intelligent login flows with multiple authentication methods:\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_login` | Execute automated login |\n| `skyvern_credential_list` | List stored credentials |\n| `skyvern_credential_get` | Retrieve specific credentials |\n| `skyvern_credential_delete` | Remove stored credentials |\n\n### Credential Management\n\nThe credential system integrates with:\n\n- **Skyvern Vault**: Built-in secure storage\n- **Bitwarden**: Enterprise password management\n- **1Password**: Team password sharing\n- **Azure Key Vault**: Cloud credential storage\n\n### Two-Factor Authentication\n\nSkyvern handles 2FA/TOTP flows automatically:\n\n1. Detects OTP requirement during login\n2. Extracts codes from configured sources\n3. Supports magic link authentication\n4. Push notification handling via `skyvern/cli/skills/README.md`\n\n## State Management\n\n### Session State\n\n| Command | Purpose |\n|---------|---------||\n| `skyvern_state_save` | Save current browser state |\n| `skyvern_state_load` | Restore saved state |\n| `skyvern_get_session_storage` | Read session storage |\n| `skyvern_set_session_storage` | Write to session storage |\n| `skyvern_clear_session_storage` | Clear session storage |\n| `skyvern_clear_local_storage` | Clear local storage |\n\n### Clipboard Operations\n\n| Command | Purpose |\n|---------|---------||\n| `skyvern_clipboard_read` | Read from clipboard |\n| `skyvern_clipboard_write` | Write to clipboard |\n\n## Workflow Integration\n\nAI-Powered Commands can be orchestrated into complete workflows:\n\n```mermaid\ngraph LR\n    A[Navigation] --> B[Authentication]\n    B --> C[Data Extraction]\n    C --> D[Validation]\n    D --> E{Success?}\n    E -->|No| F[Retry Logic]\n    F --> B\n    E -->|Yes| G[Output Results]\n```\n\n### Workflow Commands\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_workflow_create` | Create new workflow |\n| `skyvern_workflow_list` | List available workflows |\n| `skyvern_workflow_get` | Get workflow details |\n| `skyvern_workflow_run` | Execute workflow |\n| `skyvern_workflow_cancel` | Cancel running workflow |\n\n## Agent Functions (`skyvern/forge/agent_functions.py`)\n\nThe agent functions module provides the core building blocks for AI-driven browser automation:\n\n### Function Categories\n\n1. **Navigation Functions**: Handle URL navigation, back/forward, and reload\n2. **Interaction Functions**: Click, type, hover, scroll, and element manipulation\n3. **Extraction Functions**: HTML retrieval, value extraction, screenshot capture\n4. **Validation Functions**: Element presence, state verification, screenshot comparison\n5. **State Functions**: Local/session storage, clipboard, authentication state\n\n### Function Interface\n\nAll agent functions follow a consistent interface:\n\n```python\nasync def agent_function(\n    task_id: str,\n    step_id: str,\n    **kwargs  # Function-specific parameters\n) -> AgentFunctionCallResult:\n    \"\"\"\n    Execute AI-powered browser action\n    \n    Returns:\n        AgentFunctionCallResult with:\n        - success: bool\n        - extracted_data: Optional[dict]\n        - screenshot: Optional[str] base64\n        - error: Optional[str]\n    \"\"\"\n```\n\n## Integration with Skills Package\n\nThe skills package (`skyvern/cli/skills/README.md`) bundles AI-powered commands for coding agents:\n\n### Available Skills\n\n| Skill | Description |\n|-------|-------------|\n| `qa` | QA test frontend changes in real browser |\n| `skyvern` | Full CLI reference for browser automation |\n| `smoke-test` | CI-oriented smoke testing |\n\n### QA Skill Workflow\n\n```mermaid\ngraph TD\n    A[git diff] --> B[Generate Tests]\n    B --> C[Run Against Dev Server]\n    C --> D[Report Results]\n    D --> E{Screenshots}\n    E --> F[Pass/Fail Status]\n```\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Purpose | Default |\n|----------|---------|---------|\n| `SKYVERN_TELEMETRY` | Enable/disable usage telemetry | `true` |\n| `SKYVERN_BASE_URL` | API endpoint for Skyvern Cloud | Local server |\n| `SKYVERN_API_KEY` | Authentication key | None |\n\n### Browser Configuration\n\n| Parameter | Purpose |\n|-----------|---------|\n| `BROWSER_TYPE` | Browser engine (chromium, firefox, webkit) |\n| `BROWSER_HEADLESS` | Run without visible UI |\n| `BROWSER_REMOTE_DEBUGGING_URL` | Connect to remote browser instance |\n\n## Best Practices\n\n### Effective Command Usage\n\n1. **Be Specific with Selectors**: Use precise element identifiers when available\n2. **Add Validation Steps**: Always validate state changes after actions\n3. **Handle Timing**: Use wait commands for dynamic content\n4. **Screenshot for Debugging**: Capture screenshots at key decision points\n\n### Error Handling\n\n```python\ntry:\n    result = await skyvern.act(\"click\", selector=\"#submit-button\")\n    if not result.success:\n        # Fallback or retry logic\n        await skyvern.validate(\"element_visible\", selector=\"#error-message\")\nexcept Exception as e:\n    await skyvern.screenshot()\n    raise\n```\n\n## Summary\n\nAI-Powered Commands in Skyvern transform browser automation from rigid scripting to intelligent, adaptive interactions. By combining natural language understanding with comprehensive browser control primitives, developers can create robust automation flows that handle complexity and edge cases gracefully.\n\nThe modular architecture allows commands to be used individually for simple tasks or combined into sophisticated workflows for enterprise-scale automation needs.\n\n---\n\n<a id='database-models'></a>\n\n## Database Models\n\n### 相关页面\n\n相关主题：[Artifact Storage](#artifact-storage), [Workflow System](#workflow-system)\n\n# Database Models\n\n## Overview\n\nSkyvern's database layer is built using SQLAlchemy ORM with Alembic for database migrations. The persistence layer is located in `skyvern/forge/sdk/db/` and provides the data models for all core entities including Tasks, Workflows, Workflow Runs, Browser Profiles, Credentials, and Schedules.\n\nThe database models define the schema for persistent storage of automation tasks, execution state, workflow definitions, and runtime data.\n\n## Architecture\n\n```mermaid\ngraph TD\n    A[API Layer] --> B[Repository Layer]\n    B --> C[SQLAlchemy Models]\n    C --> D[(PostgreSQL Database)]\n    B --> E[Task Repository]\n    B --> F[Workflow Repository]\n    B --> G[Workflow Run Repository]\n```\n\n## Core Entities\n\n### Task Model\n\nThe Task model represents an automation task with its configuration and execution state.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| task_id | String | Unique identifier (UUID) |\n| workflow_run_id | String (nullable) | Associated workflow run |\n| status | TaskStatus | Current task status |\n| request | JSON | Task request configuration |\n| navigation_goal | String | Navigation objective |\n| navigation_payload | JSON | Additional navigation parameters |\n| data_extraction_goal | String | Data extraction objective |\n| extracted_information_schema | JSON | Expected output schema |\n| created_at | DateTime | Creation timestamp |\n| modified_at | DateTime | Last modification timestamp |\n| organization_id | String | Organization ownership |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n### Workflow Model\n\nThe Workflow model stores workflow definitions and configurations.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| workflow_id | String | Unique workflow identifier |\n| title | String | Workflow name |\n| description | String | Workflow description |\n| workflow_definition | JSON | Workflow structure and steps |\n| webhook_callback_url | String (nullable) | Callback URL for completion |\n| organization_id | String | Organization ownership |\n| created_at | DateTime | Creation timestamp |\n| modified_at | DateTime | Last modification timestamp |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n### Workflow Run Model\n\nThe WorkflowRun model tracks individual executions of workflows.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| workflow_run_id | String | Unique run identifier |\n| workflow_id | String | Parent workflow reference |\n| status | WorkflowRunStatus | Run status |\n| organization_id | String | Organization ownership |\n| started_at | DateTime | Execution start time |\n| completed_at | DateTime (nullable) | Execution completion time |\n| error | String (nullable) | Error message if failed |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n## Task Status Enum\n\nThe TaskStatus enum defines possible task states:\n\n```python\nclass TaskStatus(str, Enum):\n    created = \"created\"\n    pending = \"pending\"\n    running = \"running\"\n    completed = \"completed\"\n    failed = \"failed\"\n    cancelled = \"cancelled\"\n```\n\n资料来源：[skyvern/forge/sdk/db/enums.py]()\n\n### Task Status Flow\n\n```mermaid\nstateDiagram-v2\n    [*] --> created: Task Created\n    created --> pending: Queued for Execution\n    pending --> running: Agent Starts\n    running --> completed: Success\n    running --> failed: Error\n    running --> cancelled: User Cancelled\n    completed --> [*]\n    failed --> [*]\n    cancelled --> [*]\n```\n\n## Repository Pattern\n\nSkyvern uses a repository pattern to abstract database operations.\n\n### TaskRepository\n\nProvides CRUD operations for Task entities:\n\n- `create_task()` - Create new task record\n- `get_task()` - Retrieve task by ID\n- `update_task()` - Update task fields\n- `get_tasks_for_workflow_run()` - Get tasks for workflow execution\n- `get_tasks_by_organization()` - List organization tasks\n\n资料来源：[skyvern/forge/sdk/db/repositories/tasks.py]()\n\n### WorkflowRepository\n\nManages Workflow entity persistence:\n\n- `create_workflow()` - Create new workflow\n- `get_workflow()` - Retrieve workflow definition\n- `update_workflow()` - Update workflow\n- `get_workflows_by_organization()` - List organization workflows\n\n资料来源：[skyvern/forge/sdk/db/repositories/workflows.py]()\n\n### WorkflowRunRepository\n\nHandles WorkflowRun entity operations:\n\n- `create_workflow_run()` - Start new workflow execution\n- `get_workflow_run()` - Get run details\n- `update_workflow_run()` - Update run status\n- `get_workflow_runs_for_workflow()` - List runs for a workflow\n\n资料来源：[skyvern/forge/sdk/db/repositories/workflow_runs.py]()\n\n## Database Migrations\n\nAlembic manages database schema migrations in the `alembic/versions/` directory.\n\nMigration files follow the naming convention: `{version}_{description}.py`\n\nExample migration operations:\n- Adding new columns to existing tables\n- Creating new tables for additional entities\n- Index creation for query optimization\n- Data type modifications\n\n资料来源：[alembic/versions]()\n\n## Relationships\n\n```mermaid\nerDiagram\n    Organization ||--o{ Task : owns\n    Organization ||--o{ Workflow : owns\n    Organization ||--o{ WorkflowRun : owns\n    Workflow ||--o{ WorkflowRun : executes\n    WorkflowRun ||--o{ Task : contains\n```\n\n## Additional Models\n\nThe database layer also includes models for:\n\n| Model | Purpose |\n|-------|---------|\n| BrowserProfile | Browser configuration settings |\n| Credential | Authentication credentials storage |\n| Schedule | Cron-based task scheduling |\n| ScheduleRun | Scheduled execution tracking |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n## Usage Example\n\n```python\nfrom skyvern.forge.sdk.db.repositories.tasks import TaskRepository\nfrom skyvern.forge.sdk.db.models import Task\n\ntask_repo = TaskRepository()\nnew_task = await task_repo.create_task(\n    organization_id=\"org_123\",\n    navigation_goal=\"Search for flights\",\n    navigation_payload={\"origin\": \"SFO\", \"destination\": \"LAX\"}\n)\n```\n\n## Configuration\n\nDatabase connection is configured via environment variables:\n\n| Variable | Description |\n|----------|-------------|\n| DATABASE_URL | PostgreSQL connection string |\n| SKYVERN_ORG_ID | Default organization ID |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n---\n\n<a id='artifact-storage'></a>\n\n## Artifact Storage\n\n### 相关页面\n\n相关主题：[Database Models](#database-models)\n\n<details>\n<summary>Relevant Source Files</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/artifact/storage/local.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/local.py)\n- [skyvern/forge/sdk/artifact/models.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/models.py)\n- [skyvern/forge/sdk/routes/agent_protocol.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/routes/agent_protocol.py)\n- [skyvern/forge/sdk/artifact/manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/manager.py)\n- [skyvern/forge/sdk/artifact/storage/factory.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/factory.py)\n- [skyvern/forge/sdk/artifact/storage/s3.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/s3.py)\n- [skyvern/forge/sdk/artifact/storage/azure.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/azure.py)\n</details>\n\n# Artifact Storage\n\n## Overview\n\nArtifact Storage is a core system in Skyvern responsible for persisting and retrieving various artifacts generated during task execution and workflow runs. These artifacts include screenshots, HTML content, LLM prompts and responses, element trees, download files, and execution logs. The system provides a pluggable storage backend architecture that supports multiple storage providers while maintaining a consistent API.\n\nThe storage layer abstracts away the complexity of different storage backends (local filesystem, Amazon S3, Azure Blob Storage) from the rest of the application, allowing deployments to choose the most appropriate storage solution for their infrastructure requirements.\n\n## Architecture\n\n### High-Level Architecture\n\n```mermaid\ngraph TD\n    A[API Clients] --> B[Agent Protocol Routes]\n    B --> C[Artifact Manager]\n    C --> D[Storage Factory]\n    D --> E[Local Storage]\n    D --> F[S3 Storage]\n    D --> G[Azure Blob Storage]\n    \n    H[Artifact Models] --> C\n    C --> H\n    \n    I[Configuration] --> D\n```\n\n### Component Responsibilities\n\n| Component | File | Responsibility |\n|-----------|------|-----------------|\n| Artifact Manager | `artifact/manager.py` | Orchestrates artifact operations, lifecycle management |\n| Storage Factory | `artifact/storage/factory.py` | Creates appropriate storage backend based on configuration |\n| Local Storage | `artifact/storage/local.py` | Filesystem-based storage implementation |\n| S3 Storage | `artifact/storage/s3.py` | AWS S3/ S3-compatible storage implementation |\n| Azure Blob Storage | `artifact/storage/azure.py` | Azure Blob Storage implementation |\n| Artifact Models | `artifact/models.py` | Data models for artifacts and artifact types |\n\n## Artifact Types\n\nSkyvern distinguishes between multiple artifact types, each serving a specific purpose in documenting and debugging task execution.\n\n### Supported Artifact Types\n\n```python\nclass ArtifactType(str, Enum):\n    SCREENSHOT_LLM = \"screenshot_llm\"\n    SCREENSHOT_ACTION = \"screenshot_action\"\n    HTML_SCRAPE = \"html_scrape\"\n    ELEMENT_TREE = \"element_tree\"\n    ELEMENT_TREE_VISIBLE = \"element_tree_visible\"\n    LLM_PROMPT = \"llm_prompt\"\n    LLM_RESPONSE_PARSED = \"llm_response_parsed\"\n    DOWNLOAD = \"download\"\n    SKYVERN_LOG = \"skyvern_log\"\n```\n\n| Type | Description | Content-Type |\n|------|-------------|--------------|\n| `SCREENSHOT_LLM` | Annotated screenshots for LLM context | image/png |\n| `SCREENSHOT_ACTION` | Action screenshots captured during execution | image/png |\n| `HTML_SCRAPE` | Raw HTML content from web pages | text/html |\n| `ELEMENT_TREE` | Complete DOM element tree | application/json |\n| `ELEMENT_TREE_VISIBLE` | Filtered visible elements tree | application/json |\n| `LLM_PROMPT` | Prompt sent to LLM for decision making | text/plain |\n| `LLM_RESPONSE_PARSED` | Parsed LLM response with action list | application/json |\n| `DOWNLOAD` | Downloaded file content | application/octet-stream |\n| `SKYVERN_LOG` | Skyvern execution logs | text/plain |\n\n资料来源：[skyvern/forge/sdk/artifact/models.py]()\n\n## Data Models\n\n### Artifact Model\n\nThe `Artifact` model represents a single stored artifact with metadata:\n\n```python\nclass Artifact(BaseModel):\n    artifact_id: str\n    organization_id: str\n    run_id: str | None = None\n    task_id: str | None = None\n    step_id: str | None = None\n    workflow_run_id: str | None = None\n    workflow_block_execution_id: str | None = None\n    artifact_type: ArtifactType\n    uri: str\n    filename: str | None = None\n    content_type: str | None = None\n    metadata: dict[str, Any] | None = None\n    created_at: datetime\n    modified_at: datetime | None = None\n```\n\n资料来源：[skyvern/forge/sdk/artifact/models.py]()\n\n### Content-Type Mapping\n\n```python\n_ARTIFACT_CONTENT_TYPES: dict[ArtifactType, str] = {\n    ArtifactType.SCREENSHOT_LLM: \"image/png\",\n    ArtifactType.SCREENSHOT_ACTION: \"image/png\",\n    ArtifactType.HTML_SCRAPE: \"text/html\",\n    ArtifactType.ELEMENT_TREE: \"application/json\",\n    ArtifactType.ELEMENT_TREE_VISIBLE: \"application/json\",\n    ArtifactType.LLM_PROMPT: \"text/plain\",\n    ArtifactType.LLM_RESPONSE_PARSED: \"application/json\",\n    ArtifactType.DOWNLOAD: \"application/octet-stream\",\n    ArtifactType.SKYVERN_LOG: \"text/plain\",\n}\n```\n\n## Storage Backends\n\n### Local Storage\n\nThe local storage backend stores artifacts on the filesystem, ideal for development and single-instance deployments.\n\n```python\nclass LocalStorage(BaseStorage):\n    def __init__(self, artifact_path: str = settings.ARTIFACT_STORAGE_PATH) -> None:\n        self.artifact_path = artifact_path\n```\n\nKey implementation details:\n\n- **Path Construction**: Uses organization and artifact IDs to create hierarchical directory structures\n- **Windows Compatibility**: Replaces colons with dashes in timestamps and removes invalid filename characters on Windows systems\n- **SHA256 Verification**: Computes SHA256 checksums for stored files\n\n```python\ndef _safe_timestamp() -> str:\n    ts = datetime.utcnow().isoformat()\n    return ts.replace(\":\", \"-\") if WINDOWS else ts\n\ndef _windows_safe_filename(name: str) -> str:\n    if not WINDOWS:\n        return name\n    invalid = '<>:\"/\\\\|?*'\n    name = \"\".join(\"-\" if ch in invalid else ch for ch in name)\n    return name.rstrip(\" .\")\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/local.py]()\n\n### S3 Storage\n\nThe S3 backend provides scalable object storage suitable for production deployments.\n\n**Configuration Environment Variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `AWS_ACCESS_KEY_ID` | AWS access key for authentication |\n| `AWS_SECRET_ACCESS_KEY` | AWS secret key for authentication |\n| `AWS_REGION` | AWS region for bucket operations |\n| `S3_BUCKET_NAME` | Name of the S3 bucket |\n| `ARTIFACT_S3_ENDPOINT_URL` | Custom S3-compatible endpoint (optional) |\n\n资料来源：[skyvern/forge/sdk/artifact/storage/s3.py]()\n\n### Azure Blob Storage\n\nThe Azure backend integrates with Azure Blob Storage for cloud deployments.\n\n**Configuration Environment Variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `AZURE_STORAGE_CONNECTION_STRING` | Azure storage connection string |\n| `AZURE_STORAGE_CONTAINER_NAME` | Container name for artifacts |\n\n资料来源：[skyvern/forge/sdk/artifact/storage/azure.py]()\n\n## Storage Factory\n\nThe storage factory pattern enables runtime selection of the appropriate storage backend:\n\n```mermaid\ngraph LR\n    A[Configuration] --> B[Storage Factory]\n    B --> C{Backend Type}\n    C -->|local| D[LocalStorage]\n    C -->|s3| E[S3Storage]\n    C -->|azure| F[AzureBlobStorage]\n```\n\n**Backend Selection Logic:**\n\n```python\ndef get_storage_backend() -> BaseStorage:\n    if settings.ARTIFACT_STORAGE_BACKEND == \"s3\":\n        return S3Storage()\n    elif settings.ARTIFACT_STORAGE_BACKEND == \"azure\":\n        return AzureBlobStorage()\n    else:\n        return LocalStorage()\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/factory.py]()\n\n## API Endpoints\n\n### Get Artifact Content\n\nRetrieves raw content of an artifact with support for range requests and HMAC-signed URLs.\n\n**Endpoint**: `GET /api/v1/artifacts/{artifact_id}/content`\n\n**Query Parameters:**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `sig` | string | HMAC signature for URL authentication |\n| `expiry` | string | Expiration timestamp for signed URLs |\n| `kid` | string | Key identifier for signature verification |\n| `artifact_name` | string | Optional filename override |\n| `artifact_type` | string | Expected artifact type |\n| `x-api-key` | string | API key authentication (header) |\n| `authorization` | string | Bearer token authentication (header) |\n\n**Responses:**\n\n| Status | Description |\n|--------|-------------|\n| 200 | Raw artifact content |\n| 206 | Partial content (Range request) |\n| 403 | Invalid or expired artifact URL |\n| 404 | Artifact not found |\n| 416 | Range not satisfiable |\n\n**Content-Disposition Behavior:**\n\n```python\nif artifact.artifact_type == ArtifactType.DOWNLOAD:\n    # Use attachment disposition for downloads\n    return media_type, _build_attachment_disposition(raw_name)\nreturn media_type, \"inline\"  # Inline for all other types\n```\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n### Range Request Support\n\nThe artifact content endpoint supports HTTP range requests for partial content retrieval:\n\n```python\ndef _parse_range_header(range_header: str | None, content_length: int) -> tuple[int, int] | None:\n    \"\"\"Return one satisfiable byte range, _RANGE_UNSATISFIABLE when unsatisfiable, or None when ignored.\"\"\"\n    if not range_header:\n        return None\n    # Parses \"bytes=start-end\" format\n    # Validates ASCII digits, rejects negatives\n```\n\n**Range Header Format:** `bytes=start-end` (RFC 7233 compliant)\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n## HMAC URL Signing\n\nArtifact URLs can be signed using HMAC for time-limited access without requiring API key authentication:\n\n```mermaid\nsequenceDiagram\n    Client->>Server: Request with sig, expiry, kid\n    Server->>Server: Validate HMAC signature\n    Server->>Storage: Fetch artifact\n    Storage-->>Server: Artifact content\n    Server-->>Client: Signed URL response\n```\n\n**Signing Requirements:**\n\n1. HMAC keyring must be configured: `ARTIFACT_CONTENT_HMAC_KEYRING`\n2. URL must include valid `sig`, `expiry`, and `kid` query parameters\n3. Signature is verified before returning artifact content\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n## Configuration Options\n\n### Storage Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `ARTIFACT_STORAGE_BACKEND` | `local` | Storage backend type (local/s3/azure) |\n| `ARTIFACT_STORAGE_PATH` | `/tmp/skyvern/artifacts` | Local storage path |\n| `ARTIFACT_CONTENT_HMAC_KEYRING` | - | HMAC keyring for signed URLs |\n\n### S3 Configuration\n\n| Environment Variable | Description |\n|---------------------|-------------|\n| `AWS_ACCESS_KEY_ID` | AWS credentials |\n| `AWS_SECRET_ACCESS_KEY` | AWS credentials |\n| `AWS_REGION` | Region setting |\n| `S3_BUCKET_NAME` | Target bucket |\n| `ARTIFACT_S3_ENDPOINT_URL` | S3-compatible endpoint |\n\n### Azure Configuration\n\n| Environment Variable | Description |\n|---------------------|-------------|\n| `AZURE_STORAGE_CONNECTION_STRING` | Connection string |\n| `AZURE_STORAGE_CONTAINER_NAME` | Container name |\n\n## File Extension Mapping\n\nThe storage layer maintains a mapping from artifact types to file extensions for consistent naming:\n\n```python\nFILE_EXTENTSION_MAP: dict[ArtifactType, str] = {\n    ArtifactType.SCREENSHOT_LLM: \".png\",\n    ArtifactType.SCREENSHOT_ACTION: \".png\",\n    ArtifactType.HTML_SCRAPE: \".html\",\n    ArtifactType.ELEMENT_TREE: \".json\",\n    ArtifactType.ELEMENT_TREE_VISIBLE: \".json\",\n    ArtifactType.LLM_PROMPT: \".txt\",\n    ArtifactType.LLM_RESPONSE_PARSED: \".json\",\n    ArtifactType.DOWNLOAD: \".bin\",\n    ArtifactType.SKYVERN_LOG: \".log\",\n}\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/base.py]()\n\n## Usage Patterns\n\n### Storing an Artifact\n\n```python\n# Via Artifact Manager\nartifact = await artifact_manager.create_artifact(\n    organization_id=org_id,\n    artifact_type=ArtifactType.SCREENSHOT_LLM,\n    content=image_bytes,\n    task_id=task_id,\n    step_id=step_id,\n)\n```\n\n### Retrieving an Artifact\n\n```python\n# Get artifact metadata\nartifact = await artifact_manager.get_artifact(artifact_id)\n\n# Get presigned or signed URL\nurl = await artifact_manager.get_artifact_url(artifact)\n```\n\n### Range Request for Large Files\n\n```python\nheaders = {\"Range\": \"bytes=0-1023\"}\nresponse = await client.get(f\"/api/v1/artifacts/{id}/content\", headers=headers)\n```\n\n## Security Considerations\n\n1. **Signed URLs**: HMAC-signed URLs provide time-limited access without exposing storage credentials\n2. **Attachment Disposition**: Download artifacts use `Content-Disposition: attachment` to prevent browser rendering of potentially malicious content\n3. **Organization Isolation**: Artifacts are namespaced by organization ID to prevent cross-tenant access\n4. **Content-Type Validation**: Responses set appropriate content-types based on artifact type\n\n## Frontend Integration\n\nThe frontend displays artifacts through dedicated UI components:\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `StepArtifacts.tsx` | `routes/tasks/detail/` | Task artifact viewer with tabbed interface |\n| `Artifact` component | Shared | Renders different artifact types |\n| `ZoomableImage` | Shared | Displays screenshots with zoom capability |\n\nThe artifact viewer supports multiple tabs for different artifact types:\n\n- Info\n- Annotated Screenshots\n- Action Screenshots\n- HTML Element Tree\n- Element Tree\n- Prompt\n- Action List\n- HTML (Raw)\n\n资料来源：[skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx]()\n\n---\n\n<a id='credential-management'></a>\n\n## Credential Management\n\n### 相关页面\n\n相关主题：[Browser Automation Engine](#browser-automation), [Workflow System](#workflow-system)\n\n<details>\n<summary>Related Source Files</summary>\n\nThe following source files were used to generate this documentation page:\n\n- [skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx)\n- [skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx)\n- [skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx)\n- [skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx)\n- [skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx)\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n</details>\n\n# Credential Management\n\n## Overview\n\nCredential Management in Skyvern provides a secure, unified system for storing, retrieving, and managing authentication credentials across tasks and workflows. Skyvern supports multiple credential vault types, enabling integration with external password managers and custom credential services while maintaining a native internal vault.\n\nCredentials in Skyvern can be of three primary types:\n\n| Credential Type | Description |\n|-----------------|-------------|\n| `password` | Username/password credential pairs for basic authentication |\n| `credit_card` | Credit card information for payment forms |\n| `secret` | Generic secret values for API keys, tokens, and other sensitive data |\n\n资料来源：[skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx:1-100]()\n\n## Architecture\n\nSkyvern's credential management system is designed with a multi-vault architecture that allows seamless integration with various credential providers while maintaining a consistent internal API.\n\n```mermaid\ngraph TD\n    subgraph \"Client Layer\"\n        UI[Web UI]\n        API[API Client]\n        MCP[MCP Tools]\n    end\n    \n    subgraph \"Credential Services\"\n        SkyvernVault[Skyvern Internal Vault]\n        Bitwarden[Bitwarden Service]\n        Azure[Azure Key Vault Service]\n        Custom[Custom Credential Service]\n    end\n    \n    subgraph \"Storage Layer\"\n        DB[(Database)]\n    end\n    \n    UI --> API\n    MCP --> API\n    API --> SkyvernVault\n    API --> Bitwarden\n    API --> Azure\n    API --> Custom\n    SkyvernVault --> DB\n```\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:1-50]()\n\n## Credential Vault Types\n\n### Skyvern Internal Vault\n\nThe default vault type stores credentials directly in Skyvern's database. This is the simplest option for getting started and requires no external configuration.\n\n### Bitwarden Integration\n\nSkyvern can integrate with Bitwarden to leverage existing credentials stored in your Bitwarden vault. This integration supports:\n- Reading existing credentials from Bitwarden\n- Writing new credentials back to Bitwarden\n- Automatic 2FA/TOTP handling\n\n资料来源：[skyvern/cli/mcp_tools/README.md:1-50]()\n\n### Azure Key Vault\n\nFor enterprise environments, Skyvern supports Azure Key Vault integration, allowing credentials stored in Azure's secure key management system to be used in tasks and workflows.\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:1-80]()\n\n### Custom Credential Service\n\nOrganizations with proprietary credential management systems can implement a custom credential service. This requires:\n\n1. **API Configuration**: Set up API base URL and authentication token\n2. **Service Implementation**: Implement the credential service interface\n3. **Vault Type Selection**: Configure parameters to use `vault_type=\"custom\"`\n\nThe custom credential service configuration includes:\n- `api_base_url`: The base URL of your credential service API\n- `api_token`: Authentication token for the service\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:60-75]()\n\n## Using Credentials in Workflows\n\n### Credential Parameter Types\n\nCredentials can be referenced as workflow parameters, allowing secure injection of sensitive data into task execution. The system supports the following parameter types:\n\n| Parameter Type | Usage | Example Reference |\n|----------------|-------|-------------------|\n| `credential` | Credential objects from vault | `{{ my_credential.username }}` |\n| `context` | Context parameters from previous steps | `{{ context.source_param }}` |\n| `custom` | Custom credential service credentials | Uses vault_type selection |\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:40-65]()\n\n### Credential Reference Syntax\n\nWithin HTTP Request nodes, credentials are referenced using template syntax:\n\n```\nPassword credential: {{ my_credential.username }} / {{ my_credential.password }}\nSecret credential: {{ my_secret.secret_value }}\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx:1-50]()\n\n### Credential Parameter Validation\n\nWhen running workflows, credential parameters are validated to ensure:\n\n1. **Required Fields**: Boolean and credential parameters must have values\n2. **JSON Validation**: JSON-type credential parameters must parse correctly\n3. **Missing Credential Detection**: The system detects orphaned credential parameters where the referenced credential no longer exists in the vault\n\n```typescript\n// Validation example from workflow execution\nif (parameter.workflow_parameter_type === \"credential\") {\n    if (value === null || value === undefined) {\n        return \"This field is required\";\n    }\n}\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx:1-100]()\n\n### Orphaned Credential Detection\n\nThe system provides warnings when workflow parameters reference credentials that no longer exist in the vault:\n\n```\n⚠️ my_credential (missing credential)\n```\n\nThis warning helps identify workflows that need to be updated after credential deletion or vault changes.\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx:1-50]()\n\n## Two-Factor Authentication (TOTP)\n\nSkyvern supports automated Two-Factor Authentication through TOTP (Time-based One-Time Password) handling. This is critical for automating workflows that require 2FA verification.\n\n### Push TOTP Code Flow\n\n1. **Initiate Push**: When a task encounters a TOTP challenge, Skyvern can push a verification code to the user\n2. **Code Entry**: User receives the verification message (SMS, email, or authenticator app)\n3. **Code Extraction**: Skyvern extracts the code from the verification message\n4. **Attachment**: The code is automatically attached to the relevant workflow run\n\n```typescript\ninterface TOTPConfig {\n    totp_identifier: string;  // Email or phone for receiving codes\n    totp_url?: string;        // Direct verification URL if available\n    totp_type: 'totp' | 'magic_link';\n}\n```\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1-80]()\n\n### TOTP Parameter Filtering\n\nThe credential management interface supports filtering TOTP credentials by:\n- **Identifier**: Filter by email or phone number\n- **OTP Type**: Filter by numeric code or magic link\n\n## MCP Integration\n\nSkyvern's Model Context Protocol (MCP) tools provide programmatic access to credential management:\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.skyvern.com/mcp/\",\n      \"headers\": { \"x-api-key\": \"YOUR_API_KEY\" }\n    }\n  }\n}\n```\n\n### Available MCP Credential Tools\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_credential_list` | List all credentials in the vault |\n| `skyvern_credential_get` | Retrieve a specific credential |\n| `skyvern_credential_delete` | Remove a credential from the vault |\n| `skyvern_login` | Authenticate using stored credentials |\n\nSupported vault integrations: Skyvern vault, Bitwarden, 1Password, and Azure Key Vault with automatic 2FA/TOTP support.\n\n资料来源：[integrations/mcp/README.md:1-80]()\n\n## Security Considerations\n\n### Browser Tunneling Security\n\nWhen exposing Skyvern through browser tunneling, ensure API key authentication is enabled:\n\n> **WARNING**: Always use `--api-key` when exposing your browser via a tunnel. Without it, anyone with the URL has full control of your browser.\n\n资料来源：[README.md:1-100]()\n\n### Credential Masking\n\nSensitive credential data is masked in UI displays:\n- Tokens longer than 8 characters are truncated: `sk_live_xxx...`\n- Full values are never displayed in logs or error messages\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:20-35]()\n\n### External Vault Security\n\nWhen using external credential services:\n1. Store API tokens securely (environment variables preferred)\n2. Use HTTPS for all credential service communications\n3. Implement IP allowlisting where supported\n4. Rotate credentials regularly\n\n## Configuration Reference\n\n### Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `SKYVERN_API_KEY` | API key for Skyvern authentication |\n| `SKYVERN_BASE_URL` | Base URL for self-hosted deployments |\n| `SKYVERN_TELEMETRY` | Set to `false` to opt out of telemetry |\n\n### Credential Service Configuration\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `api_base_url` | Yes (custom) | Base URL of the credential service |\n| `api_token` | Yes (custom) | Authentication token |\n| `token_type` | No | Type of authentication token |\n| `tested_url` | No | URL used to test credential validity |\n\n## Best Practices\n\n1. **Use Type-Specific Credentials**: Store credentials with appropriate types (password, credit_card, secret) for better organization and retrieval\n2. **Implement Custom Services for Enterprise**: For large-scale deployments, implement a custom credential service for centralized management\n3. **Enable TOTP Automation**: Configure TOTP handling for automated 2FA workflows\n4. **Monitor Orphaned Parameters**: Regularly check for and clean up orphaned credential references\n5. **Rotate API Tokens**: Periodically rotate API tokens for custom credential services\n6. **Leverage Bitwarden for Existing Teams**: If your team already uses Bitwarden, integrate it to avoid credential duplication\n\n---\n\n<a id='llm-providers'></a>\n\n## LLM Provider Configuration\n\n### 相关页面\n\n相关主题：[AI-Powered Commands](#ai-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/api/llm/api_handler.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/api_handler.py)\n- [skyvern/forge/sdk/api/llm/models.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/models.py)\n- [skyvern/forge/sdk/api/llm/litellm_transport.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/litellm_transport.py)\n- [skyvern/forge/prompts.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/prompts.py)\n- [skyvern/config.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/config.py)\n</details>\n\n# LLM Provider Configuration\n\nSkyvern leverages Large Language Models (LLMs) as the core intelligence engine for AI-powered browser automation. The LLM Provider Configuration system provides a flexible abstraction layer that enables Skyvern to connect with multiple LLM providers including OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, and Google Gemini. This architecture decouples the automation logic from specific LLM implementations, allowing users to select their preferred provider without modifying core application code.\n\n## Supported LLM Providers\n\nSkyvern supports a comprehensive range of LLM providers to accommodate diverse enterprise requirements and budget considerations. The framework utilizes litellm as a unified transport layer, which normalizes API interactions across different providers through a consistent interface.\n\n| Provider | Supported Models |\n|----------|-----------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |\n| Azure OpenAI | Any GPT models deployed to your Azure subscription |\n| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |\n| Google Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md:1-20]()\n\n### Provider Selection Criteria\n\nWhen selecting an LLM provider for Skyvern deployments, consider the following factors. OpenAI models offer strong general-purpose performance with the broadest model availability. Anthropic's Claude series excels in instruction following and extended reasoning tasks, making it particularly suitable for complex multi-step browser automation workflows. Azure OpenAI provides enterprise-grade security and compliance features with the ability to use custom model deployments. AWS Bedrock offers seamless integration with other AWS services and HIPAA-compliant deployments. Google Gemini provides competitive pricing with strong multimodal capabilities.\n\n## Configuration Architecture\n\nThe LLM Provider Configuration system follows a layered architecture that separates provider selection, credential management, and runtime dispatch. This design enables runtime provider switching and supports fallback mechanisms for production deployments.\n\n```mermaid\ngraph TD\n    A[Task Request] --> B[LLM API Handler]\n    B --> C{LLM Provider Selection}\n    C -->|OpenAI| D[OpenAI Transport]\n    C -->|Anthropic| E[Anthropic Transport]\n    C -->|Azure| F[Azure OpenAI Transport]\n    C -->|AWS| G[Bedrock Transport]\n    C -->|Gemini| H[Gemini Transport]\n    D --> I[litellm Unified Interface]\n    E --> I\n    F --> I\n    G --> I\n    H --> I\n    I --> J[Provider API Endpoint]\n```\n\n### Core Configuration Components\n\nThe configuration system comprises several interconnected components that manage provider selection, authentication, and request handling. The API handler serves as the primary entry point for LLM interactions, coordinating between the task execution engine and the underlying transport layer. Models define the data structures for requests, responses, and provider-specific configurations. The litellm transport provides the unified interface that normalizes differences between provider APIs.\n\n## Environment Configuration\n\n### Basic Setup\n\nLLM provider credentials are configured through environment variables in the `.env` file. After running `skyvern quickstart` or `skyvern init`, the setup wizard will guide you through provider selection and credential configuration.\n\n```bash\n# Required for OpenAI\nOPENAI_API_KEY=sk-...\n\n# Required for Anthropic\nANTHROPIC_API_KEY=sk-ant-...\n\n# Required for Azure OpenAI\nAZURE_OPENAI_API_KEY=your-azure-key\nAZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com\n\n# Required for AWS Bedrock\nAWS_ACCESS_KEY_ID=your-access-key\nAWS_SECRET_ACCESS_KEY=your-secret-key\nAWS_REGION=us-east-1\n\n# Required for Gemini\nGOOGLE_GENERATIVE_AI_API_KEY=your-gemini-key\n```\n\n资料来源：[README.md:1-50]()\n\n### Provider-Specific Configuration\n\n#### OpenAI Configuration\n\nFor OpenAI providers, Skyvern supports both standard OpenAI endpoints and custom base URLs for proxy or gateway scenarios. Model selection can be specified at the task level or configured as the default in the environment.\n\n#### Anthropic Configuration\n\nAnthropic Claude models require the `ANTHROPIC_API_KEY` environment variable. The setup wizard can automatically configure this during initialization. Claude models are particularly well-suited for Skyvern's browser automation tasks due to their strong instruction-following capabilities.\n\n#### Azure OpenAI Configuration\n\nAzure OpenAI deployments require additional configuration for deployment-specific endpoints. The `AZURE_OPENAI_BASE_URL` should point to your Azure OpenAI resource endpoint, and the system supports any GPT models deployed to your Azure subscription.\n\n#### AWS Bedrock Configuration\n\nAWS Bedrock integration uses standard AWS credential chain resolution, including environment variables, IAM roles, and AWS profile configurations. The `AWS_REGION` variable determines which AWS region your Bedrock endpoints are hosted in.\n\n#### Google Gemini Configuration\n\nGemini models are configured using the `GOOGLE_GENERATIVE_AI_API_KEY`. The framework supports both Gemini 3.1 Pro for complex reasoning tasks and Gemini 3 Flash for faster, cost-effective operations.\n\n## Provider Selection in Code\n\nWhen using Skyvern programmatically through the SDK, you can specify the LLM provider at task creation time. The framework will use the configured credentials for the selected provider.\n\n```python\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your-api-key\")\ntask = await skyvern.run_task(\n    prompt=\"Find the top post on hackernews today\",\n)\n```\n\n资料来源：[README.md:50-80]()\n\n### Cloud vs Local Configuration\n\nSkyvern supports two operational modes for LLM configuration. In Skyvern Cloud mode, the platform manages provider configuration and billing. In local mode, you configure your own LLM provider credentials, and Skyvern routes requests through your specified provider.\n\nFor local deployments, the setup wizard configures credentials automatically during initialization. For custom configurations, you can manually edit the `.env` file with your provider-specific credentials.\n\n## Advanced Configuration Options\n\n### Custom Endpoint Configuration\n\nFor enterprise deployments requiring proxy servers or custom API gateways, Skyvern supports base URL customization through provider-specific environment variables. This enables integration with internal LLM deployments, specialized inference endpoints, or regional API endpoints.\n\n### Multi-Provider Fallback\n\nProduction deployments can implement multi-provider fallback strategies by configuring multiple provider credentials. When the primary provider is unavailable, Skyvern can automatically route requests to backup providers based on priority configuration.\n\n### Model Selection Per Task\n\nIndividual tasks can specify model preferences that override the default configuration. This enables cost optimization by using lighter models for simple tasks while reserving more capable models for complex automation sequences.\n\n## Credential Security\n\nCredential management follows security best practices by storing sensitive information exclusively in environment variables. The `.env` file should never be committed to version control. Skyvern's initialization process creates the `.env` file from `.env.example` if it does not exist, ensuring template credentials are never exposed.\n\n资料来源：[README.md:1-30]()\n\n## Troubleshooting\n\nCommon LLM provider configuration issues include incorrect API keys, network connectivity problems, and quota exhaustion. The setup wizard validates credentials during configuration to catch most issues early. For runtime errors, Skyvern provides detailed error messages that identify the specific provider and error type.\n\nIf you encounter authentication errors, verify that your API keys are correctly set in the `.env` file and that the corresponding provider account has sufficient credits or quota available.\n\n---\n\n<a id='mcp-integration'></a>\n\n## Model Context Protocol (MCP) Integration\n\n### 相关页面\n\n相关主题：[LLM Provider Configuration](#llm-providers)\n\n<details>\n<summary>Relevant Source Files</summary>\n\n以下源码文件用于生成本页说明：\n\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/mcpb/claude_desktop/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcpb/claude_desktop/README.md)\n</details>\n\n# Model Context Protocol (MCP) Integration\n\n## Overview\n\nSkyvern's Model Context Protocol (MCP) integration enables AI applications to connect to Skyvern's browser automation capabilities. This integration allows AI-powered applications to perform browser-based tasks such as filling out forms, downloading files, researching information on the web, and executing complex web automation workflows through natural language commands.\n\nThe MCP server implementation serves as a bridge between AI applications and Skyvern's browser engine, providing a standardized interface for browser automation tasks.\n\n资料来源：[integrations/mcp/README.md]()\n\n## Architecture\n\nThe MCP integration supports multiple deployment models and connection methods:\n\n### Connection Modes\n\n| Mode | Description | Use Case |\n|------|-------------|----------|\n| **Skyvern Cloud** | Connect to managed cloud service | Production without self-hosting |\n| **Local Skyvern Server** | Self-hosted deployment | Development, privacy, custom infrastructure |\n\n### MCP Client Configuration\n\n#### Cloud Configuration (streamable-http)\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.skyvern.com/mcp/\",\n      \"headers\": { \"x-api-key\": \"YOUR_API_KEY\" }\n    }\n  }\n}\n```\n\n#### Local Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"command\": \"python3\",\n      \"args\": [\"-m\", \"skyvern\", \"run\", \"mcp\"],\n      \"env\": {\n        \"SKYVERN_BASE_URL\": \"http://localhost:8000\",\n        \"SKYVERN_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Available MCP Tools\n\n### Browser Session Management\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_browser_session_create` | Create a new browser session |\n| `skyvern_browser_session_close` | Close an existing browser session |\n| `skyvern_browser_session_list` | List all active browser sessions |\n| `skyvern_browser_session_get` | Get details of a specific session |\n| `skyvern_browser_session_connect` | Connect to an existing session |\n\n### Browser Actions\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_act` | Execute natural language actions |\n| `skyvern_navigate` | Navigate to a URL |\n| `skyvern_click` | Click on an element |\n| `skyvern_type` | Type text into a field |\n| `skyvern_hover` | Hover over an element |\n| `skyvern_scroll` | Scroll the page |\n| `skyvern_select_option` | Select an option from dropdown |\n| `skyvern_press_key` | Press a keyboard key |\n| `skyvern_drag` | Drag an element |\n| `skyvern_file_upload` | Upload a file |\n| `skyvern_wait` | Wait for page to load |\n\n### Data Extraction & Validation\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_extract` | Extract structured JSON data from page |\n| `skyvern_screenshot` | Take a screenshot |\n| `skyvern_find` | Find elements on the page |\n| `skyvern_validate` | Validate page content |\n| `skyvern_evaluate` | Run JavaScript code |\n| `skyvern_get_html` | Get page HTML |\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Quick Start Guide\n\n### Prerequisites\n\n> **REQUIREMENT**: Skyvern only runs in Python 3.11 environment today\n\n### Installation Steps\n\n1. **Install Skyvern**\n   ```bash\n   pip install skyvern\n   ```\n\n2. **Configure Skyvern**\n   Run the setup wizard which will guide you through the configuration process:\n   ```bash\n   skyvern init\n   ```\n   You can connect to either Skyvern Cloud or a local version of Skyvern.\n\n3. **Launch Local Server (Optional)**\n   Only required in local mode:\n   ```bash\n   skyvern run server\n   ```\n\n资料来源：[integrations/mcp/README.md]()\n\n## Claude Desktop Integration\n\nSkyvern provides a downloadable `.mcpb` bundle that installs Skyvern Cloud into Claude Desktop without requiring the user to install Node.js.\n\n### Building the MCP Bundle\n\n```bash\n./scripts/package-mcpb.sh 1.0.23\n```\n\n### Publishing to Releases\n\n```bash\n./scripts/package-mcpb.sh 1.0.23 skyvern-claude-desktop.mcpb \\\n  skyvern/cli/mcpb/releases/skyvern-claude-desktop.mcpb\n```\n\n资料来源：[skyvern/cli/mcpb/claude_desktop/README.md]()\n\n## Usage Patterns\n\n### Natural Language Actions\n\nThe `skyvern_act` tool allows you to describe actions in natural language, which Skyvern's AI interprets and executes:\n\n```\n\"Click the login button\"\n\"Fill in the email field with user@example.com\"\n\"Select 'Premium' from the subscription dropdown\"\n```\n\n### Data Extraction\n\nUse `skyvern_extract` to extract structured JSON data from web pages by describing the data you need:\n\n```\n\"Extract all product names, prices, and ratings\"\n```\n\n### Screenshot and Validation Loops\n\nFor debugging and verification, use screenshot + validate loops:\n\n```python\n# Take screenshot\nscreenshot = skyvern_screenshot()\n\n# Validate content\nvalidation = skyvern_validate(\"The login form is visible\")\n\n# If validation fails, take another screenshot for debugging\nif not validation.success:\n    screenshot = skyvern_screenshot()\n```\n\n## Integration with AI Applications\n\nThe MCP integration enables AI applications to:\n\n- **Automate form filling**: Submit complex forms with AI-guided input\n- **Research web content**: Extract structured data from multiple sources\n- **Download files**: Navigate to and download files from websites\n- **Execute workflows**: Run browser automation workflows\n- **Handle 2FA flows**: Manage TOTP (Time-based One-Time Password) authentication\n\n## Credential Management\n\nSkyvern's MCP tools support secure credential management for login flows:\n\n| Credential Type | Usage Pattern |\n|-----------------|---------------|\n| **Password** | `{{ my_credential.username }}` / `{{ my_credential.password }}` |\n| **Secret** | `{{ my_secret.secret_value }}` |\n| **Custom Service** | Configure via CustomCredentialServiceConfigForm |\n\n## API Reference\n\n### HTTP Request Block Tips\n\nWhen using HTTP request blocks with MCP tools:\n\n- Use \"Import cURL\" to quickly convert API documentation examples\n- Use \"Quick Headers\" to add common authentication and content headers\n- The request will return response data including status, headers, and body\n- Reference response data in later blocks with parameters\n\n### Response Data\n\nAll MCP tool responses include:\n\n| Field | Description |\n|-------|-------------|\n| `status` | HTTP status code |\n| `headers` | Response headers |\n| `body` | Response body content |\n\n## Workflow Integration\n\nMCP tools can be integrated into Skyvern workflows for:\n\n- **Browser automation blocks**: Execute MCP actions as part of workflow steps\n- **Conditional logic**: Use validation results to control workflow branching\n- **Data extraction**: Feed extracted data into subsequent workflow blocks\n- **Scheduled execution**: Run MCP-powered workflows on cron schedules\n\n## Best Practices\n\n1. **Session Management**: Always close browser sessions when done to free resources\n2. **Error Handling**: Use validation tools to check page state before proceeding\n3. **Screenshot Debugging**: Take screenshots at key points for debugging failed automations\n4. **Credential Security**: Use environment variables and secure credential storage\n5. **Rate Limiting**: Be mindful of API rate limits when making frequent requests\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：Skyvern-AI/skyvern\n\n摘要：发现 23 个潜在踩坑项，其中 1 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：what ensures it’s the correct one in that context?。\n\n## 1. 安全/权限坑 · 来源证据：what ensures it’s the correct one in that context?\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：what ensures it’s the correct one in that context?\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 2. 安装坑 · 来源证据：Release v1.0.29\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Release v1.0.29\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 3. 安装坑 · 来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Task Execution Performance: Seeking guidance on optimizing execution speed\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 4. 安装坑 · 来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 5. 配置坑 · 来源证据：Performance bottleneck: High latency for simple form-filling workflows\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Performance bottleneck: High latency for simple form-filling workflows\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 来源证据：Release v1.0.34\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.34\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 8. 维护坑 · 来源证据：Release v1.0.35\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.35\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 9. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing\n\n## 10. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：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.\n\n## 12. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 13. 安全/权限坑 · 来源证据：Clarification on the Custom credential documentation on the Delete API with empty body\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Clarification on the Custom credential documentation on the Delete API with empty body\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a5164e5767dc4b618ce1c862ed440eaa | https://github.com/Skyvern-AI/skyvern/issues/4256 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 14. 安全/权限坑 · 来源证据：GROQ error\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：GROQ error\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_fb8dab5ab6224386a6b341234a8e90be | https://github.com/Skyvern-AI/skyvern/issues/4366 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：Release v1.0.27\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.27\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_23488c9e7f354979bdbf8e9554b4b647 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.27 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：Release v1.0.30\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.30\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6929e0e36e1549e9bd95f29d1d4cfbdf | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.30 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 17. 安全/权限坑 · 来源证据：Release v1.0.31\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.31\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_40ca78dbdbe141f383c8d202f08db28b | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.31 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 18. 安全/权限坑 · 来源证据：Release v1.0.32\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.32\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4eaa09d9a74f49efb0fb81c9bdebe6a3 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：Release v1.0.33\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.33\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ba7d530f080e4c88ad47ac26ba2781a7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 20. 安全/权限坑 · 来源证据：Release v1.0.36\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.36\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_236e050a3837462692b739322738a7a2 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 21. 安全/权限坑 · 来源证据：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b56e85161a3b4b7682c8ab13127be8d0 | https://github.com/Skyvern-AI/skyvern/issues/4390 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 22. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | issue_or_pr_quality=unknown\n\n## 23. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | release_recency=unknown\n\n<!-- canonical_name: Skyvern-AI/skyvern; human_manual_source: deepwiki_human_wiki -->\n",
      "markdown_key": "skyvern",
      "pages": "draft",
      "source_refs": [
        {
          "evidence_id": "art_9274907e6629499384a5a574e4caa877",
          "kind": "docs",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/Skyvern-AI/skyvern#readme"
        }
      ],
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "skyvern 说明书",
      "toc": [
        "https://github.com/Skyvern-AI/skyvern 项目说明书",
        "目录",
        "Introduction to Skyvern",
        "Overview",
        "Key Features",
        "Architecture Overview",
        "Getting Started",
        "Install Skyvern",
        "Doramagic 踩坑日志"
      ]
    }
  },
  "quality_gate": {
    "blocking_gaps": [],
    "category_confidence": "medium",
    "compile_status": "ready_for_review",
    "five_assets_present": true,
    "install_sandbox_verified": true,
    "missing_evidence": [],
    "next_action": "publish to Doramagic.ai project surfaces",
    "prompt_preview_boundary_ok": true,
    "publish_status": "publishable",
    "quick_start_verified": true,
    "repo_clone_verified": true,
    "repo_commit": "737e3c238be83982e04d4914a6712db910535b22",
    "repo_inspection_error": null,
    "repo_inspection_files": [
      "pyproject.toml",
      "Dockerfile",
      "README.md",
      "docker-compose.yml",
      "uv.lock",
      "docs/index.mdx",
      "docs/skill.md",
      "docs/docs.json",
      "docs/changelog.mdx",
      "docs/api-reference/openapi.json",
      "docs/sdk-reference/error-handling.mdx",
      "docs/sdk-reference/complete-reference.mdx",
      "docs/sdk-reference/overview.mdx",
      "docs/snippets/ai-agents-quickstart-content.mdx",
      "docs/snippets/mcp-content.mdx",
      "docs/snippets/core-concepts-content.mdx",
      "docs/snippets/introduction-content.mdx",
      "docs/snippets/schema-builder.mdx",
      "docs/cookbooks/bulk-invoice-downloader.mdx",
      "docs/cookbooks/job-application-filler.mdx",
      "docs/cookbooks/healthcare-portal-data.mdx",
      "docs/cookbooks/overview.mdx",
      "docs/integrations/cli.mdx",
      "docs/integrations/make.mdx",
      "docs/integrations/zapier.mdx",
      "docs/integrations/local-llms.mdx",
      "docs/integrations/workato.mdx",
      "docs/integrations/n8n.mdx",
      "docs/nav/cookbooks.mdx",
      "docs/nav/getting-started.mdx",
      "docs/nav/api-reference.mdx",
      "docs/nav/sdk-reference.mdx",
      "docs/nav/changelog.mdx",
      "docs/nav/developers.mdx",
      "docs/nav/cloud-ui.mdx",
      "docs/sdk-reference/browser-sessions/create-browser-session.mdx",
      "docs/sdk-reference/browser-sessions/get-browser-session.mdx",
      "docs/sdk-reference/browser-sessions/close-browser-session.mdx",
      "docs/sdk-reference/browser-sessions/get-browser-sessions.mdx",
      "docs/sdk-reference/credentials/update-credential.mdx"
    ],
    "repo_inspection_verified": true,
    "review_reasons": [],
    "tag_count_ok": true,
    "unsupported_claims": []
  },
  "schema_version": "0.1",
  "user_assets": {
    "ai_context_pack": {
      "asset_id": "ai_context_pack",
      "filename": "AI_CONTEXT_PACK.md",
      "markdown": "# skyvern-claude-desktop-mcpb - Doramagic AI Context Pack\n\n> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。\n\n## 充分原则\n\n- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。\n- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。\n\n## 给宿主 AI 的使用方式\n\n你正在读取 Doramagic 为 skyvern-claude-desktop-mcpb 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。\n\n## Claim 消费规则\n\n- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。\n- **事实最低状态**：`supported`\n- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。\n- `weak`：只能作为低置信度线索，必须要求用户继续核实。\n- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。\n- `unverified`：不得作为事实使用，应明确说证据不足。\n- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。\n\n## 它最适合谁\n\n- **正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**：README 或插件配置提到多个宿主 AI。 证据：`README.md` Claim：`clm_0003` supported 0.86\n- **希望把专业流程带进宿主 AI 的用户**：仓库包含 Skill 文档。 证据：`.claude/skills/bump-version/SKILL.md`, `skyvern/cli/skills/qa/SKILL.md`, `skyvern/cli/skills/skyvern/SKILL.md`, `skyvern/cli/skills/smoke-test/SKILL.md` 等 Claim：`clm_0004` supported 0.86\n\n## 它能做什么\n\n- **AI Skill / Agent 指令资产库**（可做安装前预览）：项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 证据：`.claude/skills/bump-version/SKILL.md`, `docs/skill.md`, `skyvern/cli/skills/qa/SKILL.md`, `skyvern/cli/skills/skyvern/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`README.md` Claim：`clm_0002` supported 0.86\n\n## 怎么开始\n\n- `pip install skyvern` 证据：`README.md` Claim：`clm_0005` supported 0.86\n- `git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern` 证据：`README.md` Claim：`clm_0006` supported 0.86\n- `pip install --upgrade skyvern   # 1.0.32+ contains the fix` 证据：`README.md` Claim：`clm_0007` supported 0.86\n\n## 继续前判断卡\n\n- **当前建议**：先做权限沙盒试用\n- **为什么**：项目存在安装命令、宿主配置或本地写入线索，不建议直接进入主力环境，应先在隔离环境试装。\n\n### 30 秒判断\n\n- **现在怎么做**：先做权限沙盒试用\n- **最小安全下一步**：先跑 Prompt Preview；若仍要安装，只在隔离环境试装\n- **先别相信**：工具权限边界不能在安装前相信。\n- **继续会触碰**：命令执行、宿主 AI 配置、本地环境或项目文件\n\n### 现在可以相信\n\n- **适合人群线索：正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`README.md` Claim：`clm_0003` supported 0.86\n- **适合人群线索：希望把专业流程带进宿主 AI 的用户**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`.claude/skills/bump-version/SKILL.md`, `skyvern/cli/skills/qa/SKILL.md`, `skyvern/cli/skills/skyvern/SKILL.md`, `skyvern/cli/skills/smoke-test/SKILL.md` 等 Claim：`clm_0004` supported 0.86\n- **能力存在：AI Skill / Agent 指令资产库**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`.claude/skills/bump-version/SKILL.md`, `docs/skill.md`, `skyvern/cli/skills/qa/SKILL.md`, `skyvern/cli/skills/skyvern/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`README.md` Claim：`clm_0002` supported 0.86\n- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`README.md` Claim：`clm_0005` supported 0.86\n\n### 现在还不能相信\n\n- **工具权限边界不能在安装前相信。**（unverified）：MCP/tool 类项目通常会触碰文件、网络、浏览器或外部 API，必须真实检查权限和日志。\n- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。\n- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。\n- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。 证据：`.claude/skills/bump-version/SKILL.md`, `AGENTS.md`, `CLAUDE.md`, `docs/skill.md` 等\n- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。\n- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。\n- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。\n- **安装命令是否需要网络、权限或全局写入？**（unverified）：这影响企业环境和个人环境的安装风险。 证据：`README.md`\n\n### 继续会触碰什么\n\n- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`README.md`\n- **宿主 AI 配置**：Claude/Codex/Cursor/Gemini/OpenCode 等宿主的 plugin、Skill 或规则加载配置。 原因：宿主配置会改变 AI 后续工作方式，可能和用户已有规则冲突。 证据：`.claude/skills/bump-version/SKILL.md`, `AGENTS.md`, `CLAUDE.md`, `docs/skill.md` 等\n- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`README.md`\n- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。\n\n### 最小安全下一步\n\n- **先跑 Prompt Preview**：用安装前交互式试用判断工作方式是否匹配，不需要授权或改环境。（适用：任何项目都适用，尤其是输出质量未知时。）\n- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）\n- **先备份宿主 AI 配置**：Skill、plugin、规则文件可能改变 Claude/Cursor/Codex 的默认行为。（适用：存在插件 manifest、Skill 或宿主规则入口时。）\n- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）\n\n### 退出方式\n\n- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。\n- **准备移除宿主 plugin / Skill / 规则入口**：如果试装后行为异常，可以把宿主 AI 恢复到试装前状态。\n- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。\n- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。\n\n## 哪些只能预览\n\n- 解释项目适合谁和能做什么\n- 基于项目文档演示典型对话流程\n- 帮助用户判断是否值得安装或继续研究\n\n## 哪些必须安装后验证\n\n- 真实安装 Skill、插件或 CLI\n- 执行脚本、修改本地文件或访问外部服务\n- 验证真实输出质量、性能和兼容性\n\n## 边界与风险判断卡\n\n- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0008` inferred 0.45\n- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`README.md` Claim：`clm_0009` supported 0.86\n- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。\n- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。\n- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。\n\n## 开工前工作上下文\n\n### 加载顺序\n\n- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。\n- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。\n- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。\n- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。\n- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。\n\n### 任务路由\n\n- **AI Skill / Agent 指令资产库**：先基于 role_skill_index / evidence_index 帮用户挑选可用角色、Skill 或工作流。 边界：可做安装前 Prompt 体验。 证据：`.claude/skills/bump-version/SKILL.md`, `docs/skill.md`, `skyvern/cli/skills/qa/SKILL.md`, `skyvern/cli/skills/skyvern/SKILL.md` 等 Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`README.md` Claim：`clm_0002` supported 0.86\n\n### 上下文规模\n\n- 文件总数：2895\n- 重要文件覆盖：40/2895\n- 证据索引条目：80\n- 角色 / Skill 条目：6\n\n### 证据不足时的处理\n\n- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。\n- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。\n- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。\n- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。\n\n## Prompt Recipes\n\n### 适配判断\n\n- 目标：判断这个项目是否适合用户当前任务。\n- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。\n\n```text\n请基于 skyvern-claude-desktop-mcpb 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。\n```\n\n### 安装前体验\n\n- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。\n- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。\n\n```text\n请把 skyvern-claude-desktop-mcpb 当作安装前体验资产，而不是已安装工具或真实运行环境。\n\n请严格输出四段：\n1. 先问我 3 个必要问题。\n2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。\n3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。\n4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。\n\n硬性边界：\n- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。\n- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。\n- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。\n- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。\n- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。\n- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。\n\n```\n\n### 角色 / Skill 选择\n\n- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。\n- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。\n\n```text\n请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。\n```\n\n### 风险预检\n\n- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。\n- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。\n\n```text\n请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。\n```\n\n### 宿主 AI 开工指令\n\n- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。\n- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。\n\n```text\n请基于 skyvern-claude-desktop-mcpb 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。\n```\n\n\n## 角色 / Skill 索引\n\n- 共索引 6 个角色 / Skill / 项目文档条目。\n\n- **bump-version**（skill）：Bump Skyvern OSS version, build Python and TypeScript SDKs with Fern, and create release PR. Use when releasing a new version or when the user asks to bump version. 激活提示：当用户任务与“bump-version”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`.claude/skills/bump-version/SKILL.md`\n- **skyvern**（skill）：Automate any website with AI-powered browser automation. Use when the user needs to interact with a website like filling forms, extracting data, downloading files, logging in, or running multi-step workflows. Skyvern navigates sites it has never seen before using LLMs and computer vision. Integrates via Python SDK, TypeScript SDK, REST API, MCP server, or CLI. 激活提示：当用户任务与“skyvern”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`docs/skill.md`\n- **qa**（skill）：QA test your code changes by reading your git diff, choosing the right validation path for frontend/browser and backend changes, and reporting pass/fail with evidence. 激活提示：当用户任务与“qa”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`skyvern/cli/skills/qa/SKILL.md`\n- **skyvern**（skill）：PREFER Skyvern CLI over WebFetch for ANY task involving real websites — scraping dynamic pages, filling forms, extracting data, logging in, taking screenshots, or automating browser workflows. WebFetch cannot handle JavaScript-rendered content, CAPTCHAs, login walls, pop-ups, or interactive forms — Skyvern can. Run skyvern browser commands via Bash. Triggers: 'scrape this site', 'extract data from page', 'fill out f… 激活提示：当用户任务与“skyvern”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`skyvern/cli/skills/skyvern/SKILL.md`\n- **smoke-test**（skill）：Run smoke tests against a deployed or local app based on your git diff. Each test uses Skyvern browser tools navigate, act, validate, screenshot and reports a pass/fail table as a PR comment. 激活提示：当用户任务与“smoke-test”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`skyvern/cli/skills/smoke-test/SKILL.md`\n- **testing**（skill）：Verify a Skyvern deployment is working correctly by smoke-testing the backend API, frontend rendering, browser session provisioning, and workflow execution. Use when the user says 'is Skyvern working', 'test my deployment', 'verify the installation', 'smoke test', or needs to check that a self-hosted or local Skyvern instance is healthy. 激活提示：当用户任务与“testing”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`skyvern/cli/skills/testing/SKILL.md`\n\n## 证据索引\n\n- 共索引 80 条证据。\n\n- **Skyvern: AI Browser Automation**（skill_instruction）：Skyvern automates browser-based workflows using LLMs and computer vision. It navigates websites it has never seen before, filling forms, extracting data, and completing multi-step tasks via a simple API. 证据：`docs/skill.md`\n- **Skyvern Agent Guide**（documentation）：Skyvern Agent Guide This AGENTS.md file provides comprehensive guidance for AI agents working with the Skyvern codebase. Follow these guidelines to ensure consistency and quality in all contributions. 证据：`AGENTS.md`\n- **CLAUDE.md**（documentation）：This file provides guidance to Claude Code claude.ai/code when working with code in this repository. 证据：`CLAUDE.md`\n- **How it works**（documentation）：🐉 Automate Browser-based workflows using LLMs and Computer Vision 🐉 -- 证据：`README.md`\n- **Creating a new revision**（documentation）：- Creating a new revision creating-a-new-revision - Running migrations running-migrations - Downgrading migrations downgrading-migrations - Check your current alembic setup check-your-current-alembic-setup 证据：`alembic/README.md`\n- **Bitwarden CLI Server for Skyvern**（documentation）：This Docker setup provides a Bitwarden CLI server with bw serve functionality that enables Skyvern to work with vaultwarden or official Bitwarden instances. 证据：`bitwarden-cli-server/README.md`\n- **Skyvern Kubernetes Deployment**（documentation）：REMINDER: It is not recommended to deploy Skyvern on the Internet without using some form of authentication! It is recommended to use this deployment for network without exposure to the Internet. 证据：`kubernetes-deployment/README.md`\n- **Skyvern Frontend**（documentation）：- Skyvern Frontend skyvern-frontend - Quickstart quickstart - Populate env file populate-env-file - Development development - Build for production build-for-production - Preview the production build locally preview-the-production-build-locally 证据：`skyvern-frontend/README.md`\n- **Skyvern Langchain**（documentation）：- Skyvern Langchain skyvern-langchain - Installation installation - Basic Usage basic-usage - Run a task sync locally in your local environment run-a-tasksync-locally-in-your-local-environment - Run a task async locally in your local environment run-a-taskasync-locally-in-your-local-environment - Get a task locally in your local environment get-a-task-locally-in-your-local-environment - Run a task sync by calling skyvern APIs run-a-tasksync-by-calling-skyvern-apis - Run a task async by calling skyvern APIs run-a-taskasync-by-calling-skyvern-apis - Get a task by calling skyvern APIs get-a-task-by-calling-skyvern-apis - Agent Usage agent-usage - Run a task async locally in your local environm… 证据：`integrations/langchain/README.md`\n- **Skyvern LlamaIndex**（documentation）：- Skyvern LlamaIndex skyvern-llamaindex - Installation installation - Basic Usage basic-usage - Run a task sync locally in your local environment run-a-tasksync-locally-in-your-local-environment - Run a task async locally in your local environment run-a-taskasync-locally-in-your-local-environment - Get a task locally in your local environment get-a-task-locally-in-your-local-environment - Run a task sync by calling skyvern APIs run-a-tasksync-by-calling-skyvern-apis - Run a task async by calling skyvern APIs run-a-taskasync-by-calling-skyvern-apis - Get a task by calling skyvern APIs get-a-task-by-calling-skyvern-apis - Advanced Usage advanced-usage - Dispatch a task async locally in your l… 证据：`integrations/llama_index/README.md`\n- **Model Context Protocol MCP**（documentation）：Skyvern's MCP server implementation helps connect your AI Applications to the browser. This allows your AI applications to do things like: Fill out forms, download files, research information on the web, and more. 证据：`integrations/mcp/README.md`\n- **Skyvern TypeScript Library**（documentation）：! npm shield https://img.shields.io/npm/v/@skyvern/client https://www.npmjs.com/package/@skyvern/client 证据：`skyvern-ts/client/README.md`\n- **Skyvern MCP Server**（documentation）：The Skyvern MCP server gives AI assistants Claude, Cursor, Windsurf, Codex full browser control -- clicking, filling forms, extracting data, navigating pages, uploading files, managing workflows, and more. 75+ tools, one server. 证据：`skyvern/cli/mcp_tools/README.md`\n- **Skyvern Claude Desktop MCP Bundle**（documentation）：Source files for the downloadable .mcpb bundle that installs Skyvern Cloud into Claude Desktop without requiring the user to install Node.js. 证据：`skyvern/cli/mcpb/claude_desktop/README.md`\n- **Public Claude Desktop Bundle**（documentation）：This directory holds the committed skyvern-claude-desktop.mcpb artifact that syncs to the public Skyvern-AI/skyvern repository. 证据：`skyvern/cli/mcpb/releases/README.md`\n- **Skyvern Skills Package**（documentation）：AI-powered browser automation skills for coding agents. Bundled with pip install skyvern . 证据：`skyvern/cli/skills/README.md`\n- **Script Generation & Caching**（documentation）：Script generation converts workflow runs into executable Python code that can be cached and reused. This enables \"run with code\" mode where workflows execute via cached scripts instead of the AI agent. 证据：`skyvern/core/script_generations/CLAUDE.md`\n- **Prompt Templates**（documentation）：Action extraction templates are split for caching optimization: 证据：`skyvern/forge/prompts/skyvern/CLAUDE.md`\n- **Database Layer**（documentation）：get tasks actions — Sort Order is DESC Intentional 证据：`skyvern/forge/sdk/db/CLAUDE.md`\n- **Channels**（documentation）：A \"channel\", as used within the streaming mechanism of our remote browsers, is a WebSocket fit to some particular purpose. 证据：`skyvern/forge/sdk/routes/streaming/channels/README.md`\n- **WebHuman Automation Tool**（documentation）：- WebHuman Automation Tool webhuman-automation-tool - Getting Started getting-started - Prerequisites prerequisites - Installation installation 证据：`skyvern/webeye/README.md`\n- **Skyvern SDK Tests**（documentation）：Test suite for Skyvern Python and TypeScript SDKs with shared HTML fixtures in web/ . 证据：`tests/sdk/README.md`\n- **Package**（package_manifest）：{ \"name\": \"skyvern-frontend\", \"private\": true, \"version\": \"0.0.0\", \"type\": \"module\", \"scripts\": { \"dev\": \"vite\", \"build\": \"tsc --noEmit && vite build\", \"lint\": \"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0\", \"format\": \"prettier --write .\", \"preview\": \"vite preview\", \"prepare\": \"cd .. && command -v pre-commit /dev/null 2 &1 && pre-commit install echo 'pre-commit not installed, skipping hook setup'\", \"precommit\": \"lint-staged\", \"artifact-server\": \"node artifactServer.js\", \"run-artifact-server\": \"node artifactServer.js\", \"start-local\": \"npm run dev & npm run artifact-server\", \"serve\": \"npm run build && node localServer.js\", \"test\": \"vitest run\", \"start\": \"npm run s… 证据：`skyvern-frontend/package.json`\n- **Contributing to Skyvern**（documentation）：- Contributing to Skyvern contributing-to-skyvern - Table of Contents table-of-contents - Code of Conduct code-of-conduct - I Have a Question i-have-a-question - I Want To Contribute i-want-to-contribute - Reporting Bugs reporting-bugs - Before Submitting a Bug Report before-submitting-a-bug-report - How Do I Submit a Good Bug Report? how-do-i-submit-a-good-bug-report - Suggesting Enhancements suggesting-enhancements - Before Submitting an Enhancement before-submitting-an-enhancement - How Do I Submit a Good Enhancement Suggestion? how-do-i-submit-a-good-enhancement-suggestion - Your First Code Contribution your-first-code-contribution - Improving The Documentation improving-the-documentati… 证据：`CONTRIBUTING.md`\n- **Package**（package_manifest）：{ \"name\": \"@skyvern/client\", \"version\": \"1.0.32\", \"private\": false, \"repository\": { \"type\": \"git\", \"url\": \"https://github.com/Skyvern-AI/skyvern.git\", \"directory\": \"skyvern-ts/client\" }, \"type\": \"commonjs\", \"main\": \"./dist/cjs/index.js\", \"module\": \"./dist/esm/index.mjs\", \"types\": \"./dist/cjs/index.d.ts\", \"exports\": { \".\": { \"types\": \"./dist/cjs/index.d.ts\", \"import\": { \"types\": \"./dist/esm/index.d.mts\", \"default\": \"./dist/esm/index.mjs\" }, \"require\": { \"types\": \"./dist/cjs/index.d.ts\", \"default\": \"./dist/cjs/index.js\" }, \"default\": \"./dist/cjs/index.js\" }, \"./package.json\": \"./package.json\" }, \"files\": \"dist\", \"reference.md\", \"README.md\", \"LICENSE\" , \"scripts\": { \"format\": \"biome format --w… 证据：`skyvern-ts/client/package.json`\n- **Package**（package_manifest）：{ \"name\": \"skyvern-claude-desktop-mcpb\", \"version\": \"0.0.0-private\", \"private\": true, \"description\": \"Claude Desktop MCP bundle for Skyvern Cloud\", \"license\": \"Apache-2.0\", \"dependencies\": { \"mcp-remote\": \"0.1.38\" } } 证据：`skyvern/cli/mcpb/claude_desktop/package.json`\n- **Package**（package_manifest）：{ \"name\": \"skyvern-ts-sdk-tests\", \"version\": \"1.0.0\", \"description\": \"Playground for testing Skyvern TypeScript SDK\", \"type\": \"module\", \"scripts\": { \"build\": \"tsc\", \"serve\": \"http-server ../web -p 9010 --silent\", \"test\": \"node run-test.js\" }, \"author\": \"\", \"license\": \"ISC\", \"dependencies\": { \"@skyvern/client\": \"file:../../../skyvern-ts/client\", \"dotenv\": \"^17.2.3\" }, \"devDependencies\": { \"@types/node\": \"^20.0.0\", \"http-server\": \"^14.1.1\", \"tsx\": \"^4.7.0\", \"typescript\": \"^5.0.0\" } } 证据：`tests/sdk/typescript_sdk/package.json`\n- **Bump Version Skill**（skill_instruction）：Automate the complete OSS version bump and release workflow for Skyvern. 证据：`.claude/skills/bump-version/SKILL.md`\n- **QA — Validate Frontend and Backend Changes**（skill_instruction）：QA — Validate Frontend and Backend Changes 证据：`skyvern/cli/skills/qa/SKILL.md`\n- **Skyvern Browser Automation -- CLI Judgment Procedure**（skill_instruction）：Skyvern Browser Automation -- CLI Judgment Procedure 证据：`skyvern/cli/skills/skyvern/SKILL.md`\n- **Smoke Test — CI-Oriented Validation via Skyvern Browser Tools**（skill_instruction）：Smoke Test — CI-Oriented Validation via Skyvern Browser Tools 证据：`skyvern/cli/skills/smoke-test/SKILL.md`\n- **License**（source_file）：GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 证据：`LICENSE`\n- **Testing**（skill_instruction）：Smoke-test a Skyvern deployment to verify the backend API responds, the frontend renders correctly, browser sessions can be provisioned, and workflows can execute end to end. 证据：`skyvern/cli/skills/testing/SKILL.md`\n- **Description**（documentation）：Description How Has This Been Tested? Artifacts if appropriate : 证据：`.github/pull_request_template.md`\n- **Code of Conduct - Skyvern**（documentation）：- Code of Conduct - Skyvern code-of-conduct---skyvern - Our Pledge our-pledge - Our Standards our-standards - Our Responsibilities our-responsibilities - Scope scope - Enforcement enforcement - Enforcement Guidelines enforcement-guidelines - 1. Correction 1-correction - 2. Warning 2-warning - 3. Temporary Ban 3-temporary-ban - 4. Permanent Ban 4-permanent-ban - Attribution attribution 证据：`CODE_OF_CONDUCT.md`\n- **Security Policy**（documentation）：- Security Policy security-policy - Supported Versions supported-versions - Reporting a Vulnerability reporting-a-vulnerability 证据：`SECURITY.md`\n- **Webvoyager Allrecipes**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Allrecipes.md`\n- **Webvoyager Amazon**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Amazon.md`\n- **Webvoyager Apple**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Apple.md`\n- **Webvoyager Arxiv**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-ArXiv.md`\n- **Webvoyager Bbc News**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-BBC-News.md`\n- **Webvoyager Booking**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Booking.md`\n- **Webvoyager Cambridge Dictionary**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Cambridge-Dictionary.md`\n- **Webvoyager Coursera**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Coursera.md`\n- **Webvoyager Espn**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-ESPN.md`\n- **Webvoyager Github**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Github.md`\n- **Webvoyager Google Flights**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Google-Flights.md`\n- **Webvoyager Google Map**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Google-Map.md`\n- **Webvoyager Google Search**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Google-Search.md`\n- **Webvoyager Huggingface**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Huggingface.md`\n- **Webvoyager Wolfram Alpha**（documentation）：id status question skyvern link skyvern summary skyvern output workflow run id ----: :------------------------- :---------- :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :-------------------------------------------------------------------------------- :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------… 证据：`evaluation/results/webvoyager-Wolfram-Alpha.md`\n- **Reference**（documentation）：Reference client. runSdkAction { ...params } - Skyvern.RunSdkActionResponse 证据：`skyvern-ts/client/reference.md`\n- **Agent Mode**（documentation）：Patterns for using the Skyvern CLI from AI agents and CI/CD pipelines. 证据：`skyvern/cli/skills/skyvern/references/agent-mode.md`\n- **AI Actions**（documentation）：Use for chained interactions on the current page. 证据：`skyvern/cli/skills/skyvern/references/ai-actions.md`\n- **Block Types: Practical Use**（documentation）：The primary block for page-level actions described in natural language. Accepts a URL and a navigation goal . 证据：`skyvern/cli/skills/skyvern/references/block-types.md`\n- **CLI and MCP Parity Summary**（documentation）：- skyvern browser navigate - skyvern navigate - skyvern browser act - skyvern act - skyvern browser extract - skyvern extract - skyvern workflow run - skyvern workflow run - skyvern credential list - skyvern credential list 证据：`skyvern/cli/skills/skyvern/references/cli-parity.md`\n- **Common Failure Patterns**（documentation）：Symptom: action clicked wrong element 证据：`skyvern/cli/skills/skyvern/references/common-failures.md`\n- **Complex Input Handling**（documentation）：- Prefer intent: \"set start date to 2026-03-15\". - If widget blocks typing, click field then choose date from calendar controls. 证据：`skyvern/cli/skills/skyvern/references/complex-inputs.md`\n- **Credential Management**（documentation）：Use env vars for secrets — CLI flags are visible in ps and /proc/ /cmdline . 证据：`skyvern/cli/skills/skyvern/references/credentials.md`\n- **Choosing Between run task and Workflows**（documentation）：Choosing Between run task and Workflows 证据：`skyvern/cli/skills/skyvern/references/engines.md`\n- 其余 20 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。\n\n## 宿主 AI 必须遵守的规则\n\n- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`docs/skill.md`, `AGENTS.md`, `CLAUDE.md`\n- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`docs/skill.md`, `AGENTS.md`, `CLAUDE.md`\n\n## 用户开工前应该回答的问题\n\n- 你准备在哪个宿主 AI 或本地环境中使用它？\n- 你只是想先体验工作流，还是准备真实安装？\n- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？\n\n## 验收标准\n\n- 所有能力声明都能回指到 evidence_refs 中的文件路径。\n- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。\n- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。\n\n---\n\n## Doramagic Context Augmentation\n\n下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。\n\n## Human Manual 骨架\n\n使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。\n\n宿主 AI 硬性规则：\n- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。\n- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。\n- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。\n\n- **Introduction to Skyvern**：importance `high`\n  - source_paths: README.md, skyvern/__init__.py, skyvern/constants.py\n- **System Architecture**：importance `high`\n  - source_paths: skyvern/forge/forge_app.py, skyvern/forge/agent.py, skyvern/webeye/browser_manager.py, skyvern/forge/sdk/workflow/service.py\n- **Browser Automation Engine**：importance `high`\n  - source_paths: skyvern/webeye/__init__.py, skyvern/webeye/browser_manager.py, skyvern/webeye/browser_state.py, skyvern/webeye/real_browser_manager.py, skyvern/webeye/actions/handler.py\n- **Workflow System**：importance `high`\n  - source_paths: skyvern/forge/sdk/workflow/models/block.py, skyvern/forge/sdk/workflow/models/workflow.py, skyvern/forge/sdk/workflow/service.py, skyvern/forge/sdk/workflow/workflow_definition_converter.py, skyvern/services/workflow_service.py\n- **AI-Powered Commands**：importance `high`\n  - source_paths: skyvern/forge/agent_functions.py, skyvern/forge/sdk/copilot/agent.py, skyvern/forge/sdk/copilot/tools.py, skyvern/library/skyvern_browser_page_ai.py\n- **Database Models**：importance `medium`\n  - source_paths: skyvern/forge/sdk/db/models.py, skyvern/forge/sdk/db/repositories/tasks.py, skyvern/forge/sdk/db/repositories/workflows.py, skyvern/forge/sdk/db/repositories/workflow_runs.py, skyvern/forge/sdk/db/enums.py\n- **Artifact Storage**：importance `medium`\n  - source_paths: skyvern/forge/sdk/artifact/manager.py, skyvern/forge/sdk/artifact/storage/factory.py, skyvern/forge/sdk/artifact/storage/s3.py, skyvern/forge/sdk/artifact/storage/azure.py, skyvern/forge/sdk/artifact/storage/local.py\n- **Credential Management**：importance `medium`\n  - source_paths: skyvern/forge/sdk/services/credentials.py, skyvern/forge/sdk/services/credential/bitwarden_credential_service.py, skyvern/forge/sdk/services/credential/azure_credential_vault_service.py, skyvern/forge/sdk/routes/credentials.py, skyvern/forge/sdk/db/repositories/credentials.py\n\n## Repo Inspection Evidence / 源码检查证据\n\n- repo_clone_verified: true\n- repo_inspection_verified: true\n- repo_commit: `737e3c238be83982e04d4914a6712db910535b22`\n- inspected_files: `pyproject.toml`, `Dockerfile`, `README.md`, `docker-compose.yml`, `uv.lock`, `docs/index.mdx`, `docs/skill.md`, `docs/docs.json`, `docs/changelog.mdx`, `docs/api-reference/openapi.json`, `docs/sdk-reference/error-handling.mdx`, `docs/sdk-reference/complete-reference.mdx`, `docs/sdk-reference/overview.mdx`, `docs/snippets/ai-agents-quickstart-content.mdx`, `docs/snippets/mcp-content.mdx`, `docs/snippets/core-concepts-content.mdx`, `docs/snippets/introduction-content.mdx`, `docs/snippets/schema-builder.mdx`, `docs/cookbooks/bulk-invoice-downloader.mdx`, `docs/cookbooks/job-application-filler.mdx`\n\n宿主 AI 硬性规则：\n- 没有 repo_clone_verified=true 时，不得声称已经读过源码。\n- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。\n- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。\n\n## Doramagic Pitfall Constraints / 踩坑约束\n\n这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。\n\n### Constraint 1: 来源证据：what ensures it’s the correct one in that context?\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：what ensures it’s the correct one in that context?\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能阻塞安装或首次运行。\n- Evidence: community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 2: 来源证据：Release v1.0.29\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Release v1.0.29\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能阻塞安装或首次运行。\n- Evidence: community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 3: 来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Task Execution Performance: Seeking guidance on optimizing execution speed\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 4: 来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 5: 来源证据：Performance bottleneck: High latency for simple form-filling workflows\n\n- Trigger: GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Performance bottleneck: High latency for simple form-filling workflows\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 6: 能力判断依赖假设\n\n- Trigger: README/documentation is current enough for a first validation pass.\n- Host AI rule: 将假设转成下游验证清单。\n- Why it matters: 假设不成立时，用户拿不到承诺的能力。\n- Evidence: capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 7: 来源证据：Release v1.0.34\n\n- Trigger: GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.34\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 8: 来源证据：Release v1.0.35\n\n- Trigger: GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.35\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 9: 维护活跃度未知\n\n- Trigger: 未记录 last_activity_observed。\n- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。\n- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- Evidence: evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 10: 下游验证发现风险项\n\n- Trigger: no_demo\n- Host AI rule: 进入安全/权限治理复核队列。\n- Why it matters: 下游已经要求复核，不能在页面中弱化。\n- Evidence: downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n",
      "summary": "给宿主 AI 的上下文和工作边界。",
      "title": "AI Context Pack / 带给我的 AI"
    },
    "boundary_risk_card": {
      "asset_id": "boundary_risk_card",
      "filename": "BOUNDARY_RISK_CARD.md",
      "markdown": "# Boundary & Risk Card / 安装前决策卡\n\n项目：Skyvern-AI/skyvern\n\n## Doramagic 试用结论\n\n当前结论：可以进入发布前推荐检查；首次使用仍应从最小权限、临时目录和可回滚配置开始。\n\n## 用户现在可以做\n\n- 可以先阅读 Human Manual，理解项目目的和主要工作流。\n- 可以复制 Prompt Preview 做安装前体验；这只验证交互感，不代表真实运行。\n- 可以把官方 Quick Start 命令放到隔离环境中验证，不要直接进主力环境。\n\n## 现在不要做\n\n- 不要把 Prompt Preview 当成项目实际运行结果。\n- 不要把 metadata-only validation 当成沙箱安装验证。\n- 不要把未验证能力写成“已支持、已跑通、可放心安装”。\n- 不要在首次试用时交出生产数据、私人文件、真实密钥或主力配置目录。\n\n## 安装前检查\n\n- 宿主 AI 是否匹配：local_cli\n- 官方安装入口状态：已发现官方入口\n- 是否在临时目录、临时宿主或容器中验证：必须是\n- 是否能回滚配置改动：必须能\n- 是否需要 API Key、网络访问、读写文件或修改宿主配置：未确认前按高风险处理\n- 是否记录了安装命令、实际输出和失败日志：必须记录\n\n## 当前阻塞项\n\n- 无阻塞项。\n\n## 项目专属踩坑\n\n- 来源证据：what ensures it’s the correct one in that context?（high）：可能阻塞安装或首次运行。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 来源证据：Release v1.0.29（medium）：可能阻塞安装或首次运行。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：Performance bottleneck: High latency for simple form-filling workflows（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n\n## 风险与权限提示\n\n- no_demo: medium\n\n## 证据缺口\n\n- 暂未发现结构化证据缺口。\n",
      "summary": "安装、权限、验证和推荐前风险。",
      "title": "Boundary & Risk Card / 边界与风险卡"
    },
    "human_manual": {
      "asset_id": "human_manual",
      "filename": "HUMAN_MANUAL.md",
      "markdown": "# https://github.com/Skyvern-AI/skyvern 项目说明书\n\n生成时间：2026-05-16 07:39:12 UTC\n\n## 目录\n\n- [Introduction to Skyvern](#introduction)\n- [System Architecture](#system-architecture)\n- [Browser Automation Engine](#browser-automation)\n- [Workflow System](#workflow-system)\n- [AI-Powered Commands](#ai-commands)\n- [Database Models](#database-models)\n- [Artifact Storage](#artifact-storage)\n- [Credential Management](#credential-management)\n- [LLM Provider Configuration](#llm-providers)\n- [Model Context Protocol (MCP) Integration](#mcp-integration)\n\n<a id='introduction'></a>\n\n## Introduction to Skyvern\n\n### 相关页面\n\n相关主题：[System Architecture](#system-architecture), [Browser Automation Engine](#browser-automation)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/mcpb/claude_desktop/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcpb/claude_desktop/README.md)\n- [skyvern/forge/sdk/api/aws.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/aws.py)\n</details>\n\n# Introduction to Skyvern\n\n## Overview\n\nSkyvern is an open-source browser automation platform that enables AI agents to interact with websites by understanding natural language instructions. The platform combines large language model (LLM) powered reasoning with browser automation capabilities, allowing developers to create workflows that can navigate websites, fill out forms, extract data, download files, and perform complex multi-step web tasks autonomously.\n\nSkyvern operates by interpreting user prompts and executing browser actions through a CDP (Chrome DevTools Protocol) connection, providing AI applications with the ability to interact with the web just like a human user would 资料来源：[README.md:1-50]()\n\n## Key Features\n\n### Multi-LLM Support\n\nSkyvern supports integration with multiple LLM providers, enabling flexible deployment options:\n\n| Provider | Supported Models |\n|----------|------------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |\n| Azure OpenAI | Any GPT models deployed to Azure subscription |\n| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |\n| Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md:65-72]()\n\n### Workflow Automation\n\nSkyvern enables the creation of automated workflows that can:\n\n- Navigate to websites and interact with web elements\n- Fill out forms and submit data\n- Extract structured information from web pages\n- Handle authentication and credential management\n- Download files and manage browser sessions\n- Handle multi-factor authentication (2FA/TOTP)\n- Schedule and execute tasks on a recurring basis\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx:1-30]()\n\n### Model Context Protocol (MCP) Integration\n\nSkyvern provides MCP server implementation for seamless integration with AI applications. This allows AI applications to connect to Skyvern and utilize its browser automation capabilities through a standardized protocol 资料来源：[integrations/mcp/README.md:1-25]()\n\n## Architecture Overview\n\n### System Components\n\n```mermaid\ngraph TD\n    A[AI Application] -->|MCP Protocol| B[Skyvern MCP Server]\n    B --> C[Skyvern API]\n    C --> D[Task Executor]\n    D --> E[Browser Automation Engine]\n    E --> F[CDP Browser Instance]\n    \n    G[LLM Provider] -->|Reasoning| D\n    H[Credential Vault] -->|Auth| D\n    I[Schedule Manager] -->|Trigger| C\n```\n\n### Browser Connection Options\n\nSkyvern supports multiple browser connection modes:\n\n1. **Local CDP Browser** - Connect to a locally running Chrome instance\n2. **Skyvern Cloud Browser** - Use managed browser infrastructure\n3. **Browser Tunneling** - Expose local browser to Skyvern Cloud via tunnel\n\n资料来源：[README.md:85-120]()\n\n## Getting Started\n\n### Installation and Setup\n\nRequirements: Python 3.11+ environment 资料来源：[integrations/mcp/README.md:15]()\n\n```bash\n# Install Skyvern\npip install skyvern\n\n# Initialize configuration\nskyvern init\n\n# Run the server (local mode only)\nskyvern run server\n```\n\n### Quickstart for Contributors\n\n```bash\n# Install dependencies using uv\nuv sync --group dev\n\n# Run setup wizard\nuv run skyvern quickstart\n\n# Access UI at http://localhost:8080\n```\n\n资料来源：[README.md:45-60]()\n\n## SDK Usage\n\n### Python SDK\n\n```python\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your-api-key\")\nskyvern.set_browser_context(\n    browser_type=\"cdp-connect\",\n    remote_debugging_url=\"http://127.0.0.1:9222\"\n)\ntask = await skyvern.run_task(\n    prompt=\"Find the top post on hackernews today\"\n)\n```\n\n### MCP Tools\n\nSkyvern provides comprehensive MCP tools for browser automation:\n\n| Category | Tools |\n|----------|-------|\n| Navigation | `skyvern_navigate`, `skyvern_click`, `skyvern_select_option`, `skyvern_press_key`, `skyvern_drag` |\n| Data Extraction | `skyvern_extract`, `skyvern_screenshot`, `skyvern_find`, `skyvern_validate`, `skyvern_get_html` |\n| Authentication | `skyvern_login`, `skyvern_credential_list`, `skyvern_credential_get` |\n| Tabs & Frames | `skyvern_tab_new`, `skyvern_tab_list`, `skyvern_tab_switch`, `skyvern_frame_list` |\n| Network | `skyvern_console_messages`, `skyvern_network_requests`, `skyvern_network_route` |\n\n资料来源：[skyvern/cli/mcp_tools/README.md:1-50]()\n\n## Workflows\n\nSkyvern supports workflow-based automation where complex tasks can be defined as a series of steps with conditional logic, evaluations, and human interaction checkpoints.\n\n```mermaid\ngraph LR\n    A[Start] --> B[Block 1: Action]\n    B --> C[Block 2: Condition]\n    C -->|True| D[Block 3: Evaluation]\n    C -->|False| E[Block 4: Fallback]\n    D --> F[Human Interaction]\n    F --> G[Continue to Next]\n    E --> G\n```\n\n### Workflow Block Types\n\n| Block Type | Purpose |\n|------------|---------|\n| Action | Execute browser actions (click, type, navigate) |\n| Condition | Branch logic based on page state |\n| Evaluation | Run JavaScript to validate or extract data |\n| Human Interaction | Pause workflow for manual input |\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/WorkflowRunTimelineBlockItem.tsx:1-60]()\n\n## Authentication and Credentials\n\n### Credential Services\n\nSkyvern supports multiple credential backends:\n\n- Skyvern Vault (built-in)\n- Bitwarden\n- 1Password\n- Azure Key Vault\n- Custom credential services via API configuration\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:1-40]()\n\n### 2FA/TOTP Handling\n\nSkyvern provides automated TOTP code extraction and attachment to runs:\n\n```tsx\n<PushTotpCodeForm\n  showAdvancedFields\n  onSuccess={handleFormSuccess}\n/>\n```\n\nThe system extracts verification codes from push notifications and attaches them to relevant workflow runs automatically.\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1-30]()\n\n## Task Creation\n\n### Navigation Goal\n\nTasks are defined using natural language prompts that describe what Skyvern should do:\n\n```\nprompt=\"Find the top post on hackernews today\"\n```\n\n### Advanced Settings\n\n| Parameter | Description |\n|-----------|-------------|\n| Navigation Payload | JSON parameters for routes/states |\n| Proxy Location | Route through geographic proxies |\n| Browser Session ID | Use persistent browser sessions |\n| Browser Address | CDP server address |\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:1-50]()\n\n## Scheduling\n\nTasks and workflows can be scheduled using cron expressions with timezone support:\n\n```python\nschedule = await skyvern.create_schedule(\n    workflow_id=\"workflow_xxx\",\n    cron_expression=\"0 9 * * *\",  # Daily at 9 AM\n    timezone=\"America/New_York\"\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/schedulePanel/CreateScheduleDialog.tsx:1-60]()\n\n## Cloud Integration\n\n### Browser Tunneling\n\nConnect Skyvern Cloud to your local browser with existing cookies and extensions:\n\n```bash\n# Start Chrome with tunnel to Skyvern Cloud\nskyvern browser serve --tunnel\n```\n\nThis command creates a tunnel URL that can be used to run tasks with your local browser state 资料来源：[README.md:115-135]()\n\n### Claude Desktop Integration\n\nSkyvern provides downloadable `.mcpb` bundles for quick Claude Desktop setup:\n\n```bash\n./scripts/package-mcpb.sh 1.0.23\n```\n\n资料来源：[skyvern/cli/mcpb/claude_desktop/README.md:1-25]()\n\n## Telemetry\n\nBy default, Skyvern collects basic usage statistics to understand how the platform is being used. To opt-out:\n\n```bash\nexport SKYVERN_TELEMETRY=false\n```\n\n资料来源：[README.md:35-38]()\n\n## License\n\nSkyvern's open-source repository is licensed under AGPL-3.0. The core automation logic is available in this repository, with anti-bot measures available in the managed cloud offering 资料来源：[README.md:40-43]()\n\n## Documentation and Support\n\n- **Documentation**: [https://www.skyvern.com/docs](https://www.skyvern.com/docs)\n- **Discord Community**: [https://discord.gg/fG2XXEuQX3](https://discord.gg/fG2XXEuQX3)\n- **Email Support**: founders@skyvern.com\n- **GitHub Issues**: [Help Wanted标签的问题](https://github.com/skyvern-ai/skyvern/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)\n\n## Related Documentation\n\nFor more detailed information on specific features:\n\n- [MCP Integration Guide](../integrations/mcp/README.md)\n- [CLI MCP Tools Reference](../skyvern/cli/mcp_tools/README.md)\n- [Claude Desktop Setup](../skyvern/cli/mcpb/claude_desktop/README.md)\n- [Browser Connection Configuration](https://www.skyvern.com/docs/optimization/browser-tunneling)\n\n---\n\n<a id='system-architecture'></a>\n\n## System Architecture\n\n### 相关页面\n\n相关主题：[Introduction to Skyvern](#introduction), [Browser Automation Engine](#browser-automation), [Workflow System](#workflow-system)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx)\n- [skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx)\n- [skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/Workspace.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/Workspace.tsx)\n- [skyvern-frontend/src/components/BrowserStream.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/components/BrowserStream.tsx)\n- [skyvern/forge/sdk/api/aws.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/aws.py)\n- [README.md](https://github.com/Skyvern-AI/skyvern/blob/main/README.md)\n</details>\n\n# System Architecture\n\n## Overview\n\nSkyvern is an AI-powered web automation framework that enables programmatic browser control through natural language instructions. The system architecture consists of three primary layers: a React-based frontend interface, a Python backend API (Forge), and a browser automation engine. This document provides a comprehensive technical overview of the system's components, data flows, and integration patterns.\n\n## High-Level Architecture\n\n```mermaid\ngraph TD\n    subgraph Frontend[\"Frontend Layer (React/TypeScript)\"]\n        UI[User Interface]\n        Forms[Task & Workflow Forms]\n        Stream[Browser Stream Viewer]\n    end\n    \n    subgraph Backend[\"Backend Layer (Python/Forge)\"]\n        API[Forge API]\n        Agent[AI Agent Engine]\n        Workflow[Workflow Engine]\n        Scheduler[Scheduler Service]\n    end\n    \n    subgraph Browser[\"Browser Automation Layer\"]\n        BrowserMgr[Browser Manager]\n        CDP[Chrome DevTools Protocol]\n        BrowserInst[Browser Instances]\n    end\n    \n    subgraph Storage[\"Storage & External Services\"]\n        S3[S3 Storage]\n        DB[(Database)]\n        LLM[LLM Providers]\n    end\n    \n    UI --> Forms\n    Forms --> API\n    UI --> Stream\n    Stream --> BrowserMgr\n    API --> Agent\n    API --> Workflow\n    API --> Scheduler\n    Agent --> BrowserMgr\n    Agent --> LLM\n    Workflow --> S3\n    Scheduler --> DB\n    BrowserMgr --> CDP\n    CDP --> BrowserInst\n```\n\n## Frontend Architecture\n\nThe frontend is a React-based Single Page Application (SPA) located in the `skyvern-frontend/` directory. It provides user interfaces for task creation, workflow management, credentials handling, and real-time browser streaming.\n\n### Component Structure\n\n| Component Category | Location | Purpose |\n|-------------------|----------|---------|\n| Task Forms | `src/routes/tasks/create/` | Task creation and management forms |\n| Workflow Editor | `src/routes/workflows/editor/` | Visual workflow building interface |\n| Credentials | `src/routes/credentials/` | Credential and TOTP management |\n| Schedules | `src/routes/schedules/` | Schedule viewing and configuration |\n| Shared Components | `src/components/` | Reusable UI components |\n\n### Key Frontend Components\n\n#### BrowserStream Component\n\nThe `BrowserStream` component handles real-time browser visualization. It displays animated loading states while establishing connections and renders rotating messages to indicate progress.\n\n```typescript\n// skyvern-frontend/src/components/BrowserStream.tsx\n<RotateThrough interval={7 * 1000}>\n  <span>Hm, working on the connection...</span>\n  <span>Hang tight, we're almost there...</span>\n  <span>Just a moment...</span>\n  <span>Backpropagating...</span>\n  <span>Attention is all I need...</span>\n  <span>Consulting the manual...</span>\n</RotateThrough>\n```\n\n资料来源：[skyvern-frontend/src/components/BrowserStream.tsx]()\n\n#### Task Forms\n\nTask creation is handled through two primary form components:\n\n1. **CreateNewTaskForm**: Used for creating new tasks with navigation goals\n2. **SavedTaskForm**: Used for creating tasks from saved templates\n\nBoth forms support advanced settings including navigation payloads for specifying parameters, routes, or states:\n\n```typescript\n// Navigation Payload field in SavedTaskForm\n<FormField\n  control={form.control}\n  name=\"navigationPayload\"\n  render={({ field }) => (\n    <FormItem>\n      <FormLabel>\n        <h1 className=\"text-lg\">Navigation Payload</h1>\n        <h2 className=\"text-base text-slate-400\">\n          Specify important parameters, routes, or states\n        </h2>\n      </FormLabel>\n      <CodeEditor {...field} language=\"json\" />\n    </FormItem>\n  )}\n/>\n```\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx]()\n\n#### Workflow Editor Workspace\n\nThe workflow editor workspace provides local execution capabilities with a dialog-based interface for running code locally:\n\n```typescript\n// skyvern-frontend/src/routes/workflows/editor/Workspace.tsx\nfunction bash(command: string, code?: string) {\n  return <code className=\"rounded bg-slate-800 px-1.5 py-0.5\">{command}</code>;\n}\n\n// Installation and setup instructions\n// 1. Install skyvern: pip install skyvern\n// 2. Set up skyvern: skyvern quickstart\n// 3. Run the code: skyvern run code --params '{...}' main.py\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/Workspace.tsx]()\n\n## Backend Architecture (Forge)\n\nThe Forge backend is the core Python application that handles task execution, workflow orchestration, and browser automation. Key modules include:\n\n### Forge Application\n\nThe main application entry point in `skyvern/forge/forge_app.py` initializes the FastAPI application, configures middleware, and registers routes.\n\n### AI Agent Engine\n\nThe agent system in `skyvern/forge/agent.py` processes natural language instructions and generates executable browser actions. The agent:\n\n1. Receives task definitions and navigation goals\n2. Interacts with LLM providers for decision-making\n3. Generates action sequences for browser automation\n4. Handles error recovery and retry logic\n\n### Workflow Service\n\nWorkflow definitions are managed through the SDK service in `skyvern/forge/sdk/workflow/service.py`. This module provides:\n\n- Workflow creation and versioning\n- Script management with cache keys\n- Execution history tracking\n\n## Browser Automation Layer\n\n### Browser Manager\n\nThe browser manager (`skyvern/webeye/browser_manager.py`) orchestrates browser instances using Chrome DevTools Protocol (CDP). It provides:\n\n- Browser pool management\n- Session persistence\n- Screenshot and recording capabilities\n- Multi-tab support\n\n### Browser Configuration Options\n\nThe frontend exposes several browser configuration parameters:\n\n| Parameter | Type | Purpose |\n|-----------|------|---------|\n| `proxyLocation` | string | Proxy server routing |\n| `browserSessionId` | string | Persistent session identifier (format: `pbs_xxx`) |\n| `cdpAddress` | string | Remote CDP endpoint (e.g., `http://127.0.0.1:9222`) |\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx]()\n\n## Data Storage and External Services\n\n### AWS Integration\n\nSkyvern uses AWS services for storage and cloud operations. The `S3Uri` class provides URI parsing for S3 resources:\n\n```python\n# skyvern/forge/sdk/api/aws.py\nclass S3Uri:\n    \"\"\"Parse and manipulate S3 URIs.\"\"\"\n    \n    def __init__(self, uri: str) -> None:\n        self._parsed = urlparse(uri, allow_fragments=False)\n    \n    @property\n    def bucket(self) -> str:\n        return self._parsed.netloc\n    \n    @property\n    def key(self) -> str:\n        if self._parsed.query:\n            return self._parsed.path.lstrip(\"/\") + \"?\" + self._parsed.query\n        return self._parsed.path.lstrip(\"/\")\n```\n\n资料来源：[skyvern/forge/sdk/api/aws.py]()\n\n### Workflow Scripts Storage\n\nScripts are stored with metadata including cache keys and revision counts:\n\n| Field | Description |\n|-------|-------------|\n| `Cache Key Value` | Unique identifier for the script |\n| `Total Revisions` | Number of versions |\n| `Runs` | Execution count |\n| `Last Updated` | Most recent modification timestamp |\n\n资料来源：[skyvern-frontend/src/routes/workflows/WorkflowScriptsPage.tsx]()\n\n## Task Execution Model\n\n### Task Creation Flow\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant Frontend\n    participant Forge API\n    participant Agent\n    participant Browser\n    \n    User->>Frontend: Enter navigation goal\n    User->>Frontend: Configure advanced settings\n    User->>Frontend: Submit task\n    Frontend->>Forge API: POST /v1/tasks\n    Forge API->>Agent: Create task instance\n    Agent->>Browser: Initialize browser session\n    Browser-->>Agent: Session established\n    Agent-->>Forge API: Task created\n    Forge API-->>Frontend: Task response\n    Frontend-->>User: Display task status\n```\n\n### Task States\n\n| State | Description |\n|-------|-------------|\n| `Navigation Goal` | Primary instruction for the agent |\n| `Navigation Payload` | Additional parameters, routes, states |\n| `Proxy Location` | Optional proxy routing |\n| `Browser Session ID` | Persistent session reference |\n\n## Workflow System Architecture\n\n### Workflow Components\n\n| Component | Purpose |\n|-----------|---------|\n| Workflow Scripts | Cached code blocks with versioning |\n| Schedules | Cron-based execution triggers |\n| Workflow Runs | Individual execution instances |\n| Workflow History | Version tracking and modification history |\n\n### Schedule Configuration\n\nSchedules support timezone-aware cron expressions:\n\n```typescript\n// Schedule display components\n<div className=\"space-y-2\">\n  <span className=\"text-sm text-slate-400\">Timezone</span>\n  <span className=\"text-sm text-slate-50\">{schedule.timezone}</span>\n</div>\n<div className=\"space-y-2\">\n  <span className=\"text-sm text-slate-400\">Cron</span>\n  <code className=\"font-mono text-xs\">{schedule.cron_expression}</code>\n</div>\n```\n\n资料来源：[skyvern-frontend/src/routes/schedules/ScheduleDetailPage.tsx]()\n\n### Script Versioning\n\nEach workflow script maintains a revision history:\n\n```typescript\n// Revision count calculation\n{versions?.versions\n  ? versions.versions.filter(\n      (v) => v.version < (activeVersion ?? 0),\n    ).length\n  : 0}\n<span className=\"text-sm font-normal\">prior</span>\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/WorkflowScriptDetailPage.tsx]()\n\n## Credentials and Authentication\n\n### TOTP/2FA Management\n\nSkyvern supports 2FA code management for authenticated workflows:\n\n| Component | Description |\n|-----------|-------------|\n| `PushTotpCodeForm` | Form for submitting verification codes |\n| Identifier Filter | Filter by email or phone |\n| OTP Type Filter | Filter by type (TOTP/Magic Link) |\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx]()\n\n## LLM Provider Integration\n\nSkyvern supports multiple LLM providers through a unified interface:\n\n| Provider | Supported Models |\n|----------|------------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6, Claude 4.5 |\n| Azure OpenAI | Any deployed GPT models |\n| AWS Bedrock | Claude 4.7, Claude 4.6, Claude 4.5 |\n| Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md]()\n\n## Development and Deployment\n\n### Local Development Setup\n\n```bash\n# 1. Create virtual environment\nuv sync --group dev\n\n# 2. Initialize configuration\nuv run skyvern quickstart\n\n# 3. Access UI\n# Navigate to http://localhost:8080\n```\n\n资料来源：[README.md]()\n\n### Running Workflows Locally\n\nThe workspace editor provides local execution capabilities:\n\n```bash\n# 1. Install skyvern\npip install skyvern\n\n# 2. Set up skyvern\nskyvern quickstart\n\n# 3. Run workflow code\nskyvern run code --params '{\"param1\": \"val1\"}' main.py\n```\n\n## System Data Flow\n\n```mermaid\ngraph LR\n    subgraph Input[\"User Input\"]\n        Prompt[Natural Language Prompt]\n        Payload[Navigation Payload]\n        Config[Configuration]\n    end\n    \n    subgraph Processing[\"Forge Processing\"]\n        Parse[Parse & Validate]\n        Agent[Agent Reasoning]\n        Plan[Action Planning]\n    end\n    \n    subgraph Execution[\"Browser Execution\"]\n        Navigate[Navigate]\n        Interact[Interact]\n        Extract[Extract Data]\n    end\n    \n    subgraph Output[\"Results\"]\n        Screenshots[Screenshots]\n        Data[Extracted Data]\n        Logs[Execution Logs]\n    end\n    \n    Input --> Parse\n    Parse --> Agent\n    Agent --> Plan\n    Plan --> Execute\n    Execute --> Output\n    \n    style Input fill:#e1f5fe\n    style Processing fill:#fff3e0\n    style Execution fill:#e8f5e9\n    style Output fill:#f3e5f5\n```\n\n## Summary\n\nThe Skyvern system architecture follows a modular design with clear separation of concerns:\n\n1. **Frontend Layer**: React SPA providing task creation, workflow editing, and real-time visualization\n2. **Backend Layer**: Python FastAPI application handling agent orchestration, workflow management, and scheduling\n3. **Browser Layer**: Chrome DevTools Protocol-based automation engine for web interaction\n4. **Storage Layer**: S3 for large objects, database for structured data, and LLM providers for reasoning\n\nThe system supports multiple LLM providers, enables persistent browser sessions, and provides comprehensive workflow versioning and scheduling capabilities.\n\n---\n\n<a id='browser-automation'></a>\n\n## Browser Automation Engine\n\n### 相关页面\n\n相关主题：[Introduction to Skyvern](#introduction), [AI-Powered Commands](#ai-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/webeye/__init__.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/__init__.py)\n- [skyvern/webeye/browser_manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/browser_manager.py)\n- [skyvern/webeye/browser_state.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/browser_state.py)\n- [skyvern/webeye/real_browser_manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/real_browser_manager.py)\n- [skyvern/webeye/actions/handler.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/actions/handler.py)\n- [skyvern/webeye/cdp_connection.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/webeye/cdp_connection.py)\n</details>\n\n# Browser Automation Engine\n\n## Overview\n\nThe Browser Automation Engine is the core component of Skyvern that enables AI agents to interact with websites through browser control. Instead of relying on fragile XPath-based selectors that break with website layout changes, Skyvern leverages Vision LLMs combined with Playwright and Chrome DevTools Protocol (CDP) to visually understand and interact with web pages.\n\nThe engine provides a unified interface for:\n\n- Launching and managing browser sessions\n- Navigating to URLs with configurable behavior\n- Executing actions (click, type, scroll, hover, etc.)\n- Capturing screenshots for LLM analysis\n- Extracting structured data from web pages\n- Handling multi-step workflows across websites\n\n资料来源：[README.md:60-80]()\n\n## Architecture\n\n### System Components\n\n```mermaid\ngraph TD\n    A[Agent / Task Request] --> B[Browser Manager]\n    B --> C[Real Browser Manager]\n    C --> D[Playwright Browser]\n    C --> E[CDP Connection]\n    D --> F[Browser State]\n    F --> G[Screenshot Capture]\n    F --> H[DOM Extraction]\n    E --> I[DevTools Protocol]\n    G --> J[Vision LLM Analysis]\n    J --> K[Action Handler]\n    K --> C\n```\n\n### Module Structure\n\n| Module | Purpose |\n|--------|---------|\n| `webeye/__init__.py` | Public API exports and core abstractions |\n| `browser_manager.py` | Abstract browser manager interface |\n| `real_browser_manager.py` | Concrete Playwright-based implementation |\n| `browser_state.py` | Page state representation and snapshot |\n| `actions/handler.py` | Action execution and coordination |\n| `cdp_connection.py` | Chrome DevTools Protocol communication |\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py:30-50]()\n\n## Browser Session Management\n\n### Session Lifecycle\n\n```mermaid\nstateDiagram-v2\n    [*] --> Created: browser_session_id\n    Created --> Launching: launch()\n    Launching --> Ready: browser ready\n    Ready --> Navigating: navigate(url)\n    Navigating --> Ready: page loaded\n    Ready --> Executing: perform_action()\n    Executing --> Ready: action complete\n    Ready --> Closed: close()\n    Closed --> [*]\n```\n\n### Persistent Browser Sessions\n\nSkyvern supports persistent browser sessions that maintain cookies, local storage, and login states across task executions:\n\n```python\n# Create a persistent browser session\nbrowser_session_id = \"pbs_xxxxxxxxxxxx\"\n\n# Reuse session for subsequent tasks\ntask = await skyvern.run_task(\n    prompt=\"Download invoice from my account\",\n    browser_session_id=browser_session_id,\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:40-60]()\n\n### Session Configuration Parameters\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `browser_session_id` | string | ID of a persistent browser session |\n| `cdp_address` | string | Browser DevTools address (e.g., `http://127.0.0.1:9222`) |\n| `proxy_location` | string | Geographic proxy for requests |\n| `extra_http_headers` | dict | Custom HTTP headers for requests |\n| `totp_identifier` | string | 2FA identifier for authenticated flows |\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py:40-55]()\n\n## Chrome DevTools Protocol Integration\n\n### CDP Connection\n\nThe CDP connection module provides low-level access to Chrome's debugging interface:\n\n```python\n# CDP connection configuration\ncdp_address = \"http://127.0.0.1:9222\"\n```\n\nSkyvern can connect to:\n\n1. **Local Chrome** - Chrome with remote debugging enabled\n2. **Existing Browser** - Your Chrome with cookies and extensions\n3. **Cloud Browser** - Skyvern-hosted browser via tunnel\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:65-80]()\n\n### Remote Debugging Setup\n\n```bash\n# Step 1: Open Chrome with remote debugging\nchrome --remote-debugging-port=9222\n\n# Or use Skyvern's CLI helper\nskyvern init browser\n```\n\nThe browser exposes WebSocket endpoint at `http://127.0.0.1:9222` for CDP commands.\n\n资料来源：[README.md:45-65]()\n\n## Browser State Representation\n\n### State Components\n\n```mermaid\ngraph LR\n    A[Browser State] --> B[Current URL]\n    A --> C[Screenshot]\n    A --> D[DOM Tree]\n    A --> E[Cookies]\n    A --> F[Local Storage]\n    A --> G[Viewport Info]\n```\n\n### Browser State Object\n\n| Property | Description |\n|----------|-------------|\n| `url` | Current page URL |\n| `title` | Page title |\n| `screenshot` | Base64-encoded screenshot |\n| `dom_tree` | Parsed DOM structure |\n| `viewport` | Viewport dimensions |\n| `elements` | Interactive element mapping |\n\n资料来源：[skyvern/webeye/browser_state.py]()\n\n## Action Handler\n\n### Supported Actions\n\nThe action handler executes LLM-decided actions on the browser:\n\n| Action | Parameters | Description |\n|--------|------------|-------------|\n| `click` | element_selector | Click on specified element |\n| `type` | text, element_selector | Enter text into input field |\n| `hover` | element_selector | Mouse hover over element |\n| `scroll` | direction, amount | Scroll page view |\n| `select` | value, element_selector | Select dropdown option |\n| `press_key` | key | Press keyboard key |\n| `wait` | duration | Wait for page to settle |\n| `navigate` | url | Go to URL |\n| `screenshot` | - | Capture current view |\n| `extract` | schema | Extract data per schema |\n\n资料来源：[skyvern/webeye/actions/handler.py]()\n\n### Action Execution Flow\n\n```mermaid\nsequenceDiagram\n    participant LLM as Vision LLM\n    participant AH as Action Handler\n    participant BM as Browser Manager\n    participant Browser as Playwright/CDP\n    \n    LLM->>AH: Decide action from screenshot\n    AH->>BM: Execute action request\n    BM->>Browser: CDP/Playwright command\n    Browser-->>BM: Action result\n    BM-->>AH: Updated browser state\n    AH-->>LLM: State + screenshot for next decision\n```\n\n## Browser Configuration Options\n\n### Launch Configuration\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `headless` | true | Run browser without visible window |\n| `viewport_width` | 1280 | Browser viewport width |\n| `viewport_height` | 720 | Browser viewport height |\n| `user_agent` | auto | User agent string |\n| `ignore_https_errors` | false | Allow invalid certs |\n\n### Navigation Options\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `url` | string | Target URL |\n| `navigation_payload` | object | Parameters, routes, or initial states |\n| `follow_redirects` | boolean | Auto-follow HTTP redirects |\n| `timeout` | int | Navigation timeout in ms |\n\n资料来源：[skyvern-frontend/src/routes/tasks/detail/TaskParameters.tsx:20-40]()\n\n## Integration with Agent System\n\n### Agent Protocol Integration\n\nThe browser automation engine integrates with Skyvern's agent protocol:\n\n```python\nrun_request=TaskRunRequest(\n    engine=RunEngine.skyvern_v2,\n    prompt=task_v2.prompt,\n    url=task_v2.url,\n    browser_session_id=run_request.browser_session_id,\n    totp_identifier=task_v2.totp_identifier,\n    proxy_location=task_v2.proxy_location,\n    max_steps=run_request.max_steps,\n)\n```\n\n### Workflow Block Execution\n\n```mermaid\ngraph TD\n    A[Workflow Run] --> B[Initialize Browser]\n    B --> C[Go To URL Block]\n    C --> D[Browser Navigation]\n    D --> E[Action Block]\n    E --> F[Extract/Process]\n    F --> G{More Blocks?}\n    G -->|Yes| E\n    G -->|No| H[Close Browser]\n    H --> I[Return Results]\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:10-50]()\n\n## Advanced Features\n\n### Custom Browser Connection\n\nConnect Skyvern Cloud to a local browser running on your machine:\n\n```bash\n# Start Chrome with tunnel to Skyvern Cloud\nskyvern browser serve --tunnel\n```\n\nThis enables:\n- Use existing cookies and logins\n- Bypass VPN restrictions\n- Full browser control via Skyvern API\n\n资料来源：[README.md:80-100]()\n\n### Proxy Support\n\nRoute browser traffic through geographic proxies:\n\n```python\nskyvern.run_task(\n    prompt=\"Search for local restaurants\",\n    proxy_location=\"us-east-1\",  # or \"eu-west-1\", \"ap-south-1\"\n)\n```\n\nAvailable proxy locations provide access to region-specific content.\n\n资料来源：[skyvern-frontend/src/routes/tasks/create/PromptBox.tsx:25-35]()\n\n## Error Handling\n\n### Browser-Specific Errors\n\n| Error Type | Cause | Recovery |\n|------------|-------|----------|\n| Navigation timeout | Page fails to load | Retry with extended timeout |\n| Element not found | Dynamic content issues | Re-screenshot and retry |\n| Browser crash | Memory/extension issues | Restart browser session |\n| CDP connection lost | Network disruption | Reconnect and resume |\n\n### Error Code Mapping\n\nCustom error codes can be mapped for workflow-specific handling:\n\n```python\ntask = await skyvern.run_task(\n    prompt=\"Process order\",\n    error_code_mapping={\n        \"ERR_LOGIN_FAILED\": \"retry_with_2fa\",\n        \"ERR_PAYMENT_DECLINED\": \"notify_user\",\n    },\n)\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/workflowRun/TaskBlockParameters.tsx:45-65]()\n\n## Security Considerations\n\n### Browser Tunneling Security\n\n> [!WARNING]\n> Always use `--api-key` when exposing your browser via tunnel. Without it, anyone with the URL has full control of your browser.\n\nBest practices:\n- Never expose browser tunnels publicly\n- Use authenticated connections only\n- Rotate tunnel URLs frequently\n- Limit browser session access\n\n资料来源：[README.md:95-105]()\n\n### Secure Credential Management\n\nTOTP/2FA codes are handled through secure credential storage:\n\n```python\ntask = await skyvern.run_task(\n    prompt=\"Login to bank account\",\n    totp_identifier=\"banking_2fa_user@example.com\",\n)\n```\n\nThe system extracts codes from push notifications or SMS and attaches them to relevant workflow steps.\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:10-30]()\n\n## Summary\n\nThe Browser Automation Engine provides Skyvern's core capability to automate web interactions using Vision LLMs. Key aspects:\n\n- **Unified abstraction** over Playwright and CDP protocols\n- **Persistent sessions** for maintaining login states\n- **Visual understanding** via screenshot-based LLM analysis\n- **Flexible configuration** for proxy, headers, and browser options\n- **Integrated with workflows** for complex multi-step automation\n\nThis architecture enables Skyvern to operate on websites it has never seen before, adapt to layout changes automatically, and apply the same workflow across many different sites.\n\n---\n\n<a id='workflow-system'></a>\n\n## Workflow System\n\n### 相关页面\n\n相关主题：[System Architecture](#system-architecture), [Database Models](#database-models)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/workflow/models/block.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/models/block.py)\n- [skyvern/forge/sdk/workflow/models/workflow.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/models/workflow.py)\n- [skyvern/forge/sdk/workflow/service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/service.py)\n- [skyvern/forge/sdk/workflow/workflow_definition_converter.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/workflow/workflow_definition_converter.py)\n- [skyvern/services/workflow_service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/services/workflow_service.py)\n- [skyvern/services/block_service.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/services/block_service.py)\n</details>\n\n# Workflow System\n\n## Overview\n\nThe Skyvern Workflow System is a core automation framework that enables chaining multiple tasks together to form cohesive units of work. It allows users to create complex multi-step automations by composing reusable building blocks called \"workflow blocks.\"\n\n## Architecture\n\n```mermaid\ngraph TD\n    subgraph \"Frontend Layer\"\n        WE[Workflow Editor]\n        RR[Run Workflow Form]\n        DP[Debugger Panel]\n    end\n    \n    subgraph \"API Layer\"\n        AP[Agent Protocol Routes]\n        WS[Webhook Endpoint]\n    end\n    \n    subgraph \"Service Layer\"\n        WFS[Workflow Service]\n        BS[Block Service]\n    end\n    \n    subgraph \"Core SDK\"\n        WMS[Workflow Models]\n        BMS[Block Models]\n        WDC[Definition Converter]\n        WSS[Workflow Service SDK]\n    end\n    \n    WE --> AP\n    RR --> AP\n    AP --> WFS\n    WFS --> BS\n    WFS --> WMS\n    BS --> BMS\n    WDC --> WMS\n    WDC --> BMS\n    WSS --> WMS\n    WSS --> BMS\n```\n\n## Workflow Model\n\n### WorkflowDefinition\n\nThe `WorkflowDefinition` is the core model representing a workflow:\n\n```python\nclass WorkflowDefinition(BaseModel):\n    title: str\n    description: Optional[str] = None\n    blocks: List[WorkflowBlockDefinition]\n    parameters: List[WorkflowParameter] = []\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `title` | `str` | Human-readable workflow title |\n| `description` | `Optional[str]` | Optional description of workflow purpose |\n| `blocks` | `List[WorkflowBlockDefinition]` | Ordered list of block definitions |\n| `parameters` | `List[WorkflowParameter]` | Input parameters for workflow execution |\n\n资料来源：[skyvern/forge/sdk/workflow/models/workflow.py]()\n\n### WorkflowParameter\n\nWorkflows accept typed input parameters:\n\n```python\nclass WorkflowParameter(BaseModel):\n    key: str\n    workflow_parameter_type: WorkflowParameterType\n    default_value: Optional[Any] = None\n    description: Optional[str] = None\n    required: bool = True\n```\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `key` | `str` | Parameter identifier |\n| `workflow_parameter_type` | `WorkflowParameterType` | Type: `string`, `integer`, `float`, `boolean`, `json` |\n| `default_value` | `Optional[Any]` | Default value if not provided |\n| `description` | `Optional[str]` | Parameter description |\n| `required` | `bool` | Whether parameter is mandatory |\n\n资料来源：[skyvern/forge/sdk/workflow/models/workflow.py]()\n\n## Block Types\n\nSkyvern supports 23 block types for multi-step automations. Each block type serves a specific purpose in workflow execution.\n\n```mermaid\ngraph TD\n    A[Workflow Start] --> B{Block Type}\n    B --> C[Browser Tasks]\n    B --> D[Data Operations]\n    B --> E[Control Flow]\n    B --> F[External Integration]\n    \n    C --> C1[Task v2]\n    C --> C2[Browser Action]\n    C --> C3[Navigation]\n    C --> C4[Login]\n    \n    D --> D1[Extraction]\n    D --> D2[HTTP Request]\n    D --> D3[File Download]\n    \n    E --> E1[Conditional]\n    E --> E2[For Loop]\n    E --> E3[Wait]\n    \n    F --> F1[Email]\n    F --> F2[Text Prompt]\n    F --> F3[Print Page]\n```\n\n### Supported Block Types\n\n| Block Type | Purpose | Key Parameters |\n|------------|---------|----------------|\n| `Taskv2` | Multi-step browser automation | `prompt`, `url`, `max_steps`, `totp_verification_url`, `disable_cache` |\n| `URL` | Navigate to a URL | `url`, `continue_on_failure` |\n| `Wait` | Pause execution | `duration` |\n| `TextPrompt` | LLM text generation | `prompt`, `llm_key`, `json_schema` |\n| `HTTPRequest` | External API calls | `url`, `method`, `headers`, `body` |\n| `Extraction` | Data extraction from page | `prompt`, `llm_key` |\n| `Validation` | Validate extracted data | `prompt`, `error_codes` |\n| `PrintPage` | Print to PDF | `format`, `landscape`, `print_background` |\n| `HumanInteraction` | Pause for human input | `instructions`, `positive_descriptor`, `negative_descriptor` |\n| `Conditional` | Branch logic | `expression` |\n| `ForLoop` | Iterate over items | `items`, `variable_name` |\n| `FileDownload` | Download files | `url`, `follow_redirects`, `save_response_as_file` |\n| `BrowserAction` | Single browser action | `action_type`, `element_id` |\n| `Login` | Handle authentication | `credential_id`, `totp_identifier` |\n\n资料来源：[skyvern/forge/sdk/workflow/models/block.py]()\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Block Execution Model\n\n### WorkflowBlockExecution\n\nEach block execution is tracked with its status:\n\n```python\nclass WorkflowBlockExecution(BaseModel):\n    workflow_run_id: str\n    block_id: str\n    block_type: WorkflowBlockType\n    status: WorkflowBlockStatus\n    output: Optional[Any] = None\n    failure_reason: Optional[str] = None\n    executed_branch_expression: Optional[str] = None\n    executed_branch_result: Optional[bool] = None\n    executed_branch_next_block: Optional[str] = None\n```\n\n| Status | Description |\n|--------|-------------|\n| `created` | Block added to execution queue |\n| `queued` | Waiting for execution |\n| `running` | Currently executing |\n| `completed` | Successfully finished |\n| `failed` | Execution failed |\n| `cancelled` | Cancelled by user |\n\n### Block Parameters by Type\n\n#### Taskv2BlockParameters\n\n```python\nclass Taskv2BlockParameters(BaseModel):\n    prompt: str\n    url: Optional[str] = None\n    max_steps: Optional[int] = None\n    totp_verification_url: Optional[str] = None\n    totp_identifier: Optional[str] = None\n    disable_cache: bool = False\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `prompt` | `str` | - | Navigation goal for the browser agent |\n| `url` | `Optional[str]` | `None` | Starting URL for navigation |\n| `max_steps` | `Optional[int]` | `None` | Maximum steps before stopping |\n| `totp_verification_url` | `Optional[str]` | `None` | URL for 2FA verification |\n| `totp_identifier` | `Optional[str]` | `None` | Identifier for TOTP credentials |\n| `disable_cache` | `bool` | `False` | Disable action caching |\n\n资料来源：[skyvern/forge/sdk/workflow/models/block.py]()\n\n#### GotoUrlBlockParameters\n\n```python\nclass GotoUrlBlockParameters(BaseModel):\n    url: str\n    continue_on_failure: bool = False\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `url` | `str` | - | Target URL to navigate to |\n| `continue_on_failure` | `bool` | `False` | Continue workflow on navigation failure |\n\n#### WaitBlockParameters\n\n```python\nclass WaitBlockParameters(BaseModel):\n    duration: int\n```\n\n#### PrintPageBlockParameters\n\n```python\nclass PrintPageBlockParameters(BaseModel):\n    format: PrintFormat = PrintFormat.A4\n    landscape: bool = False\n    print_background: bool = False\n    include_timestamp: bool = True\n    custom_filename: Optional[str] = None\n```\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `format` | `PrintFormat` | `A4` | Page format: `A4`, `Letter`, `Legal` |\n| `landscape` | `bool` | `False` | Use landscape orientation |\n| `print_background` | `bool` | `False` | Print background colors |\n| `include_timestamp` | `bool` | `True` | Include timestamp in footer |\n| `custom_filename` | `Optional[str]` | `None` | Custom output filename |\n\n#### HumanInteractionBlockParameters\n\n```python\nclass HumanInteractionBlockParameters(BaseModel):\n    instructions: Optional[str] = None\n    positive_descriptor: Optional[str] = None\n    negative_descriptor: Optional[str] = None\n```\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `instructions` | `Optional[str]` | Instructions for the human |\n| `positive_descriptor` | `Optional[str]` | Label for positive confirmation |\n| `negative_descriptor` | `Optional[str]` | Label for negative/cancellation action |\n\n## Workflow Execution Flow\n\n```mermaid\nsequenceDiagram\n    participant Client\n    participant API\n    participant WorkflowService\n    participant BlockService\n    participant Executor\n\n    Client->>API: POST /workflows/{id}/run\n    API->>WorkflowService: create_workflow_run()\n    WorkflowService->>WorkflowService: Validate parameters\n    WorkflowService->>WorkflowService: Create WorkflowRun record\n    WorkflowService-->>API: WorkflowRun\n    \n    loop For each block\n        API->>BlockService: execute_block()\n        BlockService->>Executor: Process block\n        Executor-->>BlockService: Block result\n        BlockService-->>API: WorkflowBlockExecution\n    end\n    \n    API->>Client: Webhook callback (optional)\n```\n\n## Workflow Service API\n\n### Core Operations\n\n| Method | Description | Source |\n|--------|-------------|--------|\n| `create_workflow` | Create new workflow | [skyvern/forge/sdk/workflow/service.py]() |\n| `get_workflow` | Retrieve workflow by ID | [skyvern/forge/sdk/workflow/service.py]() |\n| `update_workflow` | Update workflow definition | [skyvern/forge/sdk/workflow/service.py]() |\n| `delete_workflow` | Delete workflow | [skyvern/forge/sdk/workflow/service.py]() |\n| `list_workflows` | List all workflows | [skyvern/forge/sdk/workflow/service.py]() |\n| `run_workflow` | Execute workflow | [skyvern/services/workflow_service.py]() |\n| `cancel_workflow_run` | Cancel running workflow | [skyvern/services/workflow_service.py]() |\n\n### Running Workflows\n\nWorkflows can be executed via:\n\n1. **API**: `POST /workflows/{workflow_id}/run`\n2. **CLI**: `skyvern_workflow_run` tool\n3. **Schedule**: Cron-based scheduled execution\n\n### Run Parameters\n\nWhen running a workflow, the following parameters can be specified:\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `parameters` | `Dict[str, Any]` | Workflow input parameters |\n| `webhook_callback_url` | `Optional[str]` | URL for result callback |\n| `proxy_location` | `Optional[ProxyLocation]` | Geographic proxy location |\n| `run_with` | `RunWith` | `agent` or `code` execution mode |\n| `ai_fallback` | `bool` | Fall back to AI if code generation fails |\n\n资料来源：[skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx]()\n\n## Webhook Integration\n\nWorkflows support webhook callbacks for asynchronous result delivery:\n\n```mermaid\ngraph LR\n    A[Workflow Run] --> B{Complete?}\n    B -->|Yes| C[Send webhook]\n    B -->|No| D[Retry queue]\n    D --> B\n    C --> E[Customer Endpoint]\n```\n\nThe webhook payload includes:\n\n```python\n{\n    \"workflow_run_id\": str,\n    \"workflow_id\": str,\n    \"status\": WorkflowRunStatus,\n    \"output\": Optional[Any],\n    \"failure_reason\": Optional[str],\n    \"created_at\": datetime,\n    \"modified_at\": datetime,\n    \"blocks\": List[WorkflowBlockExecution]\n}\n```\n\n## MCP Integration\n\nSkyvern provides MCP (Model Context Protocol) tools for workflow management:\n\n### Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_workflow_create` | Create new workflow |\n| `skyvern_workflow_list` | List all workflows |\n| `skyvern_workflow_get` | Get workflow details |\n| `skyvern_workflow_run` | Execute workflow |\n| `skyvern_workflow_status` | Check run status |\n| `skyvern_workflow_update` | Update workflow |\n| `skyvern_workflow_delete` | Delete workflow |\n| `skyvern_workflow_cancel` | Cancel running workflow |\n| `skyvern_block_schema` | Get block type schema |\n| `skyvern_block_validate` | Validate block definition |\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Frontend Components\n\n### Workflow Editor\n\nLocated at `/workflows/{workflow_id}/build`, the editor provides:\n\n- Visual block composition\n- Block parameter configuration\n- Workflow validation\n- Preview mode\n\n### Run Workflow Form\n\nLocated at `/workflows/{workflow_id}/run`, supports:\n\n- Parameter input with type validation\n- Run method selection (`agent` or `code`)\n- Webhook URL configuration\n- Proxy location selection\n\n### Debugger Panel\n\nLocated at `/workflows/{workflow_id}/debug`, provides:\n\n- Real-time execution status\n- Block-by-block output inspection\n- Extracted information viewer\n- Failure reason analysis\n\n### Workflow Run Timeline\n\nDisplays execution history with:\n\n- Block status indicators\n- Execution timestamps\n- Extracted data per block\n- Navigation to diagnostics\n\n## Data Flow\n\n```mermaid\ngraph TD\n    subgraph \"Definition Layer\"\n        WD[Workflow Definition]\n        BD[Block Definitions]\n        WP[Workflow Parameters]\n    end\n    \n    subgraph \"Execution Layer\"\n        WR[Workflow Run]\n        BR[Block Executions]\n        ST[State Management]\n    end\n    \n    subgraph \"Output Layer\"\n        OT[Output Data]\n        ER[Error Reports]\n        WH[Webhook Events]\n    end\n    \n    WD --> WR\n    BD --> BR\n    WP --> WR\n    BR --> ST\n    ST --> OT\n    BR -->|on failure| ER\n    WR --> WH\n```\n\n## Key Features\n\n### Conditional Execution\n\nThe `Conditional` block evaluates expressions and branches workflow execution:\n\n```python\nclass ConditionalBlockParameters(BaseModel):\n    expression: str  # e.g., \"data.status == 'approved'\"\n```\n\nAfter evaluation, the system records:\n- `executed_branch_expression`: The evaluated expression\n- `executed_branch_result`: Boolean result\n- `executed_branch_next_block`: Next block ID based on result\n\n### For Loop Iteration\n\nThe `ForLoop` block iterates over collections:\n\n```python\nclass ForLoopBlockParameters(BaseModel):\n    items: List[Any]\n    variable_name: str  # Variable to expose in loop context\n```\n\n### Error Handling\n\nBlocks support `continue_on_failure` flag for graceful degradation:\n\n```python\nclass GotoUrlBlockParameters:\n    url: str\n    continue_on_failure: bool = False\n```\n\nWhen enabled, workflow continues to next block on failure.\n\n### TOTP/2FA Support\n\nBrowser tasks can handle two-factor authentication:\n\n```python\nclass Taskv2BlockParameters:\n    totp_verification_url: Optional[str]\n    totp_identifier: Optional[str]\n```\n\nUsers can push verification codes via the frontend or API.\n\n## Security Considerations\n\n### Webhook Signature Validation\n\nWebhook endpoints must validate signatures:\n\n```python\nasync def webhook(request: Request) -> Response:\n    signature = request.headers.get(\"x-skyvern-signature\")\n    timestamp = request.headers.get(\"x-skyvern-timestamp\")\n    \n    if not signature or not timestamp:\n        raise HTTPException(status_code=400)\n    \n    payload = await request.body()\n    expected = generate_skyvern_signature(\n        payload.decode(\"utf-8\"),\n        settings.SKYVERN_API_KEY\n    )\n```\n\n### Credential Management\n\nWorkflows requiring authentication reference stored credentials by ID rather than embedding sensitive data.\n\n## CLI Commands\n\n```bash\n# Switch between environments\nskyvern mcp switch\n\n# List workflows\nskyvern workflow list\n\n# Run workflow\nskyvern workflow run <workflow_id>\n```\n\n## See Also\n\n- [Task System](tasks.md) - Single-task automation\n- [Browser Agent](browser-agent.md) - AI-powered web navigation\n- [Credential Management](credentials.md) - Secure credential storage\n- [Scheduling System](schedules.md) - Cron-based workflow execution\n\n---\n\n<a id='ai-commands'></a>\n\n## AI-Powered Commands\n\n### 相关页面\n\n相关主题：[Browser Automation Engine](#browser-automation), [LLM Provider Configuration](#llm-providers)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/agent_functions.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/agent_functions.py)\n- [skyvern/forge/sdk/copilot/agent.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/copilot/agent.py)\n- [skyvern/forge/sdk/copilot/tools.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/copilot/tools.py)\n- [skyvern/library/skyvern_browser_page_ai.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/library/skyvern_browser_page_ai.py)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/skills/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/skills/README.md)\n</details>\n\n# AI-Powered Commands\n\nSkyvern provides a comprehensive suite of AI-powered commands that enable intelligent browser automation through natural language instructions. These commands leverage Large Language Models (LLMs) to interpret user intent and execute complex browser interactions autonomously.\n\n## Overview\n\nAI-Powered Commands in Skyvern represent a paradigm shift from traditional scripted automation to intelligent, intent-based browser control. Instead of writing precise step-by-step instructions, users describe what they want to achieve in natural language, and Skyvern's AI agents interpret and execute the necessary browser actions.\n\nThe system integrates with multiple LLM providers including OpenAI (GPT-4.1, o3, o4-mini), Anthropic (Claude 4.5-4.7), Azure OpenAI, AWS Bedrock, and Google Gemini to power the AI decision-making engine.\n\n## Architecture\n\n```mermaid\ngraph TD\n    A[User Input / Natural Language] --> B[Copilot Agent]\n    B --> C[LLM Provider]\n    C --> D[Decision Engine]\n    D --> E[Browser Actions]\n    E --> F[Element Interaction]\n    F --> G[State Validation]\n    G --> H[Continue / Complete]\n    \n    B --> I[Tool Selection]\n    I --> J[Data Extraction]\n    I --> K[Visual Validation]\n    I --> L[Network Monitoring]\n    \n    subgraph Tools\n        J\n        K\n        L\n    end\n```\n\n## Core Components\n\n### Copilot Agent (`skyvern/forge/sdk/copilot/agent.py`)\n\nThe Copilot Agent serves as the central orchestration layer for AI-powered commands. It maintains conversation context, manages tool selection, and coordinates the execution flow between user instructions and browser actions.\n\n| Component | Responsibility |\n|-----------|----------------|\n| Context Manager | Maintains conversation history and state |\n| Tool Selector | Chooses appropriate tools based on intent |\n| Action Executor | Executes browser actions |\n| Response Formatter | Formats AI responses for user consumption |\n\n### Tool System (`skyvern/forge/sdk/copilot/tools.py`)\n\nSkyvern's tool system provides a comprehensive set of primitives for browser automation. Each tool is designed to handle specific interaction patterns while being composable for complex workflows.\n\n### Browser Page AI (`skyvern/library/skyvern_browser_page_ai.py`)\n\nThis module provides the foundational AI capabilities for understanding and interacting with web page content. It includes element identification, content extraction, and visual analysis capabilities.\n\n## Navigation and Interaction Commands\n\n### Element Interactions\n\n| Command | Purpose | Parameters |\n|---------|---------|------------|\n| `skyvern_click` | Click on identified elements | `element_selector`, `options` |\n| `skyvern_type` | Enter text into input fields | `text`, `element_selector` |\n| `skyvern_hover` | Hover over elements | `element_selector` |\n| `skyvern_scroll` | Scroll within page or elements | `direction`, `amount` |\n| `skyvern_select_option` | Select dropdown options | `value`, `element_selector` |\n| `skyvern_press_key` | Press keyboard keys | `key`, `modifiers` |\n| `skyvern_drag` | Drag and drop operations | `source`, `target` |\n| `skyvern_wait` | Wait for conditions | `condition`, `timeout` |\n| `skyvern_file_upload` | Upload files to elements | `file_path`, `element_selector` |\n\n### Browser Navigation\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_navigate` | Navigate to URLs |\n| `skyvern_go_back` | Navigate browser history back |\n| `skyvern_go_forward` | Navigate browser history forward |\n| `skyvern_reload` | Reload current page |\n\n### Tab and Frame Management\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_tab_new` | Open new browser tab |\n| `skyvern_tab_list` | List all open tabs |\n| `skyvern_tab_switch` | Switch to specific tab |\n| `skyvern_tab_close` | Close current or specified tab |\n| `skyvern_tab_wait_for_new` | Wait for new tab to open |\n| `skyvern_frame_list` | List all iframes on page |\n| `skyvern_frame_switch` | Switch to iframe context |\n\n## Data Extraction Commands\n\nSkyvern provides multiple methods for extracting structured data from web pages:\n\n### Structured Extraction\n\n| Command | Purpose | Output Format |\n|---------|---------|---------------|\n| `skyvern_extract` | Extract structured data | JSON with defined schema |\n| `skyvern_get_html` | Get page HTML | Raw HTML string |\n| `skyvern_get_value` | Get form element values | String or JSON |\n\n### Visual Extraction\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_screenshot` | Capture full or partial screenshots |\n| `skyvern_get_styles` | Get computed CSS styles |\n| `skyvern_find` | Find elements by visual similarity |\n\n### Content Analysis\n\nThe extraction system uses AI to understand page structure and extract relevant information based on user intent. It supports:\n\n- Dynamic schema generation based on natural language requests\n- Multi-field extraction from complex layouts\n- Nested data structures and repeating elements\n- Confidence scoring for extracted values\n\n## Validation and Verification\n\n### AI-Powered Validation\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_validate` | Validate element states or page conditions |\n| `skyvern_evaluate` | Run JavaScript for custom validation |\n| `skyvern_evaluate_async` | Execute async JavaScript operations |\n\nValidation commands use the LLM to interpret complex conditions that would be difficult to express in traditional selectors or XPath expressions.\n\n### Screenshot Validation\n\nThe screenshot command supports comparison against reference images and can detect visual regressions:\n\n```python\nresult = await skyvern.screenshot(\n    full_page=True,\n    compare_with=\"baseline.png\",\n    threshold=0.1  # 10% allowed difference\n)\n```\n\n## Network and Console Commands\n\n### Network Monitoring\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_network_requests` | List network requests |\n| `skyvern_network_request_detail` | Get request/response details |\n| `skyvern_network_route` | Intercept and modify requests |\n| `skyvern_network_unroute` | Remove request interception |\n| `skyvern_har_start` | Start HAR recording |\n| `skyvern_har_stop` | Stop and export HAR data |\n\n### Console Inspection\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_console_messages` | Retrieve console logs |\n| `skyvern_get_errors` | Get JavaScript errors |\n| `skyvern_handle_dialog` | Handle browser dialogs (alert, confirm, prompt) |\n\n## Authentication and Credentials\n\n### Login Commands\n\nSkyvern supports intelligent login flows with multiple authentication methods:\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_login` | Execute automated login |\n| `skyvern_credential_list` | List stored credentials |\n| `skyvern_credential_get` | Retrieve specific credentials |\n| `skyvern_credential_delete` | Remove stored credentials |\n\n### Credential Management\n\nThe credential system integrates with:\n\n- **Skyvern Vault**: Built-in secure storage\n- **Bitwarden**: Enterprise password management\n- **1Password**: Team password sharing\n- **Azure Key Vault**: Cloud credential storage\n\n### Two-Factor Authentication\n\nSkyvern handles 2FA/TOTP flows automatically:\n\n1. Detects OTP requirement during login\n2. Extracts codes from configured sources\n3. Supports magic link authentication\n4. Push notification handling via `skyvern/cli/skills/README.md`\n\n## State Management\n\n### Session State\n\n| Command | Purpose |\n|---------|---------||\n| `skyvern_state_save` | Save current browser state |\n| `skyvern_state_load` | Restore saved state |\n| `skyvern_get_session_storage` | Read session storage |\n| `skyvern_set_session_storage` | Write to session storage |\n| `skyvern_clear_session_storage` | Clear session storage |\n| `skyvern_clear_local_storage` | Clear local storage |\n\n### Clipboard Operations\n\n| Command | Purpose |\n|---------|---------||\n| `skyvern_clipboard_read` | Read from clipboard |\n| `skyvern_clipboard_write` | Write to clipboard |\n\n## Workflow Integration\n\nAI-Powered Commands can be orchestrated into complete workflows:\n\n```mermaid\ngraph LR\n    A[Navigation] --> B[Authentication]\n    B --> C[Data Extraction]\n    C --> D[Validation]\n    D --> E{Success?}\n    E -->|No| F[Retry Logic]\n    F --> B\n    E -->|Yes| G[Output Results]\n```\n\n### Workflow Commands\n\n| Command | Purpose |\n|---------|---------|\n| `skyvern_workflow_create` | Create new workflow |\n| `skyvern_workflow_list` | List available workflows |\n| `skyvern_workflow_get` | Get workflow details |\n| `skyvern_workflow_run` | Execute workflow |\n| `skyvern_workflow_cancel` | Cancel running workflow |\n\n## Agent Functions (`skyvern/forge/agent_functions.py`)\n\nThe agent functions module provides the core building blocks for AI-driven browser automation:\n\n### Function Categories\n\n1. **Navigation Functions**: Handle URL navigation, back/forward, and reload\n2. **Interaction Functions**: Click, type, hover, scroll, and element manipulation\n3. **Extraction Functions**: HTML retrieval, value extraction, screenshot capture\n4. **Validation Functions**: Element presence, state verification, screenshot comparison\n5. **State Functions**: Local/session storage, clipboard, authentication state\n\n### Function Interface\n\nAll agent functions follow a consistent interface:\n\n```python\nasync def agent_function(\n    task_id: str,\n    step_id: str,\n    **kwargs  # Function-specific parameters\n) -> AgentFunctionCallResult:\n    \"\"\"\n    Execute AI-powered browser action\n    \n    Returns:\n        AgentFunctionCallResult with:\n        - success: bool\n        - extracted_data: Optional[dict]\n        - screenshot: Optional[str] base64\n        - error: Optional[str]\n    \"\"\"\n```\n\n## Integration with Skills Package\n\nThe skills package (`skyvern/cli/skills/README.md`) bundles AI-powered commands for coding agents:\n\n### Available Skills\n\n| Skill | Description |\n|-------|-------------|\n| `qa` | QA test frontend changes in real browser |\n| `skyvern` | Full CLI reference for browser automation |\n| `smoke-test` | CI-oriented smoke testing |\n\n### QA Skill Workflow\n\n```mermaid\ngraph TD\n    A[git diff] --> B[Generate Tests]\n    B --> C[Run Against Dev Server]\n    C --> D[Report Results]\n    D --> E{Screenshots}\n    E --> F[Pass/Fail Status]\n```\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Purpose | Default |\n|----------|---------|---------|\n| `SKYVERN_TELEMETRY` | Enable/disable usage telemetry | `true` |\n| `SKYVERN_BASE_URL` | API endpoint for Skyvern Cloud | Local server |\n| `SKYVERN_API_KEY` | Authentication key | None |\n\n### Browser Configuration\n\n| Parameter | Purpose |\n|-----------|---------|\n| `BROWSER_TYPE` | Browser engine (chromium, firefox, webkit) |\n| `BROWSER_HEADLESS` | Run without visible UI |\n| `BROWSER_REMOTE_DEBUGGING_URL` | Connect to remote browser instance |\n\n## Best Practices\n\n### Effective Command Usage\n\n1. **Be Specific with Selectors**: Use precise element identifiers when available\n2. **Add Validation Steps**: Always validate state changes after actions\n3. **Handle Timing**: Use wait commands for dynamic content\n4. **Screenshot for Debugging**: Capture screenshots at key decision points\n\n### Error Handling\n\n```python\ntry:\n    result = await skyvern.act(\"click\", selector=\"#submit-button\")\n    if not result.success:\n        # Fallback or retry logic\n        await skyvern.validate(\"element_visible\", selector=\"#error-message\")\nexcept Exception as e:\n    await skyvern.screenshot()\n    raise\n```\n\n## Summary\n\nAI-Powered Commands in Skyvern transform browser automation from rigid scripting to intelligent, adaptive interactions. By combining natural language understanding with comprehensive browser control primitives, developers can create robust automation flows that handle complexity and edge cases gracefully.\n\nThe modular architecture allows commands to be used individually for simple tasks or combined into sophisticated workflows for enterprise-scale automation needs.\n\n---\n\n<a id='database-models'></a>\n\n## Database Models\n\n### 相关页面\n\n相关主题：[Artifact Storage](#artifact-storage), [Workflow System](#workflow-system)\n\n# Database Models\n\n## Overview\n\nSkyvern's database layer is built using SQLAlchemy ORM with Alembic for database migrations. The persistence layer is located in `skyvern/forge/sdk/db/` and provides the data models for all core entities including Tasks, Workflows, Workflow Runs, Browser Profiles, Credentials, and Schedules.\n\nThe database models define the schema for persistent storage of automation tasks, execution state, workflow definitions, and runtime data.\n\n## Architecture\n\n```mermaid\ngraph TD\n    A[API Layer] --> B[Repository Layer]\n    B --> C[SQLAlchemy Models]\n    C --> D[(PostgreSQL Database)]\n    B --> E[Task Repository]\n    B --> F[Workflow Repository]\n    B --> G[Workflow Run Repository]\n```\n\n## Core Entities\n\n### Task Model\n\nThe Task model represents an automation task with its configuration and execution state.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| task_id | String | Unique identifier (UUID) |\n| workflow_run_id | String (nullable) | Associated workflow run |\n| status | TaskStatus | Current task status |\n| request | JSON | Task request configuration |\n| navigation_goal | String | Navigation objective |\n| navigation_payload | JSON | Additional navigation parameters |\n| data_extraction_goal | String | Data extraction objective |\n| extracted_information_schema | JSON | Expected output schema |\n| created_at | DateTime | Creation timestamp |\n| modified_at | DateTime | Last modification timestamp |\n| organization_id | String | Organization ownership |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n### Workflow Model\n\nThe Workflow model stores workflow definitions and configurations.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| workflow_id | String | Unique workflow identifier |\n| title | String | Workflow name |\n| description | String | Workflow description |\n| workflow_definition | JSON | Workflow structure and steps |\n| webhook_callback_url | String (nullable) | Callback URL for completion |\n| organization_id | String | Organization ownership |\n| created_at | DateTime | Creation timestamp |\n| modified_at | DateTime | Last modification timestamp |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n### Workflow Run Model\n\nThe WorkflowRun model tracks individual executions of workflows.\n\n| Field | Type | Description |\n|-------|------|-------------|\n| workflow_run_id | String | Unique run identifier |\n| workflow_id | String | Parent workflow reference |\n| status | WorkflowRunStatus | Run status |\n| organization_id | String | Organization ownership |\n| started_at | DateTime | Execution start time |\n| completed_at | DateTime (nullable) | Execution completion time |\n| error | String (nullable) | Error message if failed |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n## Task Status Enum\n\nThe TaskStatus enum defines possible task states:\n\n```python\nclass TaskStatus(str, Enum):\n    created = \"created\"\n    pending = \"pending\"\n    running = \"running\"\n    completed = \"completed\"\n    failed = \"failed\"\n    cancelled = \"cancelled\"\n```\n\n资料来源：[skyvern/forge/sdk/db/enums.py]()\n\n### Task Status Flow\n\n```mermaid\nstateDiagram-v2\n    [*] --> created: Task Created\n    created --> pending: Queued for Execution\n    pending --> running: Agent Starts\n    running --> completed: Success\n    running --> failed: Error\n    running --> cancelled: User Cancelled\n    completed --> [*]\n    failed --> [*]\n    cancelled --> [*]\n```\n\n## Repository Pattern\n\nSkyvern uses a repository pattern to abstract database operations.\n\n### TaskRepository\n\nProvides CRUD operations for Task entities:\n\n- `create_task()` - Create new task record\n- `get_task()` - Retrieve task by ID\n- `update_task()` - Update task fields\n- `get_tasks_for_workflow_run()` - Get tasks for workflow execution\n- `get_tasks_by_organization()` - List organization tasks\n\n资料来源：[skyvern/forge/sdk/db/repositories/tasks.py]()\n\n### WorkflowRepository\n\nManages Workflow entity persistence:\n\n- `create_workflow()` - Create new workflow\n- `get_workflow()` - Retrieve workflow definition\n- `update_workflow()` - Update workflow\n- `get_workflows_by_organization()` - List organization workflows\n\n资料来源：[skyvern/forge/sdk/db/repositories/workflows.py]()\n\n### WorkflowRunRepository\n\nHandles WorkflowRun entity operations:\n\n- `create_workflow_run()` - Start new workflow execution\n- `get_workflow_run()` - Get run details\n- `update_workflow_run()` - Update run status\n- `get_workflow_runs_for_workflow()` - List runs for a workflow\n\n资料来源：[skyvern/forge/sdk/db/repositories/workflow_runs.py]()\n\n## Database Migrations\n\nAlembic manages database schema migrations in the `alembic/versions/` directory.\n\nMigration files follow the naming convention: `{version}_{description}.py`\n\nExample migration operations:\n- Adding new columns to existing tables\n- Creating new tables for additional entities\n- Index creation for query optimization\n- Data type modifications\n\n资料来源：[alembic/versions]()\n\n## Relationships\n\n```mermaid\nerDiagram\n    Organization ||--o{ Task : owns\n    Organization ||--o{ Workflow : owns\n    Organization ||--o{ WorkflowRun : owns\n    Workflow ||--o{ WorkflowRun : executes\n    WorkflowRun ||--o{ Task : contains\n```\n\n## Additional Models\n\nThe database layer also includes models for:\n\n| Model | Purpose |\n|-------|---------|\n| BrowserProfile | Browser configuration settings |\n| Credential | Authentication credentials storage |\n| Schedule | Cron-based task scheduling |\n| ScheduleRun | Scheduled execution tracking |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n## Usage Example\n\n```python\nfrom skyvern.forge.sdk.db.repositories.tasks import TaskRepository\nfrom skyvern.forge.sdk.db.models import Task\n\ntask_repo = TaskRepository()\nnew_task = await task_repo.create_task(\n    organization_id=\"org_123\",\n    navigation_goal=\"Search for flights\",\n    navigation_payload={\"origin\": \"SFO\", \"destination\": \"LAX\"}\n)\n```\n\n## Configuration\n\nDatabase connection is configured via environment variables:\n\n| Variable | Description |\n|----------|-------------|\n| DATABASE_URL | PostgreSQL connection string |\n| SKYVERN_ORG_ID | Default organization ID |\n\n资料来源：[skyvern/forge/sdk/db/models.py]()\n\n---\n\n<a id='artifact-storage'></a>\n\n## Artifact Storage\n\n### 相关页面\n\n相关主题：[Database Models](#database-models)\n\n<details>\n<summary>Relevant Source Files</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/artifact/storage/local.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/local.py)\n- [skyvern/forge/sdk/artifact/models.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/models.py)\n- [skyvern/forge/sdk/routes/agent_protocol.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/routes/agent_protocol.py)\n- [skyvern/forge/sdk/artifact/manager.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/manager.py)\n- [skyvern/forge/sdk/artifact/storage/factory.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/factory.py)\n- [skyvern/forge/sdk/artifact/storage/s3.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/s3.py)\n- [skyvern/forge/sdk/artifact/storage/azure.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/artifact/storage/azure.py)\n</details>\n\n# Artifact Storage\n\n## Overview\n\nArtifact Storage is a core system in Skyvern responsible for persisting and retrieving various artifacts generated during task execution and workflow runs. These artifacts include screenshots, HTML content, LLM prompts and responses, element trees, download files, and execution logs. The system provides a pluggable storage backend architecture that supports multiple storage providers while maintaining a consistent API.\n\nThe storage layer abstracts away the complexity of different storage backends (local filesystem, Amazon S3, Azure Blob Storage) from the rest of the application, allowing deployments to choose the most appropriate storage solution for their infrastructure requirements.\n\n## Architecture\n\n### High-Level Architecture\n\n```mermaid\ngraph TD\n    A[API Clients] --> B[Agent Protocol Routes]\n    B --> C[Artifact Manager]\n    C --> D[Storage Factory]\n    D --> E[Local Storage]\n    D --> F[S3 Storage]\n    D --> G[Azure Blob Storage]\n    \n    H[Artifact Models] --> C\n    C --> H\n    \n    I[Configuration] --> D\n```\n\n### Component Responsibilities\n\n| Component | File | Responsibility |\n|-----------|------|-----------------|\n| Artifact Manager | `artifact/manager.py` | Orchestrates artifact operations, lifecycle management |\n| Storage Factory | `artifact/storage/factory.py` | Creates appropriate storage backend based on configuration |\n| Local Storage | `artifact/storage/local.py` | Filesystem-based storage implementation |\n| S3 Storage | `artifact/storage/s3.py` | AWS S3/ S3-compatible storage implementation |\n| Azure Blob Storage | `artifact/storage/azure.py` | Azure Blob Storage implementation |\n| Artifact Models | `artifact/models.py` | Data models for artifacts and artifact types |\n\n## Artifact Types\n\nSkyvern distinguishes between multiple artifact types, each serving a specific purpose in documenting and debugging task execution.\n\n### Supported Artifact Types\n\n```python\nclass ArtifactType(str, Enum):\n    SCREENSHOT_LLM = \"screenshot_llm\"\n    SCREENSHOT_ACTION = \"screenshot_action\"\n    HTML_SCRAPE = \"html_scrape\"\n    ELEMENT_TREE = \"element_tree\"\n    ELEMENT_TREE_VISIBLE = \"element_tree_visible\"\n    LLM_PROMPT = \"llm_prompt\"\n    LLM_RESPONSE_PARSED = \"llm_response_parsed\"\n    DOWNLOAD = \"download\"\n    SKYVERN_LOG = \"skyvern_log\"\n```\n\n| Type | Description | Content-Type |\n|------|-------------|--------------|\n| `SCREENSHOT_LLM` | Annotated screenshots for LLM context | image/png |\n| `SCREENSHOT_ACTION` | Action screenshots captured during execution | image/png |\n| `HTML_SCRAPE` | Raw HTML content from web pages | text/html |\n| `ELEMENT_TREE` | Complete DOM element tree | application/json |\n| `ELEMENT_TREE_VISIBLE` | Filtered visible elements tree | application/json |\n| `LLM_PROMPT` | Prompt sent to LLM for decision making | text/plain |\n| `LLM_RESPONSE_PARSED` | Parsed LLM response with action list | application/json |\n| `DOWNLOAD` | Downloaded file content | application/octet-stream |\n| `SKYVERN_LOG` | Skyvern execution logs | text/plain |\n\n资料来源：[skyvern/forge/sdk/artifact/models.py]()\n\n## Data Models\n\n### Artifact Model\n\nThe `Artifact` model represents a single stored artifact with metadata:\n\n```python\nclass Artifact(BaseModel):\n    artifact_id: str\n    organization_id: str\n    run_id: str | None = None\n    task_id: str | None = None\n    step_id: str | None = None\n    workflow_run_id: str | None = None\n    workflow_block_execution_id: str | None = None\n    artifact_type: ArtifactType\n    uri: str\n    filename: str | None = None\n    content_type: str | None = None\n    metadata: dict[str, Any] | None = None\n    created_at: datetime\n    modified_at: datetime | None = None\n```\n\n资料来源：[skyvern/forge/sdk/artifact/models.py]()\n\n### Content-Type Mapping\n\n```python\n_ARTIFACT_CONTENT_TYPES: dict[ArtifactType, str] = {\n    ArtifactType.SCREENSHOT_LLM: \"image/png\",\n    ArtifactType.SCREENSHOT_ACTION: \"image/png\",\n    ArtifactType.HTML_SCRAPE: \"text/html\",\n    ArtifactType.ELEMENT_TREE: \"application/json\",\n    ArtifactType.ELEMENT_TREE_VISIBLE: \"application/json\",\n    ArtifactType.LLM_PROMPT: \"text/plain\",\n    ArtifactType.LLM_RESPONSE_PARSED: \"application/json\",\n    ArtifactType.DOWNLOAD: \"application/octet-stream\",\n    ArtifactType.SKYVERN_LOG: \"text/plain\",\n}\n```\n\n## Storage Backends\n\n### Local Storage\n\nThe local storage backend stores artifacts on the filesystem, ideal for development and single-instance deployments.\n\n```python\nclass LocalStorage(BaseStorage):\n    def __init__(self, artifact_path: str = settings.ARTIFACT_STORAGE_PATH) -> None:\n        self.artifact_path = artifact_path\n```\n\nKey implementation details:\n\n- **Path Construction**: Uses organization and artifact IDs to create hierarchical directory structures\n- **Windows Compatibility**: Replaces colons with dashes in timestamps and removes invalid filename characters on Windows systems\n- **SHA256 Verification**: Computes SHA256 checksums for stored files\n\n```python\ndef _safe_timestamp() -> str:\n    ts = datetime.utcnow().isoformat()\n    return ts.replace(\":\", \"-\") if WINDOWS else ts\n\ndef _windows_safe_filename(name: str) -> str:\n    if not WINDOWS:\n        return name\n    invalid = '<>:\"/\\\\|?*'\n    name = \"\".join(\"-\" if ch in invalid else ch for ch in name)\n    return name.rstrip(\" .\")\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/local.py]()\n\n### S3 Storage\n\nThe S3 backend provides scalable object storage suitable for production deployments.\n\n**Configuration Environment Variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `AWS_ACCESS_KEY_ID` | AWS access key for authentication |\n| `AWS_SECRET_ACCESS_KEY` | AWS secret key for authentication |\n| `AWS_REGION` | AWS region for bucket operations |\n| `S3_BUCKET_NAME` | Name of the S3 bucket |\n| `ARTIFACT_S3_ENDPOINT_URL` | Custom S3-compatible endpoint (optional) |\n\n资料来源：[skyvern/forge/sdk/artifact/storage/s3.py]()\n\n### Azure Blob Storage\n\nThe Azure backend integrates with Azure Blob Storage for cloud deployments.\n\n**Configuration Environment Variables:**\n\n| Variable | Description |\n|----------|-------------|\n| `AZURE_STORAGE_CONNECTION_STRING` | Azure storage connection string |\n| `AZURE_STORAGE_CONTAINER_NAME` | Container name for artifacts |\n\n资料来源：[skyvern/forge/sdk/artifact/storage/azure.py]()\n\n## Storage Factory\n\nThe storage factory pattern enables runtime selection of the appropriate storage backend:\n\n```mermaid\ngraph LR\n    A[Configuration] --> B[Storage Factory]\n    B --> C{Backend Type}\n    C -->|local| D[LocalStorage]\n    C -->|s3| E[S3Storage]\n    C -->|azure| F[AzureBlobStorage]\n```\n\n**Backend Selection Logic:**\n\n```python\ndef get_storage_backend() -> BaseStorage:\n    if settings.ARTIFACT_STORAGE_BACKEND == \"s3\":\n        return S3Storage()\n    elif settings.ARTIFACT_STORAGE_BACKEND == \"azure\":\n        return AzureBlobStorage()\n    else:\n        return LocalStorage()\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/factory.py]()\n\n## API Endpoints\n\n### Get Artifact Content\n\nRetrieves raw content of an artifact with support for range requests and HMAC-signed URLs.\n\n**Endpoint**: `GET /api/v1/artifacts/{artifact_id}/content`\n\n**Query Parameters:**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `sig` | string | HMAC signature for URL authentication |\n| `expiry` | string | Expiration timestamp for signed URLs |\n| `kid` | string | Key identifier for signature verification |\n| `artifact_name` | string | Optional filename override |\n| `artifact_type` | string | Expected artifact type |\n| `x-api-key` | string | API key authentication (header) |\n| `authorization` | string | Bearer token authentication (header) |\n\n**Responses:**\n\n| Status | Description |\n|--------|-------------|\n| 200 | Raw artifact content |\n| 206 | Partial content (Range request) |\n| 403 | Invalid or expired artifact URL |\n| 404 | Artifact not found |\n| 416 | Range not satisfiable |\n\n**Content-Disposition Behavior:**\n\n```python\nif artifact.artifact_type == ArtifactType.DOWNLOAD:\n    # Use attachment disposition for downloads\n    return media_type, _build_attachment_disposition(raw_name)\nreturn media_type, \"inline\"  # Inline for all other types\n```\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n### Range Request Support\n\nThe artifact content endpoint supports HTTP range requests for partial content retrieval:\n\n```python\ndef _parse_range_header(range_header: str | None, content_length: int) -> tuple[int, int] | None:\n    \"\"\"Return one satisfiable byte range, _RANGE_UNSATISFIABLE when unsatisfiable, or None when ignored.\"\"\"\n    if not range_header:\n        return None\n    # Parses \"bytes=start-end\" format\n    # Validates ASCII digits, rejects negatives\n```\n\n**Range Header Format:** `bytes=start-end` (RFC 7233 compliant)\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n## HMAC URL Signing\n\nArtifact URLs can be signed using HMAC for time-limited access without requiring API key authentication:\n\n```mermaid\nsequenceDiagram\n    Client->>Server: Request with sig, expiry, kid\n    Server->>Server: Validate HMAC signature\n    Server->>Storage: Fetch artifact\n    Storage-->>Server: Artifact content\n    Server-->>Client: Signed URL response\n```\n\n**Signing Requirements:**\n\n1. HMAC keyring must be configured: `ARTIFACT_CONTENT_HMAC_KEYRING`\n2. URL must include valid `sig`, `expiry`, and `kid` query parameters\n3. Signature is verified before returning artifact content\n\n资料来源：[skyvern/forge/sdk/routes/agent_protocol.py]()\n\n## Configuration Options\n\n### Storage Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `ARTIFACT_STORAGE_BACKEND` | `local` | Storage backend type (local/s3/azure) |\n| `ARTIFACT_STORAGE_PATH` | `/tmp/skyvern/artifacts` | Local storage path |\n| `ARTIFACT_CONTENT_HMAC_KEYRING` | - | HMAC keyring for signed URLs |\n\n### S3 Configuration\n\n| Environment Variable | Description |\n|---------------------|-------------|\n| `AWS_ACCESS_KEY_ID` | AWS credentials |\n| `AWS_SECRET_ACCESS_KEY` | AWS credentials |\n| `AWS_REGION` | Region setting |\n| `S3_BUCKET_NAME` | Target bucket |\n| `ARTIFACT_S3_ENDPOINT_URL` | S3-compatible endpoint |\n\n### Azure Configuration\n\n| Environment Variable | Description |\n|---------------------|-------------|\n| `AZURE_STORAGE_CONNECTION_STRING` | Connection string |\n| `AZURE_STORAGE_CONTAINER_NAME` | Container name |\n\n## File Extension Mapping\n\nThe storage layer maintains a mapping from artifact types to file extensions for consistent naming:\n\n```python\nFILE_EXTENTSION_MAP: dict[ArtifactType, str] = {\n    ArtifactType.SCREENSHOT_LLM: \".png\",\n    ArtifactType.SCREENSHOT_ACTION: \".png\",\n    ArtifactType.HTML_SCRAPE: \".html\",\n    ArtifactType.ELEMENT_TREE: \".json\",\n    ArtifactType.ELEMENT_TREE_VISIBLE: \".json\",\n    ArtifactType.LLM_PROMPT: \".txt\",\n    ArtifactType.LLM_RESPONSE_PARSED: \".json\",\n    ArtifactType.DOWNLOAD: \".bin\",\n    ArtifactType.SKYVERN_LOG: \".log\",\n}\n```\n\n资料来源：[skyvern/forge/sdk/artifact/storage/base.py]()\n\n## Usage Patterns\n\n### Storing an Artifact\n\n```python\n# Via Artifact Manager\nartifact = await artifact_manager.create_artifact(\n    organization_id=org_id,\n    artifact_type=ArtifactType.SCREENSHOT_LLM,\n    content=image_bytes,\n    task_id=task_id,\n    step_id=step_id,\n)\n```\n\n### Retrieving an Artifact\n\n```python\n# Get artifact metadata\nartifact = await artifact_manager.get_artifact(artifact_id)\n\n# Get presigned or signed URL\nurl = await artifact_manager.get_artifact_url(artifact)\n```\n\n### Range Request for Large Files\n\n```python\nheaders = {\"Range\": \"bytes=0-1023\"}\nresponse = await client.get(f\"/api/v1/artifacts/{id}/content\", headers=headers)\n```\n\n## Security Considerations\n\n1. **Signed URLs**: HMAC-signed URLs provide time-limited access without exposing storage credentials\n2. **Attachment Disposition**: Download artifacts use `Content-Disposition: attachment` to prevent browser rendering of potentially malicious content\n3. **Organization Isolation**: Artifacts are namespaced by organization ID to prevent cross-tenant access\n4. **Content-Type Validation**: Responses set appropriate content-types based on artifact type\n\n## Frontend Integration\n\nThe frontend displays artifacts through dedicated UI components:\n\n| Component | Location | Purpose |\n|-----------|----------|---------|\n| `StepArtifacts.tsx` | `routes/tasks/detail/` | Task artifact viewer with tabbed interface |\n| `Artifact` component | Shared | Renders different artifact types |\n| `ZoomableImage` | Shared | Displays screenshots with zoom capability |\n\nThe artifact viewer supports multiple tabs for different artifact types:\n\n- Info\n- Annotated Screenshots\n- Action Screenshots\n- HTML Element Tree\n- Element Tree\n- Prompt\n- Action List\n- HTML (Raw)\n\n资料来源：[skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx]()\n\n---\n\n<a id='credential-management'></a>\n\n## Credential Management\n\n### 相关页面\n\n相关主题：[Browser Automation Engine](#browser-automation), [Workflow System](#workflow-system)\n\n<details>\n<summary>Related Source Files</summary>\n\nThe following source files were used to generate this documentation page:\n\n- [skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx)\n- [skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx)\n- [skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx)\n- [skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx)\n- [skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx)\n- [skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx)\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n</details>\n\n# Credential Management\n\n## Overview\n\nCredential Management in Skyvern provides a secure, unified system for storing, retrieving, and managing authentication credentials across tasks and workflows. Skyvern supports multiple credential vault types, enabling integration with external password managers and custom credential services while maintaining a native internal vault.\n\nCredentials in Skyvern can be of three primary types:\n\n| Credential Type | Description |\n|-----------------|-------------|\n| `password` | Username/password credential pairs for basic authentication |\n| `credit_card` | Credit card information for payment forms |\n| `secret` | Generic secret values for API keys, tokens, and other sensitive data |\n\n资料来源：[skyvern-frontend/src/routes/workflows/components/CredentialSelector.tsx:1-100]()\n\n## Architecture\n\nSkyvern's credential management system is designed with a multi-vault architecture that allows seamless integration with various credential providers while maintaining a consistent internal API.\n\n```mermaid\ngraph TD\n    subgraph \"Client Layer\"\n        UI[Web UI]\n        API[API Client]\n        MCP[MCP Tools]\n    end\n    \n    subgraph \"Credential Services\"\n        SkyvernVault[Skyvern Internal Vault]\n        Bitwarden[Bitwarden Service]\n        Azure[Azure Key Vault Service]\n        Custom[Custom Credential Service]\n    end\n    \n    subgraph \"Storage Layer\"\n        DB[(Database)]\n    end\n    \n    UI --> API\n    MCP --> API\n    API --> SkyvernVault\n    API --> Bitwarden\n    API --> Azure\n    API --> Custom\n    SkyvernVault --> DB\n```\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:1-50]()\n\n## Credential Vault Types\n\n### Skyvern Internal Vault\n\nThe default vault type stores credentials directly in Skyvern's database. This is the simplest option for getting started and requires no external configuration.\n\n### Bitwarden Integration\n\nSkyvern can integrate with Bitwarden to leverage existing credentials stored in your Bitwarden vault. This integration supports:\n- Reading existing credentials from Bitwarden\n- Writing new credentials back to Bitwarden\n- Automatic 2FA/TOTP handling\n\n资料来源：[skyvern/cli/mcp_tools/README.md:1-50]()\n\n### Azure Key Vault\n\nFor enterprise environments, Skyvern supports Azure Key Vault integration, allowing credentials stored in Azure's secure key management system to be used in tasks and workflows.\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:1-80]()\n\n### Custom Credential Service\n\nOrganizations with proprietary credential management systems can implement a custom credential service. This requires:\n\n1. **API Configuration**: Set up API base URL and authentication token\n2. **Service Implementation**: Implement the credential service interface\n3. **Vault Type Selection**: Configure parameters to use `vault_type=\"custom\"`\n\nThe custom credential service configuration includes:\n- `api_base_url`: The base URL of your credential service API\n- `api_token`: Authentication token for the service\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:60-75]()\n\n## Using Credentials in Workflows\n\n### Credential Parameter Types\n\nCredentials can be referenced as workflow parameters, allowing secure injection of sensitive data into task execution. The system supports the following parameter types:\n\n| Parameter Type | Usage | Example Reference |\n|----------------|-------|-------------------|\n| `credential` | Credential objects from vault | `{{ my_credential.username }}` |\n| `context` | Context parameters from previous steps | `{{ context.source_param }}` |\n| `custom` | Custom credential service credentials | Uses vault_type selection |\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx:40-65]()\n\n### Credential Reference Syntax\n\nWithin HTTP Request nodes, credentials are referenced using template syntax:\n\n```\nPassword credential: {{ my_credential.username }} / {{ my_credential.password }}\nSecret credential: {{ my_secret.secret_value }}\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/nodes/HttpRequestNode/HttpRequestNode.tsx:1-50]()\n\n### Credential Parameter Validation\n\nWhen running workflows, credential parameters are validated to ensure:\n\n1. **Required Fields**: Boolean and credential parameters must have values\n2. **JSON Validation**: JSON-type credential parameters must parse correctly\n3. **Missing Credential Detection**: The system detects orphaned credential parameters where the referenced credential no longer exists in the vault\n\n```typescript\n// Validation example from workflow execution\nif (parameter.workflow_parameter_type === \"credential\") {\n    if (value === null || value === undefined) {\n        return \"This field is required\";\n    }\n}\n```\n\n资料来源：[skyvern-frontend/src/routes/workflows/RunWorkflowForm.tsx:1-100]()\n\n### Orphaned Credential Detection\n\nThe system provides warnings when workflow parameters reference credentials that no longer exist in the vault:\n\n```\n⚠️ my_credential (missing credential)\n```\n\nThis warning helps identify workflows that need to be updated after credential deletion or vault changes.\n\n资料来源：[skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/ParametersMultiSelect.tsx:1-50]()\n\n## Two-Factor Authentication (TOTP)\n\nSkyvern supports automated Two-Factor Authentication through TOTP (Time-based One-Time Password) handling. This is critical for automating workflows that require 2FA verification.\n\n### Push TOTP Code Flow\n\n1. **Initiate Push**: When a task encounters a TOTP challenge, Skyvern can push a verification code to the user\n2. **Code Entry**: User receives the verification message (SMS, email, or authenticator app)\n3. **Code Extraction**: Skyvern extracts the code from the verification message\n4. **Attachment**: The code is automatically attached to the relevant workflow run\n\n```typescript\ninterface TOTPConfig {\n    totp_identifier: string;  // Email or phone for receiving codes\n    totp_url?: string;        // Direct verification URL if available\n    totp_type: 'totp' | 'magic_link';\n}\n```\n\n资料来源：[skyvern-frontend/src/routes/credentials/CredentialsTotpTab.tsx:1-80]()\n\n### TOTP Parameter Filtering\n\nThe credential management interface supports filtering TOTP credentials by:\n- **Identifier**: Filter by email or phone number\n- **OTP Type**: Filter by numeric code or magic link\n\n## MCP Integration\n\nSkyvern's Model Context Protocol (MCP) tools provide programmatic access to credential management:\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.skyvern.com/mcp/\",\n      \"headers\": { \"x-api-key\": \"YOUR_API_KEY\" }\n    }\n  }\n}\n```\n\n### Available MCP Credential Tools\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_credential_list` | List all credentials in the vault |\n| `skyvern_credential_get` | Retrieve a specific credential |\n| `skyvern_credential_delete` | Remove a credential from the vault |\n| `skyvern_login` | Authenticate using stored credentials |\n\nSupported vault integrations: Skyvern vault, Bitwarden, 1Password, and Azure Key Vault with automatic 2FA/TOTP support.\n\n资料来源：[integrations/mcp/README.md:1-80]()\n\n## Security Considerations\n\n### Browser Tunneling Security\n\nWhen exposing Skyvern through browser tunneling, ensure API key authentication is enabled:\n\n> **WARNING**: Always use `--api-key` when exposing your browser via a tunnel. Without it, anyone with the URL has full control of your browser.\n\n资料来源：[README.md:1-100]()\n\n### Credential Masking\n\nSensitive credential data is masked in UI displays:\n- Tokens longer than 8 characters are truncated: `sk_live_xxx...`\n- Full values are never displayed in logs or error messages\n\n资料来源：[skyvern-frontend/src/components/CustomCredentialServiceConfigForm.tsx:20-35]()\n\n### External Vault Security\n\nWhen using external credential services:\n1. Store API tokens securely (environment variables preferred)\n2. Use HTTPS for all credential service communications\n3. Implement IP allowlisting where supported\n4. Rotate credentials regularly\n\n## Configuration Reference\n\n### Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `SKYVERN_API_KEY` | API key for Skyvern authentication |\n| `SKYVERN_BASE_URL` | Base URL for self-hosted deployments |\n| `SKYVERN_TELEMETRY` | Set to `false` to opt out of telemetry |\n\n### Credential Service Configuration\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `api_base_url` | Yes (custom) | Base URL of the credential service |\n| `api_token` | Yes (custom) | Authentication token |\n| `token_type` | No | Type of authentication token |\n| `tested_url` | No | URL used to test credential validity |\n\n## Best Practices\n\n1. **Use Type-Specific Credentials**: Store credentials with appropriate types (password, credit_card, secret) for better organization and retrieval\n2. **Implement Custom Services for Enterprise**: For large-scale deployments, implement a custom credential service for centralized management\n3. **Enable TOTP Automation**: Configure TOTP handling for automated 2FA workflows\n4. **Monitor Orphaned Parameters**: Regularly check for and clean up orphaned credential references\n5. **Rotate API Tokens**: Periodically rotate API tokens for custom credential services\n6. **Leverage Bitwarden for Existing Teams**: If your team already uses Bitwarden, integrate it to avoid credential duplication\n\n---\n\n<a id='llm-providers'></a>\n\n## LLM Provider Configuration\n\n### 相关页面\n\n相关主题：[AI-Powered Commands](#ai-commands)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [skyvern/forge/sdk/api/llm/api_handler.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/api_handler.py)\n- [skyvern/forge/sdk/api/llm/models.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/models.py)\n- [skyvern/forge/sdk/api/llm/litellm_transport.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/sdk/api/llm/litellm_transport.py)\n- [skyvern/forge/prompts.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/forge/prompts.py)\n- [skyvern/config.py](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/config.py)\n</details>\n\n# LLM Provider Configuration\n\nSkyvern leverages Large Language Models (LLMs) as the core intelligence engine for AI-powered browser automation. The LLM Provider Configuration system provides a flexible abstraction layer that enables Skyvern to connect with multiple LLM providers including OpenAI, Anthropic, Azure OpenAI, AWS Bedrock, and Google Gemini. This architecture decouples the automation logic from specific LLM implementations, allowing users to select their preferred provider without modifying core application code.\n\n## Supported LLM Providers\n\nSkyvern supports a comprehensive range of LLM providers to accommodate diverse enterprise requirements and budget considerations. The framework utilizes litellm as a unified transport layer, which normalizes API interactions across different providers through a consistent interface.\n\n| Provider | Supported Models |\n|----------|-----------------|\n| OpenAI | GPT-5.5, GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini |\n| Anthropic | Claude 4.7 Opus, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Haiku, Sonnet, Opus) |\n| Azure OpenAI | Any GPT models deployed to your Azure subscription |\n| AWS Bedrock | Claude 4.7, Claude 4.6 (Sonnet, Opus), Claude 4.5 (Sonnet, Opus) |\n| Google Gemini | Gemini 3.1 Pro, Gemini 3 Flash |\n\n资料来源：[README.md:1-20]()\n\n### Provider Selection Criteria\n\nWhen selecting an LLM provider for Skyvern deployments, consider the following factors. OpenAI models offer strong general-purpose performance with the broadest model availability. Anthropic's Claude series excels in instruction following and extended reasoning tasks, making it particularly suitable for complex multi-step browser automation workflows. Azure OpenAI provides enterprise-grade security and compliance features with the ability to use custom model deployments. AWS Bedrock offers seamless integration with other AWS services and HIPAA-compliant deployments. Google Gemini provides competitive pricing with strong multimodal capabilities.\n\n## Configuration Architecture\n\nThe LLM Provider Configuration system follows a layered architecture that separates provider selection, credential management, and runtime dispatch. This design enables runtime provider switching and supports fallback mechanisms for production deployments.\n\n```mermaid\ngraph TD\n    A[Task Request] --> B[LLM API Handler]\n    B --> C{LLM Provider Selection}\n    C -->|OpenAI| D[OpenAI Transport]\n    C -->|Anthropic| E[Anthropic Transport]\n    C -->|Azure| F[Azure OpenAI Transport]\n    C -->|AWS| G[Bedrock Transport]\n    C -->|Gemini| H[Gemini Transport]\n    D --> I[litellm Unified Interface]\n    E --> I\n    F --> I\n    G --> I\n    H --> I\n    I --> J[Provider API Endpoint]\n```\n\n### Core Configuration Components\n\nThe configuration system comprises several interconnected components that manage provider selection, authentication, and request handling. The API handler serves as the primary entry point for LLM interactions, coordinating between the task execution engine and the underlying transport layer. Models define the data structures for requests, responses, and provider-specific configurations. The litellm transport provides the unified interface that normalizes differences between provider APIs.\n\n## Environment Configuration\n\n### Basic Setup\n\nLLM provider credentials are configured through environment variables in the `.env` file. After running `skyvern quickstart` or `skyvern init`, the setup wizard will guide you through provider selection and credential configuration.\n\n```bash\n# Required for OpenAI\nOPENAI_API_KEY=sk-...\n\n# Required for Anthropic\nANTHROPIC_API_KEY=sk-ant-...\n\n# Required for Azure OpenAI\nAZURE_OPENAI_API_KEY=your-azure-key\nAZURE_OPENAI_BASE_URL=https://your-resource.openai.azure.com\n\n# Required for AWS Bedrock\nAWS_ACCESS_KEY_ID=your-access-key\nAWS_SECRET_ACCESS_KEY=your-secret-key\nAWS_REGION=us-east-1\n\n# Required for Gemini\nGOOGLE_GENERATIVE_AI_API_KEY=your-gemini-key\n```\n\n资料来源：[README.md:1-50]()\n\n### Provider-Specific Configuration\n\n#### OpenAI Configuration\n\nFor OpenAI providers, Skyvern supports both standard OpenAI endpoints and custom base URLs for proxy or gateway scenarios. Model selection can be specified at the task level or configured as the default in the environment.\n\n#### Anthropic Configuration\n\nAnthropic Claude models require the `ANTHROPIC_API_KEY` environment variable. The setup wizard can automatically configure this during initialization. Claude models are particularly well-suited for Skyvern's browser automation tasks due to their strong instruction-following capabilities.\n\n#### Azure OpenAI Configuration\n\nAzure OpenAI deployments require additional configuration for deployment-specific endpoints. The `AZURE_OPENAI_BASE_URL` should point to your Azure OpenAI resource endpoint, and the system supports any GPT models deployed to your Azure subscription.\n\n#### AWS Bedrock Configuration\n\nAWS Bedrock integration uses standard AWS credential chain resolution, including environment variables, IAM roles, and AWS profile configurations. The `AWS_REGION` variable determines which AWS region your Bedrock endpoints are hosted in.\n\n#### Google Gemini Configuration\n\nGemini models are configured using the `GOOGLE_GENERATIVE_AI_API_KEY`. The framework supports both Gemini 3.1 Pro for complex reasoning tasks and Gemini 3 Flash for faster, cost-effective operations.\n\n## Provider Selection in Code\n\nWhen using Skyvern programmatically through the SDK, you can specify the LLM provider at task creation time. The framework will use the configured credentials for the selected provider.\n\n```python\nfrom skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your-api-key\")\ntask = await skyvern.run_task(\n    prompt=\"Find the top post on hackernews today\",\n)\n```\n\n资料来源：[README.md:50-80]()\n\n### Cloud vs Local Configuration\n\nSkyvern supports two operational modes for LLM configuration. In Skyvern Cloud mode, the platform manages provider configuration and billing. In local mode, you configure your own LLM provider credentials, and Skyvern routes requests through your specified provider.\n\nFor local deployments, the setup wizard configures credentials automatically during initialization. For custom configurations, you can manually edit the `.env` file with your provider-specific credentials.\n\n## Advanced Configuration Options\n\n### Custom Endpoint Configuration\n\nFor enterprise deployments requiring proxy servers or custom API gateways, Skyvern supports base URL customization through provider-specific environment variables. This enables integration with internal LLM deployments, specialized inference endpoints, or regional API endpoints.\n\n### Multi-Provider Fallback\n\nProduction deployments can implement multi-provider fallback strategies by configuring multiple provider credentials. When the primary provider is unavailable, Skyvern can automatically route requests to backup providers based on priority configuration.\n\n### Model Selection Per Task\n\nIndividual tasks can specify model preferences that override the default configuration. This enables cost optimization by using lighter models for simple tasks while reserving more capable models for complex automation sequences.\n\n## Credential Security\n\nCredential management follows security best practices by storing sensitive information exclusively in environment variables. The `.env` file should never be committed to version control. Skyvern's initialization process creates the `.env` file from `.env.example` if it does not exist, ensuring template credentials are never exposed.\n\n资料来源：[README.md:1-30]()\n\n## Troubleshooting\n\nCommon LLM provider configuration issues include incorrect API keys, network connectivity problems, and quota exhaustion. The setup wizard validates credentials during configuration to catch most issues early. For runtime errors, Skyvern provides detailed error messages that identify the specific provider and error type.\n\nIf you encounter authentication errors, verify that your API keys are correctly set in the `.env` file and that the corresponding provider account has sufficient credits or quota available.\n\n---\n\n<a id='mcp-integration'></a>\n\n## Model Context Protocol (MCP) Integration\n\n### 相关页面\n\n相关主题：[LLM Provider Configuration](#llm-providers)\n\n<details>\n<summary>Relevant Source Files</summary>\n\n以下源码文件用于生成本页说明：\n\n- [integrations/mcp/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/integrations/mcp/README.md)\n- [skyvern/cli/mcp_tools/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcp_tools/README.md)\n- [skyvern/cli/mcpb/claude_desktop/README.md](https://github.com/Skyvern-AI/skyvern/blob/main/skyvern/cli/mcpb/claude_desktop/README.md)\n</details>\n\n# Model Context Protocol (MCP) Integration\n\n## Overview\n\nSkyvern's Model Context Protocol (MCP) integration enables AI applications to connect to Skyvern's browser automation capabilities. This integration allows AI-powered applications to perform browser-based tasks such as filling out forms, downloading files, researching information on the web, and executing complex web automation workflows through natural language commands.\n\nThe MCP server implementation serves as a bridge between AI applications and Skyvern's browser engine, providing a standardized interface for browser automation tasks.\n\n资料来源：[integrations/mcp/README.md]()\n\n## Architecture\n\nThe MCP integration supports multiple deployment models and connection methods:\n\n### Connection Modes\n\n| Mode | Description | Use Case |\n|------|-------------|----------|\n| **Skyvern Cloud** | Connect to managed cloud service | Production without self-hosting |\n| **Local Skyvern Server** | Self-hosted deployment | Development, privacy, custom infrastructure |\n\n### MCP Client Configuration\n\n#### Cloud Configuration (streamable-http)\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.skyvern.com/mcp/\",\n      \"headers\": { \"x-api-key\": \"YOUR_API_KEY\" }\n    }\n  }\n}\n```\n\n#### Local Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"skyvern\": {\n      \"command\": \"python3\",\n      \"args\": [\"-m\", \"skyvern\", \"run\", \"mcp\"],\n      \"env\": {\n        \"SKYVERN_BASE_URL\": \"http://localhost:8000\",\n        \"SKYVERN_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Available MCP Tools\n\n### Browser Session Management\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_browser_session_create` | Create a new browser session |\n| `skyvern_browser_session_close` | Close an existing browser session |\n| `skyvern_browser_session_list` | List all active browser sessions |\n| `skyvern_browser_session_get` | Get details of a specific session |\n| `skyvern_browser_session_connect` | Connect to an existing session |\n\n### Browser Actions\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_act` | Execute natural language actions |\n| `skyvern_navigate` | Navigate to a URL |\n| `skyvern_click` | Click on an element |\n| `skyvern_type` | Type text into a field |\n| `skyvern_hover` | Hover over an element |\n| `skyvern_scroll` | Scroll the page |\n| `skyvern_select_option` | Select an option from dropdown |\n| `skyvern_press_key` | Press a keyboard key |\n| `skyvern_drag` | Drag an element |\n| `skyvern_file_upload` | Upload a file |\n| `skyvern_wait` | Wait for page to load |\n\n### Data Extraction & Validation\n\n| Tool | Description |\n|------|-------------|\n| `skyvern_extract` | Extract structured JSON data from page |\n| `skyvern_screenshot` | Take a screenshot |\n| `skyvern_find` | Find elements on the page |\n| `skyvern_validate` | Validate page content |\n| `skyvern_evaluate` | Run JavaScript code |\n| `skyvern_get_html` | Get page HTML |\n\n资料来源：[skyvern/cli/mcp_tools/README.md]()\n\n## Quick Start Guide\n\n### Prerequisites\n\n> **REQUIREMENT**: Skyvern only runs in Python 3.11 environment today\n\n### Installation Steps\n\n1. **Install Skyvern**\n   ```bash\n   pip install skyvern\n   ```\n\n2. **Configure Skyvern**\n   Run the setup wizard which will guide you through the configuration process:\n   ```bash\n   skyvern init\n   ```\n   You can connect to either Skyvern Cloud or a local version of Skyvern.\n\n3. **Launch Local Server (Optional)**\n   Only required in local mode:\n   ```bash\n   skyvern run server\n   ```\n\n资料来源：[integrations/mcp/README.md]()\n\n## Claude Desktop Integration\n\nSkyvern provides a downloadable `.mcpb` bundle that installs Skyvern Cloud into Claude Desktop without requiring the user to install Node.js.\n\n### Building the MCP Bundle\n\n```bash\n./scripts/package-mcpb.sh 1.0.23\n```\n\n### Publishing to Releases\n\n```bash\n./scripts/package-mcpb.sh 1.0.23 skyvern-claude-desktop.mcpb \\\n  skyvern/cli/mcpb/releases/skyvern-claude-desktop.mcpb\n```\n\n资料来源：[skyvern/cli/mcpb/claude_desktop/README.md]()\n\n## Usage Patterns\n\n### Natural Language Actions\n\nThe `skyvern_act` tool allows you to describe actions in natural language, which Skyvern's AI interprets and executes:\n\n```\n\"Click the login button\"\n\"Fill in the email field with user@example.com\"\n\"Select 'Premium' from the subscription dropdown\"\n```\n\n### Data Extraction\n\nUse `skyvern_extract` to extract structured JSON data from web pages by describing the data you need:\n\n```\n\"Extract all product names, prices, and ratings\"\n```\n\n### Screenshot and Validation Loops\n\nFor debugging and verification, use screenshot + validate loops:\n\n```python\n# Take screenshot\nscreenshot = skyvern_screenshot()\n\n# Validate content\nvalidation = skyvern_validate(\"The login form is visible\")\n\n# If validation fails, take another screenshot for debugging\nif not validation.success:\n    screenshot = skyvern_screenshot()\n```\n\n## Integration with AI Applications\n\nThe MCP integration enables AI applications to:\n\n- **Automate form filling**: Submit complex forms with AI-guided input\n- **Research web content**: Extract structured data from multiple sources\n- **Download files**: Navigate to and download files from websites\n- **Execute workflows**: Run browser automation workflows\n- **Handle 2FA flows**: Manage TOTP (Time-based One-Time Password) authentication\n\n## Credential Management\n\nSkyvern's MCP tools support secure credential management for login flows:\n\n| Credential Type | Usage Pattern |\n|-----------------|---------------|\n| **Password** | `{{ my_credential.username }}` / `{{ my_credential.password }}` |\n| **Secret** | `{{ my_secret.secret_value }}` |\n| **Custom Service** | Configure via CustomCredentialServiceConfigForm |\n\n## API Reference\n\n### HTTP Request Block Tips\n\nWhen using HTTP request blocks with MCP tools:\n\n- Use \"Import cURL\" to quickly convert API documentation examples\n- Use \"Quick Headers\" to add common authentication and content headers\n- The request will return response data including status, headers, and body\n- Reference response data in later blocks with parameters\n\n### Response Data\n\nAll MCP tool responses include:\n\n| Field | Description |\n|-------|-------------|\n| `status` | HTTP status code |\n| `headers` | Response headers |\n| `body` | Response body content |\n\n## Workflow Integration\n\nMCP tools can be integrated into Skyvern workflows for:\n\n- **Browser automation blocks**: Execute MCP actions as part of workflow steps\n- **Conditional logic**: Use validation results to control workflow branching\n- **Data extraction**: Feed extracted data into subsequent workflow blocks\n- **Scheduled execution**: Run MCP-powered workflows on cron schedules\n\n## Best Practices\n\n1. **Session Management**: Always close browser sessions when done to free resources\n2. **Error Handling**: Use validation tools to check page state before proceeding\n3. **Screenshot Debugging**: Take screenshots at key points for debugging failed automations\n4. **Credential Security**: Use environment variables and secure credential storage\n5. **Rate Limiting**: Be mindful of API rate limits when making frequent requests\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：Skyvern-AI/skyvern\n\n摘要：发现 23 个潜在踩坑项，其中 1 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：what ensures it’s the correct one in that context?。\n\n## 1. 安全/权限坑 · 来源证据：what ensures it’s the correct one in that context?\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：what ensures it’s the correct one in that context?\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 2. 安装坑 · 来源证据：Release v1.0.29\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Release v1.0.29\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 3. 安装坑 · 来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Task Execution Performance: Seeking guidance on optimizing execution speed\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 4. 安装坑 · 来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 5. 配置坑 · 来源证据：Performance bottleneck: High latency for simple form-filling workflows\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Performance bottleneck: High latency for simple form-filling workflows\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 来源证据：Release v1.0.34\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.34\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 8. 维护坑 · 来源证据：Release v1.0.35\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.35\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 9. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing\n\n## 10. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：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.\n\n## 12. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 13. 安全/权限坑 · 来源证据：Clarification on the Custom credential documentation on the Delete API with empty body\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Clarification on the Custom credential documentation on the Delete API with empty body\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a5164e5767dc4b618ce1c862ed440eaa | https://github.com/Skyvern-AI/skyvern/issues/4256 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 14. 安全/权限坑 · 来源证据：GROQ error\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：GROQ error\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_fb8dab5ab6224386a6b341234a8e90be | https://github.com/Skyvern-AI/skyvern/issues/4366 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：Release v1.0.27\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.27\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_23488c9e7f354979bdbf8e9554b4b647 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.27 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：Release v1.0.30\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.30\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6929e0e36e1549e9bd95f29d1d4cfbdf | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.30 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 17. 安全/权限坑 · 来源证据：Release v1.0.31\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.31\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_40ca78dbdbe141f383c8d202f08db28b | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.31 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 18. 安全/权限坑 · 来源证据：Release v1.0.32\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.32\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4eaa09d9a74f49efb0fb81c9bdebe6a3 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：Release v1.0.33\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.33\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ba7d530f080e4c88ad47ac26ba2781a7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 20. 安全/权限坑 · 来源证据：Release v1.0.36\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.36\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_236e050a3837462692b739322738a7a2 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 21. 安全/权限坑 · 来源证据：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b56e85161a3b4b7682c8ab13127be8d0 | https://github.com/Skyvern-AI/skyvern/issues/4390 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 22. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | issue_or_pr_quality=unknown\n\n## 23. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | release_recency=unknown\n\n<!-- canonical_name: Skyvern-AI/skyvern; human_manual_source: deepwiki_human_wiki -->\n",
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "Human Manual / 人类版说明书"
    },
    "pitfall_log": {
      "asset_id": "pitfall_log",
      "filename": "PITFALL_LOG.md",
      "markdown": "# Pitfall Log / 踩坑日志\n\n项目：Skyvern-AI/skyvern\n\n摘要：发现 23 个潜在踩坑项，其中 1 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：what ensures it’s the correct one in that context?。\n\n## 1. 安全/权限坑 · 来源证据：what ensures it’s the correct one in that context?\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：what ensures it’s the correct one in that context?\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_77591d02b4fa4efdb89fba55a9a7f08a | https://github.com/Skyvern-AI/skyvern/issues/5637 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 2. 安装坑 · 来源证据：Release v1.0.29\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Release v1.0.29\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_d8e67eb179f5406fb5af75a063639216 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.29 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 3. 安装坑 · 来源证据：Task Execution Performance: Seeking guidance on optimizing execution speed\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：Task Execution Performance: Seeking guidance on optimizing execution speed\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_7f47a5abded54abfb766032115bfa71c | https://github.com/Skyvern-AI/skyvern/issues/4375 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 4. 安装坑 · 来源证据：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Feature Request] Multi-session VNC support for local/self-hosted deployments (Live view & Take Control)\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_8f2671eacb334774963837f8f7e8edf4 | https://github.com/Skyvern-AI/skyvern/issues/4392 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 5. 配置坑 · 来源证据：Performance bottleneck: High latency for simple form-filling workflows\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个配置相关的待验证问题：Performance bottleneck: High latency for simple form-filling workflows\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_9820831a47af4ca28ef7abcc0fd7095e | https://github.com/Skyvern-AI/skyvern/issues/4439 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | README/documentation is current enough for a first validation pass.\n\n## 7. 维护坑 · 来源证据：Release v1.0.34\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.34\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_660eece743754686b70883d67faffd46 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.34 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 8. 维护坑 · 来源证据：Release v1.0.35\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个维护/版本相关的待验证问题：Release v1.0.35\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_53f24132e3214005ba1dc606965c0eb7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.35 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 9. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | last_activity_observed missing\n\n## 10. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 存在安全注意事项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：No sandbox install has been executed yet; downstream must verify before user use.\n- 对用户的影响：用户安装前需要知道权限边界和敏感操作。\n- 建议检查：转成明确权限清单和安全审查提示。\n- 防护动作：安全注意事项必须面向用户前置展示。\n- 证据：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.\n\n## 12. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | no_demo; severity=medium\n\n## 13. 安全/权限坑 · 来源证据：Clarification on the Custom credential documentation on the Delete API with empty body\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Clarification on the Custom credential documentation on the Delete API with empty body\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a5164e5767dc4b618ce1c862ed440eaa | https://github.com/Skyvern-AI/skyvern/issues/4256 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 14. 安全/权限坑 · 来源证据：GROQ error\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：GROQ error\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_fb8dab5ab6224386a6b341234a8e90be | https://github.com/Skyvern-AI/skyvern/issues/4366 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：Release v1.0.27\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.27\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_23488c9e7f354979bdbf8e9554b4b647 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.27 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 16. 安全/权限坑 · 来源证据：Release v1.0.30\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.30\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_6929e0e36e1549e9bd95f29d1d4cfbdf | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.30 | 来源类型 github_release 暴露的待验证使用条件。\n\n## 17. 安全/权限坑 · 来源证据：Release v1.0.31\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.31\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_40ca78dbdbe141f383c8d202f08db28b | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.31 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 18. 安全/权限坑 · 来源证据：Release v1.0.32\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.32\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_4eaa09d9a74f49efb0fb81c9bdebe6a3 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.32 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 19. 安全/权限坑 · 来源证据：Release v1.0.33\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.33\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ba7d530f080e4c88ad47ac26ba2781a7 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.33 | 来源讨论提到 docker 相关条件，需在安装/试用前复核。\n\n## 20. 安全/权限坑 · 来源证据：Release v1.0.36\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：Release v1.0.36\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_236e050a3837462692b739322738a7a2 | https://github.com/Skyvern-AI/skyvern/releases/tag/v1.0.36 | 来源讨论提到 node 相关条件，需在安装/试用前复核。\n\n## 21. 安全/权限坑 · 来源证据：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：persist_browser_session flag saves sessions but never retrieves them on subsequent runs\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b56e85161a3b4b7682c8ab13127be8d0 | https://github.com/Skyvern-AI/skyvern/issues/4390 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 22. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | issue_or_pr_quality=unknown\n\n## 23. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | art_9274907e6629499384a5a574e4caa877 | https://github.com/Skyvern-AI/skyvern#readme | release_recency=unknown\n",
      "summary": "用户实践前最可能遇到的身份、安装、配置、运行和安全坑。",
      "title": "Pitfall Log / 踩坑日志"
    },
    "prompt_preview": {
      "asset_id": "prompt_preview",
      "filename": "PROMPT_PREVIEW.md",
      "markdown": "# skyvern - Prompt Preview\n\n> Copy the prompt below into your AI host before installing anything.\n> Its purpose is to let you safely feel the project's workflow, not to claim the project has already run.\n\n## Copy this prompt\n\n```text\nYou are using an independent Doramagic capability pack for Skyvern-AI/skyvern.\n\nProject:\n- Name: skyvern\n- Repository: https://github.com/Skyvern-AI/skyvern\n- Summary: <!-- DOCTOC SKIP -->\n- Host target: local_cli\n\nGoal:\nHelp me evaluate this project for the following task without installing it yet: <!-- DOCTOC SKIP -->\n\nBefore taking action:\n1. Restate my task, success standard, and boundary.\n2. Identify whether the next step requires tools, browser access, network access, filesystem access, credentials, package installation, or host configuration.\n3. Use only the Doramagic Project Pack, the upstream repository, and the source-linked evidence listed below.\n4. If a real command, install step, API call, file write, or host integration is required, mark it as \"requires post-install verification\" and ask for approval first.\n5. If evidence is missing, say \"evidence is missing\" instead of filling the gap.\n\nPreviewable capabilities:\n- Capability 1: Use the source-backed project context to guide one small, checkable workflow step.\n\nCapabilities that require post-install verification:\n- Capability 1: Use the source-backed project context to guide one small, checkable workflow step.\n\nCore service flow:\n1. introduction: Introduction to Skyvern. Produce one small intermediate artifact and wait for confirmation.\n2. system-architecture: System Architecture. Produce one small intermediate artifact and wait for confirmation.\n3. browser-automation: Browser Automation Engine. Produce one small intermediate artifact and wait for confirmation.\n4. workflow-system: Workflow System. Produce one small intermediate artifact and wait for confirmation.\n5. ai-commands: AI-Powered Commands. Produce one small intermediate artifact and wait for confirmation.\n\nSource-backed evidence to keep in mind:\n- https://github.com/Skyvern-AI/skyvern#readme\n- .claude/skills/bump-version/SKILL.md\n- docs/skill.md\n- skyvern/cli/skills/qa/SKILL.md\n- skyvern/cli/skills/skyvern/SKILL.md\n- skyvern/cli/skills/smoke-test/SKILL.md\n- skyvern/cli/skills/testing/SKILL.md\n- README.md\n- skyvern/__init__.py\n- skyvern/constants.py\n\nFirst response rules:\n1. Start Step 1 only.\n2. Explain the one service action you will perform first.\n3. Ask exactly three questions about my target workflow, success standard, and sandbox boundary.\n4. Stop and wait for my answers.\n\nStep 1 follow-up protocol:\n- After I answer the first three questions, stay in Step 1.\n- Produce six parts only: clarified task, success standard, boundary conditions, two or three options, tradeoffs for each option, and one recommendation.\n- End by asking whether I confirm the recommendation.\n- Do not move to Step 2 until I explicitly confirm.\n\nConversation rules:\n- Advance one step at a time and wait for confirmation after each small artifact.\n- Write outputs as recommendations or planned checks, not as completed execution.\n- Do not claim tests passed, files changed, commands ran, APIs were called, or the project was installed.\n- If the user asks for execution, first provide the sandbox setup, expected output, rollback, and approval checkpoint.\n```\n",
      "summary": "不安装项目也能感受能力节奏的安全试用 Prompt。",
      "title": "Prompt Preview / 安装前试用 Prompt"
    },
    "quick_start": {
      "asset_id": "quick_start",
      "filename": "QUICK_START.md",
      "markdown": "# Quick Start / 官方入口\n\n项目：Skyvern-AI/skyvern\n\n## 官方安装入口\n\n### Python / pip · 官方安装入口\n\n```bash\npip install skyvern\n```\n\n来源：https://github.com/Skyvern-AI/skyvern#readme\n\n## 来源\n\n- docs: https://github.com/Skyvern-AI/skyvern#readme\n",
      "summary": "从项目官方 README 或安装文档提取的开工入口。",
      "title": "Quick Start / 官方入口"
    }
  },
  "validation_id": "dval_c306c31c798e4351af3292c822347541"
}
