截图到点击只要 85ms:用决策模型写一个不依赖坐标的 GUI 自动化脚本
截图到点击只要 85ms用决策模型写一个不依赖坐标的 GUI 自动化脚本【免费下载链接】GEV-26B-Decide-NVFP4项目地址: https://ai.gitcode.com/hf_mirrors/autotrust/GEV-26B-Decide-NVFP4传统 GUI 自动化脚本有三件烦心事坐标写死了分辨率一变就废、选择器脆弱页面一改就崩、一套流程动辄几百行“找元素 点坐标”的胶水代码。而把大模型请进控制循环的做法又太慢——让模型“生成一段话再解析出动作”单步延迟轻松上秒根本谈不上实时。AutoTrust AI 开源的 GEV-26B-Decide-NVFP4 换了一条路它不生成文本而是把“下一步该点哪个元素”当作一道选择题用一次前向传播直接输出每个候选动作的校准概率。截图进去、点击目标出来单步决策约 85ms把相机画面换成机械臂抓取任务单步只有约 61ms。本文从仓库源码出发拆解这套“决策模型驱动”的 GUI 控制循环怎么搭、为什么可以彻底告别固定坐标以及它在自动化测试与批量操作中的落地姿势。决策模型概率即答案而不是“生成再解析”GEV-26B-Decide-NVFP4 是基于 Gemma-4-26B-A4B 的开源决策模型其核心设计在仓库的 README.md 里一句话说得很清楚System 1 用单次前向传播对“是/否、2–256 选项、0–5 打分”这类问题输出每个选项的校准概率只有当最优选项的置信度低于阈值默认 0.8时才自动切换到 System 2 做逐步推理再把推理结果折回最终概率p ½p1 ½p2。关键差异在于读取方式模型最后一层隐藏状态不是用来生成下一个 token而是过一个 fp32 的决策头。仓库里的 judge_config.json 与 adapter_vllm/decision_head.json 定义了 24 个 slot——noul是/否占 2 个、score0–5占 6 个、choiceA–P 选项占 16 个。读取过程是把[kind] [state] [question] [options] A) ... [decision]:模板送进模型bare-v1模板见 serve_decide.py用allowed_token_ids只对候选 verbalizer 的 token id 取 logproblogprob 加 bias、除以每种kind的温度calibration.jsonnoul1.003 / choice1.017 / score0.999再做 softmax。没有任何自回归解码这也是延迟能压到 85ms 的根本原因。而显存方面仓库把 30 层 × 128 个路由专家的权重量化为 NVFP4 4-bit见 config.json 中的quant_algo: NVFP4权重占用从 50GB 降到 17.1GiB一张 24GB 显卡即可跑通。截图进、点击出决策模型驱动的 GUI 控制循环怎么搭整个控制循环只有四步和传统脚本的结构几乎一样只是“找元素”这一步换成了模型决策截图抓取当前屏幕/浏览器视口枚举候选把页面里所有可点击元素编号numbered boxes作为choice的选项决策把截图和选项一起 POST 给/v1/decide拿到每个选项的概率执行按概率最高的选项定位元素并点击回到第 1 步直到模型输出“the task is complete”。模型侧只需要一个POST /v1/decide端点由 serve_decide.py 提供。state字段支持混合文本与图片的列表这正是“截图进来”的入口import requests def decide(kind, state, question, optionsNone, thinkingoff): body {kind: kind, state: state, question: question, thinking: thinking, **({options: options} if options else {})} r requests.post(http://localhost:8000/v1/decide, jsonbody).json() return dict(zip(r[options], r[probabilities])), r.get(thinking, {}).get(used)对 Computer Use 场景一次调用长这样截图以 base64 传给statecurl localhost:8000/v1/decide -H Content-Type: application/json -d { kind: choice, state: [Screenshot: , {image: data:image/png;base64,...}], question: Which element should I click next to buy a blue backpack?, options: [click element 4, click element 8, click element 13, the task is complete], thinking: off}返回里直接带着对齐的options与probabilitieschoice就是本步动作。循环里把thinking保持为off保证每一步都是一次前向传播的固定延迟——这正是 85ms 的来源。一个值得注意的工程细节/v1/decide之所以能和普通 OpenAI 端点共存于同一个 vLLM 引擎是因为仓库把“决策头”实现成了lm_head 上的 LoRAadapter_vllm/里的 backbone LoRA 决策头并通过 patches/vllm-gemma4-lm-head-lora.patch 让 vLLM 支持 Gemma-4 这个 262,144 词表的 tied lm_head。启动脚本 serve.sh 一行起服务MODEL_DIRGEV-26B-Decide-NVFP4 bash GEV-26B-Decide-NVFP4/serve.sh # vLLM on :8000不依赖固定坐标的界面元素定位思路这套方案最值得借鉴的是把“定位”从像素坐标变成了元素编号每次决策前由浏览器端动态给所有可点击元素编号并生成包围框bounding box模型只负责“选编号”不输出坐标脚本拿到编号后再向浏览器查询该元素当前的坐标去执行点击。于是分辨率变化、窗口缩放、页面布局微调、甚至元素位移都不会让脚本失效——模型学的是“截图长什么样、该点哪一个”而不是“点 (x, y)”。这种“模型决策 运行时解析”的分层天然抗界面漂移。仓库的实测数据也验证了这种思路的边界。在 reports/demos/cu_results.json 里60 个随机多步任务商城下单、邮件归档、设置开关各 3–7 次点击分两种条件跑条件完成率平均步数仅元素编号纯视觉15%4.87元素编号 元素文本类似 accessibility tree95%4.82README 中给出的单步模型决策延迟约85ms与 JEV-27B-VL 的 95% 成功率持平但速度快了 3 倍后者约 260ms/步。两处细节很能说明问题一是任务里包含“给商品选颜色”这种纯色块无文字的点击模型必须只看截图做视觉决策二是只给编号不给文本时完成率断崖式下跌到 15% 且经常过早宣布完成——说明当选项超过模型视觉理解能力时把 accessibility tree 的文本作为补充信息是低成本高收益的工程手段。当候选元素超过 16 个时serve_decide.py的choice支持最多 256 个选项默认走tournament策略先按不超过 16 个一组并行打分asyncio.gather每组冠军进入最终 16 选决赛再按两轮概率加权合成最终分布见 serve_decide.py 的s1_dist。对购物车、设置页这种“一屏 15 可交互元素”的真实页面这是把决策规模撑大的关键设计。85ms 决策循环在自动化测试与批量操作里的落地示例同样一套“截图进、动作出”的循环换个输入源就是机器人控制。仓库的机械臂 Pick Place 演示MuJoCo 仿真把问题拆成了两个是/否判断题目标在夹爪左边还是右边上方还是下方机械臂按回答移动一旦回答翻转就步长减半直至抓取并放入托盘。这个“伺服式”servo控制回路每步只做一次 System 1 决策实测约61ms见 reports/demos/arm_servo.json中位 60.7ms整个抓取任务约需 24–52 次决策模型耗时 4–8 秒。20 个随机场景完成率 40%一旦抓稳9 个里有 8 个成功放入托盘。对照组更有教育意义如果让模型直接从 8 个马达指令里选一个arm_direct10 个场景全军覆没reports/demos/arm_direct.json。把复杂动作拆成小步的二元决策、再交给确定性控制器执行是实时控制回路能成立的前提——模型只管“判断”不管“规划运动轨迹”。生产化时有三条来自仓库的实战建议用置信度做门槛。默认 calibration.json 温度用于跑分如果要把动作闸门建立在概率之上README 明确建议换用 calibration_gold.json按 ground-truth 答案校准的温度noul1.214 / choice1.098并在概率低于阈值时人工介入或重试。控制循环里关掉 thinking。自适应思考只在该“想”的时候才想但推理型任务的思考中位延迟高达 13.4s见 reports/adaptive_latency_summary.json。对点击、抓取这类感知/反射任务README 的结论很直接思考几乎无增益甚至有害保持thinking: off。批量吞吐有天花板。单请求 System 1 中位 45ms64 并发时可达 257 决策/秒但如果开了投机解码给 System 2 提速System 1 并发吞吐会从 257 掉到 140 决策/秒——按你的负载形态决定是否MTP1启动。局限与取舍最后泼一盆冷水仓库 README.md 自己列出的限制同样适用于自动化场景纯视觉定位有明确下限只给编号不给文本时 15% 完成率且“过早宣布任务完成”是高频失败模式需要显式的完成判定兜底视觉决策是零样本的决策头在文本上训练图像决策没有专门训练遇到复杂长页面不要迷信成功率当前基准成绩单卡是 B200RTX 5090/H100 走 W4A16 Marlin 或 CUTLASS 路径延迟会高于 85ms 量级NVFP4 与 bf16 的对比只在 GPQA Diamond 与 HLE 两项上验证过面向自动化任务的视觉能力是否因量化受损仓库并未重新评测。把“一次前向传播选一个动作”当成 GUI/机器人控制循环的基础原语GEV-26B-Decide-NVFP4 给出的不是又一个“会聊天的模型”而是一个延迟可预测、概率可校准、显存门槛只有 17GB 的实时决策引擎。对自动化测试、RPA、巡检这类“高重复、低容错”的场景这套“模型出判断、代码出动作”的分层值得在你的下一个脚本里试上一试。演示与逐 episode 数据可在 reports/demos/ 与 videos/ 中找到。【免费下载链接】GEV-26B-Decide-NVFP4项目地址: https://ai.gitcode.com/hf_mirrors/autotrust/GEV-26B-Decide-NVFP4创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考