上个月我把 BrowserUse 部署到本地,用几个真实任务做了一轮对比测试,结果有点出乎我意料:在网页自动化这个细分场景里,这个开源智能体的稳定性和可控性,确实比 Anthropic 官方的 Computer Use 更适合日常使用。这篇文章不吹某个工具,而是把我从部署、实测到踩坑的完整记录,以及那个"超越"的说法到底成不成立,一起摊开来讲清楚。给打算做智能体评测,或者正在选型网页自动化方案的朋友一个参考。
先说下背景。我做智能体相关开发有一段时间了,之前重度依赖 Anthropic 的 Computer Use,后来在 GitHub 上看到 browser-use 这个开源项目,Star 涨得飞快。它本质上是一个把浏览器控制能力封装成 Agent 的框架,底层用 Playwright 控制浏览器,上层接入各种大模型,让模型通过"观察页面 → 决策 → 执行操作 → 再看结果"的循环完成真实网页任务。由于它完全开源、支持自定义模型、每一步操作都透明可见,不少社区评测认为它已经"超越"了 Anthropic 的 Computer Use。这引起了我的兴趣。
1. 同一件事,两条截然不同的技术路径
1.1 Computer Use 的思路:让模型"看懂"屏幕
Anthropic Computer Use 的思路很直接:把屏幕截图传给 Claude,模型根据像素级画面输出下一步动作,比如移动鼠标、点击、输入文字、滚动页面,然后由 Anthropic API 端执行这个动作,再截图,再决策,如此循环。
这个设计在 demo 视频里看起来确实科幻,一套操作如行云流水。但实际用起来,你会发现它有几个比较头疼的问题。
首先是 token 消耗极其夸张。截图本身就是高密度 token 消耗源,一张 1080p 的截图传到模型里,动辄一千到两千个 token。一个稍微复杂点的任务,比如登录、填表、提交,整个流程下来要传几十张截图,输入 token 轻松十几万甚至更高。我跑过一个三步操作的小任务,账单让我愣了一下,第一次意识到"大模型操作电脑"这件事的成本有多高。
然后是准确率问题。模型对像素坐标的判断偶尔会偏移,尤其是页面布局稍微变化一下,或者弹窗出现、悬浮层遮挡时,模型经常表现得像隔着一层毛玻璃操作电脑,明明东西就在眼前,点了几次都点不中。
最让人难受的是调试体验。整个运行过程是一个黑盒,你只能看到输入和输出——给了模型什么截图,模型返回什么坐标。中间哪一步判断错了、为什么错了,基本靠猜。
1.2 BrowserUse 的思路:把网页变成模型能读的文本
BrowserUse 走的是完全相反的路子。它不截图,而是把网页的 DOM 树经过压缩处理后,转换成一段带元素编号的文本描述,传给大语言模型。模型看到的不是一张图,而是类似这样的信息:
[1044] <button id="submit" class="primary">提交订单</button>然后模型只需要回答"点击元素 1044",BrowserUse 底层通过 Playwright 精确定位并点击这个元素。整个过程没有像素坐标,没有鼠标移动的模糊判断,网页元素在模型眼里是精确、可定位的。
这个差异用一句话类比:Computer Use 是让实习生盯着电脑屏幕干活,累了还得揉眼睛;BrowserUse 是直接给实习生一份带操作说明的网页源码,让他在命令行里精准执行每一条指令。
还有一个很大的不同——模型无关性。BrowserUse 不在框架层绑定任何特定大模型,你可以用 OpenAI 的 GPT-4o、Anthropic 的 Claude、Google 的 Gemini,甚至本地部署的 Ollama 模型。想省钱就换便宜模型,想提升效果就换旗舰模型,自由度极高。
1.3 "超越"这个说法成立吗
我在测试过程中也一直在审视这个问题。先说结论:在"网页自动化"这个垂直领域,BrowserUse 确实在多个关键维度上优于 Computer Use;但"超越"不是全场景的,Computer Use 能做到系统级操作,这一点 BrowserUse 暂时还替代不了。
| 对比维度 | Anthropic Computer Use | BrowserUse |
|---|---|---|
| 操作范围 | 整个桌面系统(不限浏览器) | 仅在浏览器内 |
| 页面理解方式 | 屏幕截图(视觉像素) | DOM 压缩文本(可选加视觉) |
| 开源程度 | 闭源 API | 完全开源、MIT 协议 |
| 模型接入 | 仅 Claude 系列 | 任意 LLM,兼容 OpenAI 接口 |
| 调试能力 | 黑盒,难以逐步干预 | 开放,可观察、可中断、可注入 |
| 运行环境 | Anthropic 云端 | 本机执行,数据不出本地 |
| 单任务成本 | 高(截图 token 多) | 低(文本 token 少) |
单看这张表,结论很清楚:只要你的任务场景限定在"搞定浏览器里的流程",BrowserUse 是更合理的选择。它更大的想象空间在于开源社区的迭代速度——我自己逛它的 GitHub issues 时,看到开发者几乎每周都在加新功能,这种迭代节奏是闭源 API 给不了的。
2. 部署实录:从零到跑通第一个任务
2.1 本地环境准备
部署 BrowserUse 比我想象的简单,它本质是一个 Python 包,依赖核心是 Playwright。以下是适合大多数人的完整步骤。
# 1. 建虚拟环境,避免污染系统 Python python -m venv .venv source .venv/bin/activate # Windows 用 .venv\Scripts\activate # 2. 安装核心依赖 pip install browser-use playwright python-dotenv # 3. 安装 Chromium 内核 playwright install chromium # 4. 如果服务器是 Linux,还需要装系统依赖库 playwright install-deps chromium这里有个细节值得说一下:为什么需要虚拟环境?因为 Playwright 会下载特定版本的 Chromium,如果你系统里已经装了其他浏览器,容易出现 Chromium 内核和系统库冲突的问题。用虚拟环境隔离是省心又干净的方案,我一开始图省事直接装到全局,结果被依赖版本冲突折腾了半天。
Linux 服务器部署时,playwright install-deps那一步特别重要。缺了系统库,Chromium 很可能启动即崩溃,而且报错信息往往很隐晦——通常是一堆找不到 so 文件之类的提示。建议部署到服务器时务必执行这步。
然后配置 API Key:
export OPENAI_API_KEY="sk-你自己的key"如果用 Claude 就配置ANTHROPIC_API_KEY,用本地模型就配置OLLAMA_API_BASE。我测试时主要用 OpenAI 的模型跑主流程,Claude 做交叉验证。
2.2 一个最小可运行的 Agent 脚本
通读文档之后,我写了一个最简单但完整的脚本:
import asyncio from browser_use import Agent from langchain_openai import ChatOpenAI async def main(): agent = Agent( task="打开 GitHub 搜索页面,搜索 browser-use 这个项目,把第一页结果里的 star 数告诉我", llm=ChatOpenAI(model="gpt-4o-mini", max_tokens=4096), max_steps=15, use_vision=True, # 是否把截图也传给模型 generate_gif=False, # 是否生成操作过程 GIF ) history = await agent.run() print(history) asyncio.run(main())第一次跑通的瞬间,我还挺兴奋的——模型自己完成了打开浏览器、输入搜索词、点击结果、读取 star 数、总结回答的全过程。gpt-4o-mini这个模型比较便宜,但在这个任务上表现不差。
注意max_steps这个参数,我建议一开始就设置。Agent 循环如果失控,可能会在某个页面上无限重试,没有上限的话,费用会像漏水一样。15 步对于大部分简单任务足够,复杂任务可以放宽到 40。
2.3 自定义输出结构
BrowserUse 的一个突出特性是可以让模型输出带结构化字段的结果,而不只是自然语言。例如:
task = """ 完成以下任务: 1. 打开 Wikipedia 首页 2. 找到今天的特色条目 3. 返回一个 JSON 对象:{"article_title": "...", "description": "..."} """配合output_model参数,你可以定义 Pydantic 模型来强制约束输出格式。这个能力在实际项目里相当好用——比如定时采集网页数据、做价格监控、生成结构化报告等场景,输出的数据可以直接落库,不用再写解析逻辑。我在测试数据聚合任务时就感受到了这个特性的便利。
3. 四组实测任务:表现到底怎么样
跑通 Demo 只能算热身,真正有价值的是拿真实任务压测。我选了四个典型场景,覆盖日常使用的绝大多数情况。
3.1 搜索类任务:打开浏览器、搜索、提取信息
第一个任务我直接让它去 GitHub 搜项目并返回 star 数量。整个流程模型走了大概 8 步:打开浏览器、访问 GitHub、定位搜索框、输入关键词、点击搜索、等待结果加载、解析结果、输出 star 数。
表现稳定,没有多余操作。gpt-4o-mini在这个环节的优势是速度快、成本低,全程 token 消耗还不到 1 万。
我把同样的任务描述改用gpt-4o跑了一轮,发现推理路径没有什么本质差别,只是响应更快,对页面元素的理解更"聪明"一些——遇到 cookie 弹窗时,4o-mini 会犹豫,4o 基本能直接判断出"这是无需操作的弹层"。
3.2 登录与填表任务:多步骤交互型场景
第二个任务模拟了常见的表单填写场景。我用了 httpbin.org 提供的测试表单,让它填写姓名、电话、邮箱三个字段并提交。
这个任务的关键在于:模型必须先识别出可交互的输入框,然后逐个填充,最后找到提交按钮。BrowserUse 的 DOM 文本模式在这里优势明显,每个输入框都有精确的元素编号,不会出现 Computer Use 那种"点输入框结果点到输入框外面"的情况。
实测结果:gpt-4o-mini 顺利完成了全程,包括提交后的响应结果确认。整个流程让我有点意外地顺利,因为表单填写类任务在传统 RPA 里算中高难度了。
3.3 跨页面的数据聚合任务
第三个任务稍微提高难度:先访问一个词条页面提取基本介绍,再打开另一个页面补充数据,最后汇总返回一个 JSON。
这是最能拉开差距的场景。因为每一步都需要模型记住前一个页面的信息,再迁移到新页面,对上下文管理能力要求较高。
实测中 gpt-4o-mini 在这个任务上开始吃紧——偶尔会在第二个页面忘了任务目标,或者提取的信息张冠李戴。换用 gpt-4o 后问题明显减少。这给我一个很重要的体感:模型能力直接影响智能体表现上限,框架本身能解决"怎么做",但"做得对不对"还是要靠模型自己。
3.4 和 Computer Use 的同任务对比观测
我无法在这里给出一个严格受控的自动化对比实验,毕竟两端模型、成本、运行环境都不同。但我可以把之前用 Computer Use 跑类似任务的体验拿出来对照。
在登录填表这个任务上,Computer Use 出现过一次"知道该输入内容但定位不准"的问题。原因是页面上输入框旁边有浮动提示文字,截图传递给模型后,模型认为提示区域就是输入框,多次点击未生效。BrowserUse 完全不存在这个问题,因为它直接读 DOM 元素,输入框的 ID、类型、位置在文本描述里写得明明白白。
Cross-page 聚合任务方面,Computer Use 在长任务里的 token 消耗增速惊人,截图越来越多,上下文越来越长,到后面的步骤甚至可能出现"忘记初始任务"的情况。BrowserUse 每步只传递当前页面的 DOM 文本,上下文更加精炼,长任务表现更稳。
4. 成本账:两个方案放在一起算算
4.1 为什么 token 消耗差距这么大
这是所有对比里最直观的一项。Computer Use 每一步操作都要传截图,一张截图相当于上千 token;BrowserUse 传的是压缩后的 DOM 文本,一个典型页面大概 2000-4000 token。同样一个"搜索并返回结果"的任务:
- Computer Use 大约传 10-15 张截图,输入 token 总量轻松达到 3-6 万
- BrowserUse 全程输入 token 通常在 1-2 万之间,而且这些 token 是文本,单价远低于图像 token
打个比方,一个是让员工每看一眼屏幕都付一次高清照片的钱,一个是直接甩给他一份普通人就能看懂的文本说明书。
4.2 用当前公开 API 价格做的费用估算
以下是我测试时记录的近似成本,具体的 API 价格会随时间和服务商调整,但数量级可以作为参考:
| 方案配置 | 单任务输入 token 估算 | 单任务费用估算 |
|---|---|---|
| BrowserUse + GPT-4o-mini | 1-2 万 | 约 0.01-0.03 美元 |
| BrowserUse + GPT-4o | 1-2 万 | 约 0.05-0.10 美元 |
| BrowserUse + Claude 3.5 Sonnet | 1-2 万 | 约 0.05-0.15 美元 |
| Anthropic Computer Use | 5-10 万+ | 约 0.3-1.0 美元以上 |
这只是单个任务的成本。如果做价格监控、批量数据采集,或者每天跑几百上千次任务,这个差距会直接决定方案可行性。成本敏感的场景,BrowserUse 的优势是压倒性的。
4.3 本地模型能不能用
我在测试中也用 Ollama 加载了 Qwen 系列的本地模型试了试。对于简单的点击、读取操作,本地模型跑得有模有样;一旦任务复杂到需要多步推理,本地模型的判断力明显弱于云端旗舰模型,经常在某个页面环节卡住。
我的建议是:如果你只是拿它做自动化测试,或者任务链路比较固定,本地模型是个零成本的好选择;如果任务需要复杂推理和临场应变,宁可多花一点 API 费用,用好一点的云端模型。把 BrowserUse 当作"模型即插即用"的框架,不同任务搭配不同模型,这才是它的核心优势所在。
5. 踩过的坑和调优经验记录
5.1 最大的坑:视觉模型也会"看不见"弹窗
我一度以为开启use_vision=True后,模型既能读 DOM 又能看截图,双保险万无一失。结果在某个电商网站上,页面突然弹出促销浮层,模型虽然在视觉上看到了弹窗,但因为 DOM 文本里没有这个浮层的明确按钮,它在第一次尝试关闭时失败了。
后来我发现,这不是 BrowserUse 的缺陷,而是模型决策机制的问题——当视觉信息和文本信息出现冲突时,模型容易犹豫。解决办法是给 Agent 增加一个自定义动作函数:检测到弹窗时,优先尝试点击关闭按钮。
这个经验也说明了为什么开源框架值得用:遇到问题你可以直接改代码、注入自己的逻辑,而不是等官方修复。
5.2 DOM 过长被截断的问题
有些页面 DOM 结构非常庞大,比如后台管理系统、长列表页面。BrowserUse 默认会把 DOM 压缩后传给模型,但遇到长页面还是可能超过模型上下文窗口,导致模型"看到的"页面不全。
解决方法有三个:
- 在任务描述里明确告诉模型"只需要关注某个区域",减少无关 DOM 的干扰
- 关闭视觉模式,纯文本模式下 DOM 压缩效率更高
- 自研一个前置处理函数,在传给模型前把不必要的 DOM 节点剪掉
第三种方案其实非常有价值,尤其适合固定结构的页面。比如你只需要提取价格和库存信息,那就在任务开始时先把广告位、导航栏、推荐位全部剔除,DOM 瘦身后模型准确率和执行速度都提升明显。
5.3 动态加载页面
前端渲染越来越普遍,很多数据是页面加载完成后通过 JavaScript 异步请求才出现的。BrowserUse 内置了等待机制,但有时响应慢的接口会让模型误判为"页面已经加载完成",进而执行下一步操作,结果点击不存在的元素。
我的解决办法是:在任务描述中主动加上等待条件。比如"等待价格标签出现后再点击购买按钮",让模型在等待时主动调用观察动作,而不是急着执行下一步。
5.4 登录态的保持方式
做需要登录的流程自动化时,每次从零启动浏览器都会遇到登录壁垒。BrowserUse 支持传入浏览器 profile 路径,相当于复用同一个浏览器用户数据目录。
from browser_use import Agent, Browser, BrowserConfig browser = Browser( config=BrowserConfig( headless=False, user_data_dir="./profile_chrome", ) )第一次运行时手动登录一次网站,之后 Agent 启动时就会自动复用 Cookie 和登录状态。这个方法在实测中非常稳定,避免了每次任务都要处理验证码的问题。需要说明的是,user_data_dir 这种复用方式如果使用的是 Chrome 本身的用户目录,可能存在版本不兼容或其他未知风险,更推荐单独指定一个专用的 profile 目录,保持隔离、方便排查。
6. 选型结论:每个方案都有自己的位置
6.1 推荐 BrowserUse 优先的场景
如果你主要处理的是网页内任务,BrowserUse 几乎是无脑选择。典型的场景包括:
- 网页自动化测试,特别是测试流程复杂、需要人工点击验证的页面
- 数据采集和监控,比如跟踪商品价格、抓取公开信息、生成日报
- RPA 替代方案,尤其是不想被商业 RPA 软件的授权费套牢的团队
- 智能体原型开发,需要快速验证一个想法时,BrowserUse 的 open-source 属性和 Python API 让二次开发变得非常容易
BrowserUse 作为一个开源项目,真正解决了商业工具在数据和流程上不透明的痛点。你可以看到每一步操作、每一次模型决策,可以随时打断和修正,完全掌控整个自动化流程。
6.2 仍在 Computer Use 的场景
Computer Use 有一块护城河是 BrowserUse 目前够不着的:操作范围。它是系统级的智能体,能操作任何桌面软件、跨应用协作、处理非网页任务。如果你的目标是让智能体操作微信、Excel、Photoshop 之类的原生应用,Computer Use 才是对的方向。
不过我也得补一句:如果你仔细分析日常工作中哪些操作是真正高频的,会发现超过七成的数字化操作其实都在浏览器里完成。这也是为什么 BrowserUse 这类垂直化智能体在真实工作流中性价比更高。
6.3 我的最终选择
一轮测试下来,我个人的工作流已经切换到 BrowserUse。日常的网页自动化任务,比如批量整理开源项目信息、定期监控数据变化、生成结构化报告,都由它完成。而且整个流程透明可控,出了问题我能立刻看到是哪一步决策错误。
BrowserUse 这个开源项目让我确信,智能体领域的竞争正在从"模型能力"向"工程化能力"扩散。模型是发动机,但真正决定一辆车好不好开的,还有底盘、转向、悬挂——BrowserUse 做的正是把发动机装到一辆结构扎实的车里。它的意义不只是一个工具,而是一种可组合、可扩展、可掌控的自动化范式,让普通开发者也能把大模型的能力落地到真实业务场景。
如果你的需求刚好落在浏览器自动化和智能体这个交叉点上,我强烈建议你花一个下午试试 BrowserUse。它能让你既保留开源的自由,又享受智能体技术带来的效率提升——这种体验,是闭源 API 很难给的。