LLM 网页 UI 自动化六方案全录:Jev 的价值、laya 的证伪与本地平替 NeoHorse
实测日期:2026-09-23 ~ 09-29 · 环境:某医药电商测试环境(已脱敏) 起因:公众号展示"Jev 决策 + 小模型规划"的网页自动化范式,并称通用小模型 laya 可平替 Jev。本基准验证三件事:Jev 的价值到底在哪、laya 能不能接棒、以及跨境云 Jev 能否用本地 4B 判别式模型替代。 模型规格:“bu-30”=
browser-use/bu-30b-a3b-preview(30B 总参稀疏 MoE,每 token 激活约 3B,本机双卡 vLLM);“NeoHorse”=TokenRhythm/NeoHorse-Jev-4B(Apache-2.0,Qwen3.5-4B backbone + 判别式 pointer head,本机部署)。 测法:同执行器横比,每方案 n=5(F 组采购链路首测 n=1,表中已标注),全轮 pass 才计均时,失败轮不剔除。
一句话结论(全部有数据兜底)
- Jev 的价值 = 让激活 3B 量级的稀疏小模型直接具备生产可用的网页操作能力:同一个 bu-30,自己选元素 0/15;挂上 Jev 两个用例双双 5/5、50 次决策置信度全部 ≥0.85。
- Jev 的天花板 = 云端、无自托管:1.03s/步的实测延迟经官方姿势优化可压到 0.46s,但跨境 RTT ~210ms 不可消除(官方仅 OpenRouter 云端,不能自建)。
- 本地平替初证:NeoHorse-Jev-4B(本地 4B)替代云 Jev,决策单价口径下成立——登录稳态 0.04s/决策(全轮均值含预热 0.06s)vs 云 Jev 1.15s、采购首测 0.24s vs 云 Jev v2 0.46s(同一脚本
DECISION=开关可切换,此口径可比)。总时长结论暂未下:登录 F 组用冻结计划与 B/C/D 不可比,采购 F 组仅 n=1(见「变量控制审计」)。 - laya 平替 Jev 的设想被证伪:0/15,判别式先验坍缩(详见下文)。
变量说明:每组的 规划 × 决策 × 环境
| 组 | 规划 | 决策 | 环境批次 | n |
|---|---|---|---|---|
| A | bu-30(browser-use 内循环,无独立决策层) | 同一 LLM 看全页 DOM | 09-23 | 5 |
| B | bu-30(t_plan 均 0.51s) | 云 Jev(v1 姿势) | 09-23 | 5 |
| C | deepseek-flash(t_plan 均 8.9s) | 云 Jev(v1 姿势) | 09-23 | 5 |
| D | deepseek-flash 规划+直选合一 | 同左 | 09-23 | 5 |
| E | bu-30 | laya(证伪) | 09-23 | 15 |
| F登录 | 冻结计划(无 LLM 规划调用) | NeoHorse 本地 | 09-29 | 5 |
| F采购 | deepseek-flash(t_plan 8.35s) | NeoHorse 本地 | 09-29(sbo 适配后) | 1 |
F 组登录用冻结计划是有意设计——让决策层成为唯一变量做机理性对照;代价是总时长与 B/C/D 不可比(它们各付了 0.5~1.3s 规划税)。F 组采购规划模型与 C/D 相同,但环境已是 sbo 收银台改造后的新版本,与 C 组(09-23)总时长对照混入环境变量,且 n=1。
基准设计
四层架构,六组方案只换"规划模型 × 决策层"这一个变量,判据、安全闸、执行器逐行相同:
- 规划层:LLM 把意图拆成步骤(action / what / value)
- 决策层(被比较变量):每步(英文动作描述 + 元素清单)→ 目标元素编号
- 执行层:Playwright 确定性回放
- 判定层:代码硬断言(URL 特征 + 页面关键文本双条件),绝不问 LLM 成没成
六组:A bu-30+browser-use · B bu-30+Jev · C deepseek+Jev · D deepseek 直选 · E bu-30+laya(证伪) · F 规划+NeoHorse 本地决策
- 用例一 短信登录(4 步短任务)
- 用例二 采购链路(10 步长任务:搜索→悬浮加购 3 件→结算→采购金支付)
结果总表
用例一:短信登录
| 方案 | 准确率 | 均耗时 |
|---|---|---|
| bu-30 + Jev | 5/5 | 12.2s |
| deepseek + Jev | 5/5 | 12.7s |
| deepseek 直选 | 5/5 | 11.8s |
| bu-30 + browser-use | 5/5 | 15.9s |
| bu-30 + laya | 0/15 ❌ | 4.4s 即崩 |
| 冻结计划 + NeoHorse(本地) | 5/5 | 10.8s※ |
※ F 组登录用冻结计划(无 LLM 规划调用),与 B/C/D(含 0.5~1.3s 规划税)总时长不可比;可比口径是决策耗时:0.06s/决策 vs 云 Jev 1.15s、直选 0.87s。
用例二:采购链路(10 步)
| 方案 | 准确率 | 均耗时 | 10 步决策合计 |
|---|---|---|---|
| bu-30 + Jev | 5/5 | 34.9s | 11.2s(≈1.1s/步) |
| deepseek + Jev | 5/5 | 41.6s | 10.3s |
| deepseek 直选 | 5/5 | 41.8s | — |
| bu-30 + browser-use | 迷失 ❌ | — | 94+ 步未到结算 |
| deepseek + browser-use | 5/5 | 49.7s | — |
| deepseek 规划 + NeoHorse(本地) | 1/1 | 35.2s(n=1) | 2.4s(0.24s/步) |
bu-30 对照组是 Jev 价值最硬的反证:同一个 bu-30,在 browser-use 里自主边看边选,长链条直接迷失(94+ 步反复重启搜索、幻觉自造网址);挂上 Jev 后同一模型 10 步一次不错走完。长任务崩的不是"模型会不会操作",而是"每步选元素的活有没有人接管"。
Jev 价值的四条实证
1. 对照组证明:没有专用决策层,小模型玩不转网页
laya(被点名的"平替")在同一执行器上 0/15,三变体各 0/5。崩法很有代表性:放着明显的 [4] <input> 手机号码 不选,去选 tab 和 div;且错选置信度 0.33 高于正确答案的 0.15——置信度门控救不了它。192 条裸决策底稿最好变体仅 56%。定案:低准确率主因不是中文,是没有"网页状态→选元素"训练数据导致的判别式先验坍缩。
2. 同一小模型 + Jev = 立刻 5/5,且长任务不退化
bu-30 挂 Jev 后 4 步登录 5/5、10 步采购也 5/5(两批独立复跑均值均 34.9s)。全场 50 次元素选择置信度最低 0.85、无一选错——规划层负责"做什么",“在哪做"全部交给决策层,小模型短板被整个绕开。
3. 跨语言匹配是隐形刚需
规划层输出英文动作描述,页面元素全是中文。Jev 英文动作→中文元素 conf 稳定 0.85~1.0。bu-30 这类小模型生成中文会乱码,英文提示词是唯一可靠姿势——决策层必须扛住跨语言,这是"小模型+决策层"组合能成立的前提。
4. 成本结构:便宜到可以按步计费
单次决策约 $0.00002(用例二一整单 10 次决策 <$0.0003);每步只上送几十条元素标签 + 一句英文动作——对比"每步把全页 DOM 喂给大模型"的 agent 方案,上下文体积差着量级。
延迟口径修正(09-29 审计):实测 ~1.0s/次 = TLS 重握手 ~0.40s(基准实现缺陷)+ 跨境 RTT ~0.21s(不可消除)+ 服务端推理 0.24s;网传"原生 3580ms"未经证实。详见下文「延迟深潜」。
Jev 的诚实边界:大模型在场时零增量、云端无自托管
- 登录用例:deepseek 直选 11.8s 比 deepseek+Jev 12.7s 还快——多交一次 API 网络税,没换回准确率(都 5/5);采购用例 41.6s vs 41.8s 打平。
- 决策层的强弱只在"规划模型自己选不准"时才兑现价值。有强模型 API 且不在乎成本,直选即可。
- 官方文档核正(docs.typesafe.ai):Jev 是 System One 决策模型,官方明确反对 agent while-loop——我们的四层架构与官方一致;但其仅 OpenRouter 云端、无自托管选项,中国用户 ~210ms RTT 地板锁死。想要更低的延迟,只能本地化——这正是本基准后半程转向 NeoHorse 的原因。
延迟深潜:1.03s → 0.46s → 0.24s 的三级跳
| 阶段 | 每次决策 | 做了什么 |
|---|---|---|
| v1 基准实测 | 1.033s | TLS 重握手 ~0.40s(每步新建连接)+ 跨境 RTT ~0.21s + 服务端 ~0.24s |
| v2 官方姿势 | 0.461s | requests.Session keep-alive 消除握手 + 结构化英文 state + conf≥0.5 门控 |
| v3 本地 NeoHorse | 0.24s(采购)/ ~0.04s(登录) | 彻底去掉跨境链路(RTT 地板不存在了) |
方法学附注:t_plan(规划层耗时)是端到端噪声主源(ds 单次 4.7~15s 波动,远大于决策层差异)——评估决策层必须分口径记录(sel_time),否则会被规划波动淹没。另:“代理网络税"说法经实测作废(代理链中位 805ms vs 直连 1335ms,税在握手与 RTT、不在代理)。
本地平替 NeoHorse-Jev-4B 工程实录
为什么能平替:判别式架构(prefill-only,无自回归)+ 专训"网页状态→选元素”——裸选微测 16/16(中英 × 4/26 选项,p_max 0.92~0.9997);laya 同题上限 56%,此模型无坍缩先验问题。延迟 keep-alive 稳态 ~43ms/次(28ms@4选项 / 79ms@26选项)。
两用例实测(只报可比口径):登录 5/5,决策合计 0.25s/4 次决策=0.06s/决策(对照:云 Jev 同用例 1.15s、直选 0.87s);采购链路 1/1,决策 2.4s/10 步=0.24s/步(对照:云 Jev v2 同脚本 0.461s、v1 1.033s)。两组总时长与 09-23 各组不可直接比——环境已换(sbo 收银台)、n 也不同,见下方审计。
采购链路首测踩掉的 5 个坑(全为工程适配,非模型能力):
- 名词化指令失效:直接问 “homepage search box” → 模型选"搜索"按钮(conf 0.42 错选);改成动词化模板(“Which element should receive the input text ‘板蓝根’ for this action: ‘fill the …’?")→ conf 0.98 选对。click/hover 同理展开。
- state 超 2048 token 上限(HTTP 422 “state exceeds 2048 tokens”):搜索页 100+ 元素折进 state 爆限 → state 瘦身(只留情境句+动作),元素清单全量走 criteria 通道(实测 100 条 OK)。
- 页面阶段匹配泛化 bug:
"search"子串抢先匹配#/indexContent?...searchkey=,把搜索页误判成"homepage”——4B 判别式模型被误导选导航元素;修正匹配顺序。 - 新手引导层(“下一步(1/2)“每轮弹出、全屏挡卡片):预处理循环点掉。
- 判别式模型的"站点语"依赖:“推荐卡片"抽象概念全灭(4 种通用表述 conf 0.13~0.28 全选空元素);把站点标记词(“首推"标签)写进 state 注记后 conf 0.38 选中对卡。⇒ 结论:判别式小模型定位站点特定元素靠标签 token 而非抽象概念——抽象描述失败时,注入站点 UI 标记词,而不是把答案写进指令。
部署要点:单并发(GPU lock,忙时 429/529);conf 是未标定统计量 (max(p)-1/K)/(1-1/K)(0.5 门控实测可用);state≤2048tok;常驻约 10G 显存——与生产栈排他让位(起前先停生产 vLLM、测试完恢复,全流程纪律化)。
环境漂移与全链闭环(链路人机协作)
站点半月内三连变脸,全部定位+修复,终以真码人机协作闭环 paySuccess:
| 漂移 | 根因 | 修复 |
|---|---|---|
| 快照只剩 2 元素、填表崩 | 「温馨提示」错误弹窗跨 SPA 路由残留 | 快照前置 JS:只点可见的确认 |
| hover/click 全 30s 超时 | 新手引导全屏遮罩 | 引导层前缀点掉(≤5 轮) |
| 提交订单不再直达 paySuccess | 站点新增 #/sbo 收银台中间页 | 断言链扩展:sbo 分支 + 二次提交 |
| sbo 提交弹「采购金支付安全校验」 | 短信风控(换登录态必触发;固定测试码仅登录接口有效) | 真码人机协作:脚本提示→人工填码→确认 |
闭环实录:全链 29s——数量 3@10s → sbo@25s → 短信弹窗@28s → 真码填入 → paySuccess 双证齐(订单号已脱敏)。
变量控制审计(09-29 复核,结论按可比口径分级)
| 结论 | 成立度 | 依据 / 限制 |
|---|---|---|
| 决策单价:NeoHorse ≪ 云 Jev(登录 0.04 vs 1.15;采购 0.24 vs 0.46/1.03) | 稳 | 同脚本骨架只换决策 API(DECISION= 开关),规划/执行/判定冻结 |
| 跨语言、小模型可用性(B vs E、B vs browser-use 迷失) | 稳 | 同执行器同判据,n=5/15 |
| 登录"NeoHorse 总时长六方案最快(10.8s)” | 撤回 | F 用冻结计划、B/C/D 付规划税(0.51/1.3/1.27s),规划变量未控制;只可作机制性演示 |
| 采购"NeoHorse 35.2s 比 C 组 41.6s 快” | 存疑 | 规划已对齐(同 deepseek-flash),但 n=1 无显著性,且环境跨批次(09-23 直达 paySuccess → 09-29 sbo 收银台+短信风控) |
欠账(补测清单):①F 组采购 n=1→5;②与 C/D 同环境重跑对照(或把 B/C/D 在 sbo 环境重跑);③登录 F 若要比总时长,需换回 LLM 规划与 B/C/D 同口径各跑一遍。
选型建议
| 场景 | 建议 |
|---|---|
| 生产长链任务 + 本机有 GPU | 本地 NeoHorse 决策 + 小模型规划(决策 0.24s/次、无 API 成本、无跨境依赖;n=1 初证,见审计) |
| 成本敏感 / 边缘 / 无本地 GPU | 稀疏小模型 + 云端 Jev(小模型可用的门票,34.9s) |
| 有强模型 API、不在乎 token 成本 | 大模型直选,不必加决策层 |
| laya 类通用小模型做决策层 | ❌ 证伪,仅限其训练域(文本分类/分流) |
| 站点特定元素定位 | 判别式决策层 + 站点标记词注记(“首推"类标签直接写进 state) |
资产
~/jev-laya-test/— 六组脚手架(bench_cart.py支持DECISION=jev|nh|llm、JEV_V1=1旧姿势对照)、全量结果 JSON(bench_cart_ds_nh.json等)、全部踩坑记录- 决策层延迟审计脚本(
audit_jev_latency*.py)与离线冒烟(audit_jev_v2_smoke.py) - NeoHorse 部署与调用姿势详见技能
llm-ui-automation(含部署实录、站点注记机制、GPU 让位序列)