browser-use/jev-ultrafast · 源码研究 → 离线试用 → 真实联网任务

jev-ultrafast 实战工作成果

从安装、31 条契约测试、无 API key 的离线决策循环试跑,到配置真实 key 后在真实 Chrome 上完成 Google Flights 任务并通过 7/7 独立校验——完整记录「决策层浏览器 Agent」的一次落地验证。

日期:2026-09-22 离线契约测试:31/31 通过 真实任务:✅ 7/7 校验通过 真实成本:$0.0114 / 任务

研究对象

browser-use/jev-ultrafast ⚡(17.5k★ / 6 天,MIT)
browser-use 官方出品的超快浏览器 Agent:TypeSafe Jev 从动态索引的动作空间里选出操作与目标元素,只有 TYPE_TEXT 时才由小 LLM 生成文本——「用选择替代生成」。8 种操作:CLICK / TYPE_TEXT / SELECT / SCROLL_UP / SCROLL_DOWN / WAIT / DONE / BLOCKED。
核心机制:投机扇出(Speculative Fan-out)
每轮决策把 operation 与各操作的 target 作为并行 Choice 问题放进一次 TypeSafe 请求,两次判断一次网络往返;每个 target head 只含兼容元素,未命中的 head 作废。官方 Demo:Google Flights 全任务 7.07s,Jev 中位延迟 178ms。
本环境配置
TYPESAFE_API_KEY(jev-latest,实测有效)+ TEXT_MODEL_API_KEY(DeepSeek deepseek-chat)。写入 .env(gitignored,权限 600)。浏览器层:browser-harness 通过 CDP 驱动真实 Chrome(需手动开 chrome://inspect/#remote-debugging)。

工作流程:四步从零到真实任务

STEP 1
安装与契约验证
git clone + uv sync(仅 2 个运行时依赖)。官方离线测试套件 31/31 通过(0.37s,零付费),覆盖 14 条安全契约:非法概率拒绝、过期决策先消费、文本 helper 拒绝猜值等。
✅ 31/31
STEP 2
离线试跑(无 key)
只替换两个网络边界(FakeBrowser 模拟机票站 + 按脚 本作答的假 Jev),驱动真实 Agent 代码路径跑通 9 决策 / 2 文本调用 / done,并产出完整工作日志。
✅ done
STEP 3
配置真实 key
TypeSafe key 与 DeepSeek key 均以最小请求实测验证(成本忽略不计);Chrome 开启远程调试开关后 browser-harness 自动连接 CDP 端口 9222。
✅ 双 key 有效
STEP 4
真实联网任务
真实 Chrome 上跑 Google Flights:3 次运行定位过期日期根因后,第 3 次成功完成并通过独立校验器 7/7 项检查。
🎉 成功

动作工作原理:一条动作的完整生命周期

每一步都经过同一条流水线:观察 → 动作空间 → 一次投机扇出请求 → 严格校验 → 消费决策 → 新鲜度守卫 → 执行 → 先记日志再重观察。模型输出永远只走「从观察到的 DOM 节点解析」这一条窄通道。

① 原子观察 1 次 CDP 读 · snapshot.js fingerprint = sha256(url+text+actions) ② 动作空间 元素表 [1][2][3]… 每个操作一个兼容 target head ③ 一次 TypeSafe 请求 operation + click_target + type_text_target 并行投机作答 · 中位延迟 809ms(实测) ④ 概率严格校验 候选一致 · Σ=1±0.02 · argmax 任一不过 → 拒绝执行 ⑤ 消费决策 + 守卫 decision 先置空,重试不可能双击 重查指纹 · 遮挡 · 几何 ⑥ 执行(代码拥有动作) CLICK=节点坐标+鼠标事件 TYPE_TEXT=小 LLM 单键 JSON → selectAll+insertText ⑦ 先记日志 概率/延迟/token 落盘 过期观察不能抹掉已执行动作 ⑧ 重新观察 fingerprint 对比 page_changed 写入历史 循环:回到 ①(status=ready) StalePage 页面在决策后变化 → 重新决策 熔断 blocked 连续 3 次无变化(非WAIT) · 步数≤60
安全模型:校验层保证「结构合法」(概率分布、候选一致),不保证「语义正确」——语义靠规则(DONE 需可见证据)与独立结果校验器兜底。模型输出永不成为选择器、坐标、shell 命令或可执行 JS。

工作日志解剖:三层全可审计

Agent 每步产出三层日志,事后审查无需重放。以下字段全部来自真实运行落盘的 state.json。

decisions[] —— 模型判断层
operation 与 target 的选择、完整概率分布(operation_probabilities / target_probabilities)、置信度、延迟、token 用量,以及 request 原始请求体——投机扇出在这里直接可见:questions 同时含 operation + 各操作 head。
history[] —— 执行层
实际执行的 choice、执行概率(target head 的,归因准确)、生成的文本、page_changed(执行后指纹对比,熔断的输入)、text_helper 与其延迟。被过期吞掉的决策不污染历史。
text_calls[] —— 文本生成账本
字段 → 生成值 → 模型 → 延迟 → token,独立于 Jev 计量。真实运行:Where from? → "Zurich"(667ms)、Where to? → "London"(714ms)。

真实联网实测:三次运行定位根因

🎉 第 3 次运行成功:苏黎世 → 伦敦,10 月 20 日,7/7 独立校验全过
独立校验器核验 URL、单程、出发地、目的地、日期、年份与可见航班——DONE 判定从不被当作成功的证据。
运行目标日期决策数执行动作结果根因
Run 12026-09-20108❌ blocked「Open Departure」点击 3 次页面无变化 → 无进展熔断(真实浏览器连接首跑 + 授权弹窗干扰)
Run 22026-09-2028~25❌ blocked官方 Demo 硬编码日期已过期:9 月 20 日已成过去,日历中不可选,Agent 在翻月中迷失。熔断正确兜底
Run 32026-10-207131✅ passed 7/7换未来日期后成功。总耗时 75.6s,成本 $0.0114
研究价值:官方 README 的目标日期(September 20, 2026)在录制时是未来值,发布一周后即失效——任务型 Demo 的可复现性有时效。修正版脚本 flights_future.py 已随报告附带。

实测数据 vs 官方 Demo

75.6s
总耗时(真实)
官方 7.07s
809ms
Jev 中位延迟
官方 178ms · 差异=网络 RTT
56%
决策过期作废率
71 决策仅 31 执行
$0.0114
Jev 成本 / 任务
271,559 输入 token

逐项对比(官方 Demo = 最优路径 + 低延迟链路)

总耗时
7.07s
75.6s
Jev 延迟
178ms
809ms
决策数
17
71(31 执行)
输入 token
90,558
271,559
官方 Demo 本环境实测(延迟条以各自较大值为 100% 基准)
Run 3 操作分布
CLICK 22 · WAIT 5 · TYPE_TEXT 2 · SCROLL_DOWN 2 —— 典型的「判断密集、生成极少」形态:全程只有 2 次文本生成(DeepSeek 667ms / 714ms),其余全部是 Jev 的 Choice 判断。
成本结构确认
Jev $0.042/M 输入、输出免费;单任务 $0.0114 ≈ 官方口径的 3 倍(决策数多 4 倍)。token 是唯一变量——页面稳定性直接决定花费。

任务成果:真实航班(2026-10-20 苏黎世 → 伦敦,单程经济舱)

easyJet ✈ 直飞 1h 45m
11:10 苏黎世机场 → 11:55 伦敦盖特威克
SGD 70不含行李架上包费
British Airways ✈ 直飞 2h
20:10 苏黎世机场 → 21:10 伦敦希思罗
SGD 112
SWISS ✈ 直飞 1h 50m
15:35 苏黎世机场 → 16:25 伦敦希思罗
SGD 166

关键发现

Demo 的可复现性有时效
README 硬编码「September 20, 2026」,发布一周后即过期。Agent 面对不可能目标不会硬编,而是 stuck → blocked——熔断机制正确兜底,但复现官方结果必须先换未来日期。
stale 率是真实成本的大头
56% 的决策在执行前因页面 fingerprint 变化被丢弃(价格刷新、动画)。官方「减少浏览器往返」优化针对的正是这个——页面稳定性比模型延迟更影响花费。
「ultrafast」强依赖网络位置
Jev 中位延迟 809ms vs 官方 178ms,纯 RTT 差异。决策循环是串行的,延迟直接乘在每一步上——跨区域使用时体感约慢 4.5 倍。
会 wander,但不越界
搜索页上多次绕路、误点、重复动作,但每次动作都被守卫约束在观察到的节点上;最终靠「DONE 需可见证据」规则自我纠正并通过独立校验。语义错误存在但被架构无害化。
可审计性是设计出来的
71 次决策的概率、置信度、延迟、token 全部落盘;blocked 可解释(3 次重试记录);成本可预算(计费到步)。对生产化而言,这比 7 秒的体感更有价值。

复现方式

cd jev-ultrafast
uv run pytest                                # 离线契约测试(31/31,零付费)
uv run python ../jev-ultrafast_dryrun.py     # 无 key 离线驱动真实 Agent 循环
# 真实运行(.env 填入 TYPESAFE_API_KEY + TEXT_MODEL_API_KEY):
uv run --env-file .env python flights_future.py        # 未来日期修正版,✅ 7/7 校验通过
# 产物:artifacts/flights/future-date/state.json(完整三层工作日志)

环境门槛:新版 Chrome 需在 chrome://inspect/#remote-debugging 手动开启「Allow remote debugging」;browser-harness daemon 随 Agent 启动自动拉起并连接 CDP。