浏览器自动化最常见的翻车,不是选错按钮,是没选出按钮。
我拿头条发布页做实验。15 个候选按钮摆在 qwen3.8-27B 面前——预览、预览并发布、定时发布、清空正文、编辑……我让它只回一个数字:该点哪个。
它跑了 4 秒,正文空着,一个字没吐。
它不是选错,是根本没选出来。
划重点,这不是它笨。是浏览器自动化最要命的病——**让生成式模型做选择题**。它先想"这题什么意思",再想"候选哪个对",再想"该用什么格式回",额度烧完了,答案还没吐。
有另一种模型,不生成,只选。
它叫 Jev,TypeSafe AI 出的。
browser-use 官方那个 jev-ultrafast 项目,README 原话这么写:
> "TypeSafe's Jev picks an operation and an element"——Jev 选操作、选元素。
我拿头条发布页实测:15 个按钮候选,Jev 0.7 秒选中「预览并发布」,置信度 0.98;qwen3.8-27B 跑了 4 秒,一个字没吐出来。
我先跑,再说话。
账本摆出来。

丑话说前面:Jev 不全面赢。批量风险分级那块,它 5 个动作全判成 destructive,只蒙对 2 个;qwen3.8-27B 5/5 全对。

分开问,Jev 能恢复到 4/5。这说明它擅长**聚焦单决策**,不擅长批量多问——这是用它的第一条规矩。
那怎么分工?
一句话:**Jev 管「点哪个」,qwen3.8-27B 管「填什么」。**
Jev 做选择和判断,不生成文本。qwen3.8-27B 管输入框里打什么字。browser-use 官方的 `jev-ultrafast` 项目就是这个架构,不是我拍脑袋。
具体怎么搭?我写好了三个函数,今晚就能接。我拿我们自己的浏览器自动化流程走了一遍:
**场景:让 AI 帮你把文章发到头条。** 整个流程就四步,每步谁干都分好了:
**第一步,列候选(谁都不干,浏览器干)**把页面上所有按钮列出来,带上文字。这一步纯 DOM 读取,不涉及模型:
```候选 = ["预览","预览并发布","定时发布","清空正文","编辑",...(15 个)]```
**第二步,Jev 选(0.7 秒)**把候选 + 目标"把文章发出去",一次 POST 给 Jev:
```POST api.typesafe.ai/v1/systemone{"state": "当前任务:把文章发布出去","questions": [{"type": "choice", "question": "该点哪个?","choices": ["预览", "预览并发布", "定时发布", "清空正文", "编辑"]}]}```
Jev 回:`预览并发布`,置信度 0.98。0.7 秒。qwen3.8-27B 跑同一个问题,4 秒,空正文。
**第三步,Jev 判风险(0.7 秒)**点之前再问一句:
```{"type": "choice", "question": "这个动作风险等级?","choices": ["safe", "risky", "destructive"]}```
Jev 回:`safe`,置信度 0.91。如果是 destructive,就暂停,弹给人看。**必须一次只问一个动作**——我试过把 5 个动作一起问,它全判 destructive,塌了。
**第四步,qwen3.8-27B 填表单**发布前有个输入框,要填"文章标题"。这一步 Jev 不干(它不生成文字),丢给 qwen3.8-27B:
```qwen3.8-27B("根据以下正文,生成一个 20 字以内的标题:...")→ "实测 Jev:0.7 秒选对按钮,qwen3.8-27B 跑了 4 秒没选出来"```
点「预览并发布」。完事。
**第五步,Jev 验证(0.7 秒)**点完读回页面状态,问 Jev:
```{"type": "noul", "question": "文章发布完成了吗?"}```
Jev 回:`done=True`,置信度 0.82。如果是 0.59 这种边缘值,它回 `done=False`——不确定就低分,留给你 30 秒人工判,不硬当成功。
五个步骤,三个模型分工:- 浏览器列候选(DOM)- **Jev 选 + Jev 判风险 + Jev 验证**(每个 0.7 秒)- **qwen3.8-27B 填表单**(30 秒,免费)
这就是 browser-use 官方 `jev-ultrafast` 的架构,我按它写了三个 helper,你直接抄:
```pythonpick_element(candidates, goal) # Jev 选check_action(action) # Jev 判风险(聚焦单问!)verify_done(action, expected) # Jev 验证完成```

我卡哪了,也认。
第一,**它只答选择题。** 输入框里的字它写不出来——那是 qwen3.8-27B 的活。Jev 是裁判,不登场。第二,**批量问会塌缩。** 5 个动作一起问,它全判 destructive。分开问,4/5 对。规矩就一条:聚焦单决策,一次只问一个。第三,**置信度 0.59 这种边缘值,它不硬判。** 我让它判"文章发布完了吗",它回 done=False、置信 0.59——不确定就低分,留给你 30 秒人工判,不是替你判。
它比你聪明吗?不比你聪明。
你的选择题,它 0.7 秒答完。你的填空题,qwen3.8-27B 30 秒填完。两个搭一起,浏览器自动化从"猜"变成"选",不再空正文。