资讯动态

browser-use与video-use本地部署实战:AI Agent驱动浏览器自动化与视频生成

发布时间:2026/8/30 11:57:11 来源:尧图企业网站定制
这次我们来看两个同属 AI Agent 生态的项目browser-use和video-use。前者解决的是“让 LLM 自动操作浏览器”的问题后者解决的是“用自然语言生成视频内容”的问题。两个项目放在一起看正好覆盖文本交互之外的两种常见自动化需求网页操作自动化和视频内容自动化。先给核心结论如果你希望通过大模型驱动浏览器完成网页点击、表单填写、数据抓取这类任务browser-use是一个可以直接用的开源方案如果你的需求是把自然语言描述变成视频片段video-use是同一套思路在视频生成方向的延伸。两个项目的共同特点是不直接提供大模型推理能力而是作为 Agent 调度层把 LLM 的能力和浏览器 / 视频生成服务连接起来。这篇文章会围绕本地部署展开内容包括环境准备、安装启动、功能测试、API 封装、批量任务设计和常见问题排查。你不需要先理解 Agent 的复杂概念跟着步骤跑通一个最小示例就能判断这套方案是否适合你的项目。1. 核心能力速览在看部署细节之前先把两个项目的能力边界列清楚。这里不写死具体版本号因为开源项目迭代较快建议以你实际拉取到的代码和官方 README 为准。能力项browser-usevideo-use项目类型浏览器自动化 Agent 框架视频生成 Agent 框架核心功能让 LLM 控制浏览器执行点击、输入、抓取、导航等操作根据自然语言描述生成视频可联动视频生成模型底层依赖Playwright、浏览器驱动视频生成服务或本地视频模型是否支持本地 LLM支持通过 Ollama 等本地推理服务接入取决于你接入的视频生成服务是否支持 CPU支持CPU 足够跑 Agent 调度逻辑取决于视频生成模型本地生成视频通常需要 GPU是否支持 API可以封装为 HTTP 服务可以封装为 HTTP 服务是否支持批量任务支持可以写队列批量执行支持可以按任务队列批量生成启动方式Python 脚本启动或服务化启动Python 脚本启动或服务化启动适合场景网页数据采集、表单自动化、页面操作验证、RPA 替代短视频素材生成、概念演示视频、批量视频预览GPU 要求不强制除非接入本地视觉模型本地视频生成需要显卡显存占用视模型而定从架构上看browser-use的核心价值在于把“理解任务”和“执行操作”两个环节解耦。LLM 只负责分析当前页面并决定下一步动作Playwright 负责实际执行浏览器操作。这样设计的好处是你不需要为不同网站编写不同的爬虫逻辑只要把任务描述清楚Agent 会根据页面结构动态判断。video-use的核心价值在于把“创意描述”和“视频渲染”解耦。它不会帮你生成模型而是负责拆解提示词、调度生成流程、管理多段视频拼接等任务。具体效果好不好取决于你接的是云端视频生成 API 还是本地部署的视频模型。2. 适用场景与使用边界2.1 适合谁经常需要从网页中收集结构化数据但又不想为每个网站单独写爬虫的开发者。正在做 RPA 替代方案希望用自然语言描述自动化流程的技术团队。短视频创作者或内容团队需要批量生成概念视频、分镜预览或测试素材。深入研究 AI Agent 架构的开发者想对比不同 Agent 框架的调度策略。2.2 能解决什么问题browser-use最常见的使用方式是这样的你告诉它“打开某个网站搜索关键词把前 10 条结果的标题和链接保存下来”它会自动完成页面导航、定位搜索框、输入关键词、等待结果加载、提取数据这一整条链路。相比传统的 Selenium 脚本优势在于不需要预先写死选择器Agent 会读取页面结构自行决定操作方式。video-use的使用方式类似你告诉它“生成一段 5 秒的城市夜景视频风格写实”它会拆解需求确认视频生成参数然后调用你配置好的视频生成服务。批量场景下你可以准备一批描述文件让它在队列中逐个执行。2.3 不适合什么场景对低延迟有强要求的浏览器自动化任务。Agent 每步操作都要经过 LLM 推理单步耗时远高于直接写死的脚本。高度复杂、需要精细视觉判断的页面操作。如果页面结构动态变化频繁Agent 可能会连续失败。对视频质量要求极高的商业成片。目前 Agent 生成的视频更适合概念预览直接交付可能还需要人工后期。需要离线完全掌控模型的环境。如果你既没有 LLM API也没部署本地模型这类 Agent 框架基本跑不起来。2.4 使用边界与合规提醒自动化工具容易被滥用这里单独强调几点网页数据采集前先确认目标网站的robots.txt和服务条款避免违反网站使用协议。登录态信息、Cookie、个人隐私数据要妥善保管不要在脚本里硬编码。涉及人脸、声音、品牌素材的视频生成必须确认授权范围避免肖像权和版权风险。Agent 自动执行的操作要有日志记录避免无人监督状态下对线上系统产生不可控影响。3. 环境准备与前置条件这一部分列出通用环境要求。由于不同版本的browser-use和video-use依赖可能不同下面给出的是建议配置具体以项目官方文档为准。3.1 基础软件要求建议使用 Linux 或 macOS 作为主环境Windows 也支持但部分依赖安装和路径配置会稍有不同。依赖项建议版本用途Python3.10 或更高两个项目都是 Python 项目pip最新版安装依赖包git最新版拉取代码仓库Node.js可选Playwright 浏览器管理器可能需要Chrome / Chromium最新稳定版browser-use 的浏览器执行环境LLM API Key 或本地 Ollama按需browser-use 的推理后端视频生成服务 API 或本地模型按需video-use 的生成后端3.2 GPU 与显存要求判断方式很简单只使用browser-use做网页自动化对 GPU 没有硬性要求。如果接入的是云端 LLM APICPU 和普通内存就够了。如果使用本地 LLM例如通过 Ollama 运行 7B 或 13B 模型需要关注显存建议从 8G 显存起步。使用video-use并且接入本地视频生成模型显存建议 12G 起步具体要看你选的视频模型规格。注意不要只看 Agent 框架本身真正吃显存的是你接入的 LLM 或视频生成模型。框架层的显存占用可以忽略不计。3.3 网络与端口拉取代码和安装依赖需要访问 PyPI 和 GitHub。browser-use运行时需要访问你配置的 LLM API 接口云端 API 需要网络通畅。本地部署时建议把服务端口绑定到127.0.0.1避免局域网内其他人直接访问。4. 安装部署与启动方式下面给出通用安装流程。请在实际操作时把目录路径、模型名称、API Key 替换成你自己的配置。4.1 拉取代码并创建虚拟环境git clone https://github.com/browser-use/browser-use.git cd browser-use python -m venv .venv source .venv/bin/activate # Windows 下使用 .venv\Scripts\activate pip install -e .video-use的安装方式类似按官方仓库操作即可git clone https://github.com/video-use/video-use.git cd video-use python -m venv .venv source .venv/bin/activate pip install -e .4.2 安装浏览器驱动browser-use依赖 Playwright 控制浏览器。需要单独安装 Chromiumplaywright install chromium如果网络下载较慢可以等一会儿。安装完成后检查浏览器驱动是否正常playwright install --list4.3 配置 LLM 接入browser-use需要一个 LLM 来理解任务。最直接的方式是配置环境变量。以 OpenAI 兼容接口为例export ANTHROPIC_API_KEYsk-xxx export OPENAI_API_KEYsk-xxx export OPENAI_API_BASEhttps://api.example.com/v1如果你希望使用本地 Ollama需要先启动 Ollama 服务并拉取模型ollama pull qwen2.5:7b然后在代码中指定 LLMfrom langchain_ollama import ChatOllama llm ChatOllama( modelqwen2.5:7b, base_urlhttp://127.0.0.1:11434, temperature0 )4.4 验证最小启动创建一个最简单的测试脚本from browser_use import Agent from langchain_openai import ChatOpenAI llm ChatOpenAI( modelgpt-4o-mini, temperature0 ) agent Agent( task打开 example.com读取页面主标题返回标题文字。, llmllm ) result await agent.run() print(result)运行后如果能在终端看到 Agent 分步执行的日志并最终输出标题文字说明环境配置成功。video-use的最小启动方式取决于你接入的生成服务。通常需要配置 API Key 和模型名称export VIDEO_API_KEYyour_video_api_key export VIDEO_MODELyour_video_model_name然后再写生成脚本from video_use import VideoAgent agent VideoAgent( api_keyyour_video_api_key, modelyour_video_model_name ) task 生成一段 5 秒的城市夜景视频画面写实镜头缓慢推进。 result agent.generate(task) print(result.video_url)这里的关键点是video-use本身更像一个调度器质量取决于底层的视频生成模型。如果没有可用的视频生成 API这个示例跑不通是正常的你需要先解决视频模型接入问题。5. 功能测试与效果验证环境跑通后不要直接上复杂任务。先按下面的测试用例逐项验证确认每个环节都稳定再进行更复杂的使用。5.1 浏览器基础操作测试测试目的确认 Agent 能完成页面导航和内容提取。输入任务打开 https://example.com提取页面中的核心标题返回标题文字。操作步骤确保浏览器驱动正常。运行最小脚本。观察日志中是否存在“navigation”“click”“extract”等操作记录。检查返回结果是否包含页面标题。判断标准返回结果准确。整个过程在合理时间内完成没有卡死或无限重试。失败排查如果页面始终打不开先确认浏览器驱动安装完成。如果返回空结果可能是页面加载速度太慢需要增加等待时间。5.2 多步操作测试测试目的验证 Agent 能完成多步操作而不仅仅是读取单个页面。输入任务打开 GitHub 热门仓库页面找出 star 数最高的 3 个仓库输出仓库名称和 star 数。操作步骤修改任务描述确保信息足够明确。运行脚本观察 Agent 是否自动点击、滚动、等待页面加载。检查输出结果是否包含 3 个仓库的名称和 star 数。判断标准多步任务能连续执行中途不中断。提取的数据格式完整。失败排查如果 Agent 在页面滚动后找不到数据可以增加 max_steps 或调整等待策略。如果定位错误说明当前 LLM 对页面结构的理解还不够可以尝试换更强的模型或者把任务描述写得更具体。5.3 表单填写测试测试目的验证 Agent 能完成输入框定位和文字输入。输入任务打开某个搜索页面在搜索框中输入“AI Agent”点击搜索按钮返回搜索结果页的标题。操作步骤选择一个目标网站。运行任务。观察 Agent 是否先定位输入框再输入文字再点击搜索按钮。判断标准搜索框内文字正确。点击动作生效。有对应的结果返回。失败排查如果输入框定位失败检查页面是否有 iframe 或 shadow DOM这类复杂结构会影响 Agent 的选择器判断。如果点击按钮后没有反应可能是按钮在视口外需要先滚动。5.4 视频生成基础测试测试目的验证video-use能否正确拆解任务并生成视频。输入任务生成一段 5 秒的沙漠日出视频镜头从地平线缓慢升起色调温暖写实。操作步骤配置视频生成服务。运行生成脚本。查看返回的视频地址或本地文件路径。判断标准视频成功生成。时长和画面内容与描述基本一致。API 调用链路没有报错。失败排查如果生成失败优先检查 API Key 和模型名称是否配置正确。如果视频风格不对提示词中需要明确画面主体、色调、镜头运动方式。5.5 批量任务测试测试目的验证多个任务能否排队执行而不是单次运行后进程退出。操作步骤准备一个任务库包含 3 到 5 个任务描述。按顺序循环调用 Agent。检查每个任务的执行结果。判断标准所有任务执行完毕。每个任务的输出独立保存。失败排查如果任务中途卡死检查是否因为页面资源占用过高必要时在两次任务之间加延时。如果有单条任务失败导致整个进程退出说明需要对异常做单独处理。6. 接口 API 与批量任务本地脚本跑通后下一步通常是把功能封装成服务方便其他系统调用。6.1 封装 HTTP API用 FastAPI 封装browser-use是一个比较常用的方案下面给出参考模板from fastapi import FastAPI from pydantic import BaseModel from browser_use import Agent from langchain_openai import ChatOpenAI app FastAPI() class TaskRequest(BaseModel): task: str max_steps: int 20 def get_llm(): return ChatOpenAI( modelgpt-4o-mini, temperature0 ) app.post(/api/run) async def run_task(req: TaskRequest): llm get_llm() agent Agent( taskreq.task, llmllm, max_stepsreq.max_steps ) result await agent.run() return {success: True, result: result} # 启动命令uvicorn main:app --host 127.0.0.1 --port 8000启动服务uvicorn main:app --host 127.0.0.1 --port 80006.2 curl 调用示例curl -X POST http://127.0.0.1:8000/api/run \ -H Content-Type: application/json \ -d { task: 打开 example.com读取页面标题返回标题文字。 }6.3 Python 调用示例import requests url http://127.0.0.1:8000/api/run payload { task: 打开 https://example.com返回页面主标题。, max_steps: 10 } response requests.post(url, jsonpayload, timeout300) print(response.json())6.4 批量任务队列设计批量任务的重点不是把任务循环跑一遍而是要考虑失败恢复和结果收集。推荐的做法创建任务目录结构tasks/ input/ # 任务描述文本每个文件一个任务 output/ # 每个任务的结果文件 logs/ # 执行日志使用asyncio并发执行但要限制并发数避免浏览器实例太多导致内存爆炸。import asyncio import aiohttp semaphore asyncio.Semaphore(3) async def run_one(task_id, task_text): async with semaphore: async with aiohttp.ClientSession() as session: payload {task: task_text} async with session.post(http://127.0.0.1:8000/api/run, jsonpayload, timeout300) as resp: data await resp.json() print(ftask {task_id} done: {data}) return data async def main(): tasks [ {id: 1, text: 打开 example.com返回标题。}, {id: 2, text: 打开 openai.com返回页面上主要功能列表。}, {id: 3, text: 打开 github.com返回页面导航栏内容。} ] await asyncio.gather(*[run_one(t[id], t[text]) for t in tasks]) asyncio.run(main())对失败任务做重试。建议设置最大重试次数为 2 次重试间隔 5 到 10 秒。retry_count 0 while retry_count 2: try: result await run_task(task) break except Exception as e: retry_count 1 await asyncio.sleep(5)video-use的批量流程类似只是 API 返回的是视频 URL 或本地文件路径需要额外考虑文件下载和路径管理。6.5 接口服务运维建议服务绑定在127.0.0.1不要直接暴露到公网。在接口层增加简单鉴权例如 Header Token 校验。设置单次请求超时避免任务卡住导致连接一直占用。对输入任务长度做限制防止超长任务拖垮服务。7. 资源占用与性能观察7.1 观察哪些指标运行browser-use时资源观察的重点CPU 占用。Agent 推理部分消耗在 API 调用上本地主要消耗在浏览器渲染页面。内存占用。每个浏览器实例会占用数百 MB 内存多个并发任务会快速拉高内存。网络请求量。高频页面操作会产生大量网络请求确认带宽和接口配额是否足够。运行video-use时资源观察的重点显存占用。如果接入的是本地视频模型在生成过程中观察显存是否打满。推理耗时。单段视频生成时间过长时需要考虑拆分任务或降低分辨率。磁盘占用。视频文件体积较大批量生成前要预留充足磁盘空间。7.2 如何查看 GPU 占用在终端中使用nvidia-smi如果想持续观察watch -n 1 nvidia-smi7.3 性能优化思路browser-use的优化方向减少并发浏览器实例数量优先保证单实例稳定。优先使用无头模式减少渲染开销。任务描述中明确限制页面打开数量避免 Agent 在页面上无意义点击。设置max_steps上限防止 Agent 陷入死循环。video-use的优化方向降低视频分辨率和时长先跑通流程再提升质量。长视频拆分成多段生成避免单任务超时。任务队列错峰执行避免显卡显存被同时打满。7.4 降低资源占用的通用手段手段原理适用项目使用无头模式减少浏览器渲染开销browser-use限制并发数避免多个浏览器或推理任务同时抢资源两者都适用使用流式推理减少单次请求等待时间browser-use升级单卡显存提升本地视频模型可用性video-use任务调度错峰让每个任务独占资源窗口video-use对视频做压缩或抽帧验证先验证效果再全量生成video-use8. 常见问题与排查方法8.1 常见问题排查表问题现象可能原因排查方式解决方案安装依赖时提示 Python 版本过低项目要求 Python 3.10 或更高python --version升级 Python 或使用虚拟环境安装新版浏览器启动失败Playwright 浏览器未安装或版本不匹配playwright install --list执行playwright install chromium页面打开后无法定位元素页面结构复杂或 iframe 嵌套查看 Agent 日志中的选择器细化任务描述或更换更强模型Agent 任务执行超时页面加载过慢或任务复杂度过高检查网络和页面响应时间增加超时时间降低任务复杂度API Key 配置后仍报 401环境变量未生效打印环境变量检查确认写入.env文件或当前 Shell 会话视频生成报模型不存在模型名称错误或服务未启动查看生成服务日志换成正确的模型名称确认服务已启动批量任务跑到一半卡住内存不足或并发数过高查看系统资源监控降低并发数增加任务间延时输出结果不稳定模型温度设置过高检查temperature参数把温度降低到 0 或接近 0本地 LLM 推理速度慢模型参数过大或 CPU 模式观察 CPU / GPU 占用换小模型或开启 GPU 推理端口被占用服务端口冲突lsof -i :8000换端口或关闭占用进程8.2 日志排查思路无论遇到什么问题第一步是看日志。browser-use默认会输出 Agent 决策过程你可以看到 LLM 为什么选择下一步操作。如果决策出现问题通常可以判断是页面信息遗漏Agent 看不到完整页面内容。指令理解偏差任务描述不够清晰。模型能力不足当前模型无法处理复杂页面。针对视频生成日志主要关注是否成功调用生成服务。是否收到正常响应。是在请求阶段失败还是生成阶段失败。8.3 进程残留处理browser-use异常退出后Chromium 子进程可能残留导致下次运行异常。可以手动清理pkill -f chromeWindows 下可以通过任务管理器结束相关进程或使用taskkill /F /IM chrome.exe9. 最佳实践与使用建议9.1 从最小任务开始验证不要一开始就写复杂的自动化链路。先用“打开一个页面读取标题”这种最简单任务验证环境再逐步增加导航、点击、表单填写等操作。每一步都确认稳定后再叠加排查问题时会清晰很多。9.2 任务描述越具体越好browser-use的效果上限很大程度取决于任务描述的清晰度。注意几个要点明确目标网站。明确需要提取的信息字段。明确结果格式。明确操作边界例如“不要登录”“不要点击弹窗”。例如下面两种写法不够清晰帮我查一下某个网站的信息。比较清晰打开 https://example.com找到页面上所有文章标题和发布日期以列表形式返回。后者让 LLM 更容易给出确定性的操作步骤。9.3 目录与文件管理建议建立标准目录结构project/ config/ # 配置文件 tasks/ # 任务描述文件 logs/ # 执行日志 output/ # 输出结果 data/ # 缓存或中间数据模型文件、输入素材、输出文件不要混放在一起。9.4 接口服务安全服务只监听本机地址。增加固定 Token 鉴权。记录所有请求日志。对输入长度和任务超时做硬性限制。避免在公网服务器上直接部署除非你有完整的权限控制和审计能力。9.5 批量任务设计规范批量任务要包含任务去重避免同一批任务重复执行。失败重试最多重试 2 次间隔 5 秒以上。结果校验任务完成后检查输出是否为空或异常。中途断点任务列表记录已完成项下次从断点继续。9.6 合规与授权审查涉及自动采集、人脸生成、声音克隆、版权视频素材时必须在项目启动前完成授权确认。自动化工具降低的是操作门槛不是合规门槛。发布或商用前建议由熟悉相关法规的人员复核一遍使用场景。10. 总结与下一步browser-use和video-use这类 Agent 框架真正有价值的部分不是“AI 自动操作浏览器”或“AI 生成视频”这个概念本身而是它们把 LLM 的决策能力和具体执行工具连接了起来。你不需要再为每个网站写死爬虫逻辑也不需要手动拼接视频生成流程只要把任务描述清楚剩下的调度由 Agent 完成。如果你准备实际尝试建议按这个顺序推进先跑通browser-use的最小示例确认环境没问题。用一个你熟悉的网站做多步操作测试观察 Agent 的决策日志和操作边界。然后封装成 HTTP API通过 curl 验证接口可用性。最后再考虑批量任务队列并确认资源占用在可控范围内。最容易踩的坑集中在三个方面浏览器驱动没有正确安装、LLM 配置没有生效、批量任务并发过高导致资源耗尽。这三个坑在本文的排查清单里都有对应处理方法实际操作时优先查日志不要盲目改代码。后续想继续扩展可以关注几个方向给browser-use增加自定义浏览器 profile让它处理需要登录态的自动化任务把video-use接入本地视频生成模型摆脱对云端 API 的依赖或者把两个项目整合成一个工作流让 Agent 先抓取素材再用video-use生成视频预览。每一个方向都是独立的技术专题等环境跑通后再逐步深入。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价