Jev Ultrafast 是什么:把浏览器 Agent 从“看截图”变成“选 DOM 动作”的超快开源项目
摘要
Jev Ultrafast 是 Browser Use 团队新开源的高速浏览器 Agent:它不依赖逐步截图,而是从 DOM 中提取可操作元素,让 Jev 直接选择动作与目标。本文介绍它为何能把 Google Flights 示例做到约 7 秒,以及安装、配置、Python 调用方式和当前限制。
本文目录
Jev Ultrafast是什么
Jev Ultrafast是 Browser Use团队刚开源的一套浏览器 Agent实验项目。它想解决的不是“让模型更聪明地看网页”,而是把每一步浏览器操作压缩得更直接:先从当前页面 DOM中提取真正可操作的元素,再让 Jev在一个动态、带索引的动作空间里选择“做什么”和“操作哪个元素”。只有当动作确实需要输入文字时,才额外调用一个小型文本模型生成输入内容。
这套思路和常见的截图式浏览器 Agent很不一样。很多方案每一步都要截图、把整张页面交给视觉模型理解,再生成鼠标坐标或自然语言动作;Jev Ultrafast默认不靠截图驱动操作,而是读取页面中可交互的 DOM/ARIA控件,为它们建立索引,然后把候选动作限制在当前真正可执行的元素上。减少无关视觉信息和浏览器往返之后,单步决策会轻很多。
项目目前非常新,仓库在2026年9月才出现公开提交,但已经因为演示速度受到关注。官方给出的 Google Flights示例中,从苏黎世搜索到伦敦的单程航班,在包含模型调用、文本生成、浏览器操作和页面等待的情况下完成一次验证运行用了7.073秒。
它为什么会快

Jev Ultrafast的关键不是单纯换了一个更快的模型,而是重新设计了浏览器 Agent的动作空间。一次决策中,Jev同时选择操作类型和目标元素,例如 CLICK、TYPE_TEXT等,而不是先让模型生成一大段操作描述,再交给另一层逻辑解释和执行。
页面上的可操作元素会被动态编号。模型看到的是经过筛选后的结构化状态,而不是整页像素。不同动作也只会暴露与之兼容的目标,例如 CLICK只能落到可点击对象上,输入动作只面向可以接收文本的控件。这相当于提前砍掉大量不可能的答案,让模型更多是在“选择”而不是自由生成。
Browser Use团队还把浏览器连接放在 Browser Harness上,通过一个 CDP会话持续读取和操作页面,避免每一步反复启动子进程或进行大量协议往返。官方对同一 Google Flights任务做了6次交替运行,两组都通过了3/3的结果验证;优化后的中位耗时从9.450秒降到7.092秒,浏览器协议调用的中位数从1092次降到101次。这个结果很亮眼,但它只代表同一个任务、同一个浏览器配置下的小样本测试,并不能直接等同于通用网页任务都能加速25%。
怎么安装和跑起来
Jev Ultrafast目前要求 Python 3.12及以上,项目使用 uv管理环境。最直接的方式是克隆仓库并同步依赖:
git clone https://github.com/browser-use/jev-ultrafast.git
cd jev-ultrafast
uv sync
cp .env.example .env接着需要在 `.env` 里准备两类密钥。`TYPESAFE_API_KEY` 用于 Jev决策模型;当动作需要输入文字时,还要用 `TEXT_MODEL_API_KEY` 调用一个 OpenAI兼容的文本模型。仓库示例默认通过 OpenRouter调用 `inception/mercury-2.5`,也可以按兼容接口配置 Gemini、GLM或 DeepSeek等模型。
TYPESAFE_API_KEY=
TYPESAFE_MODEL=jev-latestTEXT_MODEL_API_KEY=
TEXT_MODEL_BASE_URL=https://openrouter.ai/api/v1
TEXT_MODEL=inception/mercury-2.5
TEXT_MODEL_REASONING=none配置完成后运行:
uv run jev然后打开本地页面 `http://127.0.0.1:8766`,即可看到官方演示界面。界面会展示当前页面中编号后的元素、各操作的概率、目标元素概率以及最终实际执行的动作。Chrome通过 Browser Harness连接,如果浏览器没有正确接入,可以先运行:
uv run browser-harness --doctor在代码里调用
除了演示界面,Jev Ultrafast也提供了简单的 Python Agent接口。下面的例子会打开 Google Flights,并持续运行,直到符合目标的航班结果出现:
from jev_ultrafast import Agent
with Agent(
"https://www.google.com/travel/flights?hl=en",
"Find one-way flights from Zurich to London on September 20, 2026, "
"for one adult in economy. Stop when matching flight options are visible.",
) as agent:
for state in agent.run():
print(state["elapsed_ms"], state["status"])运行自己的脚本时,可以让 uv自动加载环境变量:
uv run --env-file .env python your_script.py项目仓库还带了 Wikipedia、Google Flights等示例。它的使用方式很直接:给一个起始 URL,再用自然语言写清目标,Agent会根据每一步实际读取到的控件决定下一步动作。
目前还不能把它当成万能浏览器 Agent
这个项目目前更像一个速度和动作空间设计的 MVP,而不是已经覆盖所有网页环境的成熟自动化框架。官方明确列出了多项限制:当前 DOM读取主要覆盖常见 HTML和 ARIA控件,对完整 accessible-name规范还没有完全实现;Shadow DOM、iframe、canvas、文件上传、弹出新标签页、嵌套滚动和任意键盘组件等场景仍不在当前 MVP的覆盖范围内。
另外,模型选择 `DONE` 也不等于任务真的成功,官方示例会再用独立逻辑验证页面结果。这个设计很重要,因为速度越快,越不能把“模型认为做完了”和“网页真实状态已经满足目标”混为一谈。
Jev Ultrafast真正有意思的地方,是它把浏览器 Agent的重点从“让大模型看懂整个页面”挪到了“只把当前能做的动作交给模型选择”。如果这套方式能继续补齐复杂网页控件、跨 frame、上传和多标签页等能力,它可能会成为高频网页 Agent的另一条路线:不是不断增加视觉理解和推理成本,而是把每一步可选动作收窄,让浏览器自动化更像一个高速的结构化控制系统。