少女祈祷中...
一言即诺
AI观察

一个死活说不出口的 DONE

阅读 -- 次

一个死活说不出口的 DONE

故事是这样的。

九月二十三号,我租了一台 GPU 云主机,A10,24G 显存,包月一千八百八,坐标华北。就想验证一件事,就是最近 AI 圈里那波「非自回归决策小模型」,到底能不能替掉我那个驱动浏览器的大模型。

当天测完,当天判死,服务和数据当晚删得干干净净,第二天包月也退了订。有意思的是那台机器的 IP,前后在 known_hosts 里留下了三条指纹,早被人回收走了,像它从来没存在过一样。

为什么我会走这条弯路,怎么撞的墙,后来又捡回了什么,这篇文章从头到尾给你讲完。所有数字都是自己机器上跑出来的实测,不是转述,跑废的部署也算在内。

先交代背景。用过 AI 操作网页的朋友大概都知道,钱和时间都烧在「思考」上。模型看一遍页面,推理一通,跟你扯三段话,最后才说,好,我点第 7 个元素。一个动作一秒五到三秒,十步任务半分钟起步,token 还全程计费。

因为它做决策的方式是写小作文。问它要不要点一个按钮,它得把论证写一遍,才落到答案上。

TypeSafe 那个叫 Jev 的东西,就是把写小作文这个环节整个砍掉。他们演示里一次机票搜索,端到端 7.1 秒。底层思路其实是个老概念,丹尼尔·卡尼曼《思考,快与慢》里的 System 1 和 System 2,人脑有两套系统,一套秒反应的直觉,一套慢悠悠的推理。LLM Agent 活在第二套里,Jev 赌的是第一套。

反射有多快。一次前向传播,不生成任何文字,直接吐类型化的答案,选择题选哪个、打分多少、是非题是还是否,附带一个校准过的置信度。这个置信度是全文的主角,后面你会反复见到它。

Jev 本体是闭源云端 API,但社区抄出了开源平替 Kev,竞品 laya,最近又冒出个 jevos。三个,我全试了。

第一轮,Kev,开局最漂亮,收场最难看。

Kev 是 jaredpalmer 的项目,Apache-2.0,Qwen3.5 的 0.8B 到 9B 加了个 pointer head,协议跟 Jev 云端兼容。我先在 16G 的 M2 上试了 0.8B,走 MLX 的 MPS,单条 81 毫秒。拿一批我自己写的规则判断题测,是非 15 题全对,选择 15 题对 13。

更有意思的是错的那两题,置信度自己掉到 0.15。

你品品这个事。模型不仅给你答案,还告诉你它有几成把握,答错的时候它自己心虚。那这条路线就能搭一个很实用的小架构,高置信度的直接自动放行,低置信度的升级给大模型或者转人工。这是整趟折腾里我挖到的第一个真金。

但浏览器决策上它当场露馅。0.8B 在一个 12 个元素的页面上基本就是掷硬币,CLICK 置信度 0.33,DONE 置信度 0.31,五五开,然后对着同一个元素连点不放。纯 CPU 跑要 1.5 秒一条,没提的价值。

我寻思可能是参数量太小,这才有了开头那台 A10。

Kev-4B 在 A10 上的数据很好看,每 query 22 毫秒,选择题 15 题对 13,是非 15 题对 14。端到端接上浏览器 harness,百度和 Bing 都测了,搜一个词,选输入框、填文本,全对,置信度 0.92 到 0.96,文本内容另交给百炼 flash 来写,百度还真出了结果页。

但是。

它到死都不肯宣布 DONE。填完搜索框,正确的动作是点「百度一下」或者按回车,它不改选按钮,不提交,就对着同一个输入框一遍遍刷,置信度也不降,不报 BLOCKED,直接把任务耗到超时,一个任务 15 到 22 秒。

4B 也是这个病。0.8B 反复重点同一元素,4B 反复重点同一输入框,同一款收尾灾难,只是程度轻一点。当时我就认定了,浏览器这条线上,单步选择可用和多步任务能跑,中间隔着一道结构性的鸿沟,不是参数量能填的。

顺带一提,这轮踩出来的元素表构造学问,比模型本身值钱。元素必须按类型标好 kind,搜索按钮标成 button,你要是标成 field,模型就会对着按钮「输入文字」,无限循环。百度搜索框的 placeholder 是当天的热搜词,不显式标一句「这是搜索输入框」,模型眼里目标就成了热搜标题。这些坑,没有一个写在任何 README 里,全是拿失败换来的。

第二轮,laya,一次「排除→翻案→判死刑」的完整循环。

laya 也是同赛道的非自回归决策引擎,pip 可装,带一个按语言路由的 Router。我第一次评估它的时候,看了旧版的结论就直接排除了,两个理由,吞吐要攒批才起得来,校准偏弱。

十月初回头看,这两个理由都被上游后续版本改写了。攒批的说法没了,校准实测也能用。我白扣了人家一个帽子,根因不是 laya 变了,是我拿过期的笔记当事实。现在我们评测任何活跃项目之前,先花一行时间读当前 README 和 releases,旧结论自动作废。这个教训我觉得比后面所有延迟数字都贵。

10 月 7 号重建环境重测,v0.3.28,还是那台 16G M2。稳态延迟,纯 CPU 单发,英文一条 57 毫秒,中文 30 毫秒,比还需要 MPS 的 Kev-0.8B 更快,「必须攒批」彻底翻案,160 条攒批发出去,单条 36.7 毫秒,跟单发比没有增益。

校准这轮拉了三分位,置信度最低的那一档题,正确率 0%,中间一档 77%,最高一档 71%。错例的置信度会自己掉到 0.009。门控成立,第二次验证了那桶金。

质量上零样本还是弱,中文是非题有一半直接漏判。但翻开 README,人家写得明明白白,自己是「快速可特化的底座」,不是开箱即用的决策器。官方数据摆在那,零样本约等于随机基线,拿带标签的业务数据用 laya-train 微调之后,浏览器任务成功率从 0 拉到 62%。我本机把微调管线也跑通了,喂一个标签 CSV,几分钟出 checkpoint,注册进 Router 就能推理。

所以 laya 的正确姿势是等,等你手里真有一批标注数据的那天,现在它给不了你惊喜。

对了,它还有个浏览器特化版,322M 参数,这轮是我全程最意难平的一段。

官方自己的消融实验里有一条,特别狠,把决策模型从 322M 升级换成 27B,每步 4.7 秒,反而输给 322M 的 21 毫秒。大不一定强,这句话在别处是鸡汤,在这里是实验数据。

官方成绩单也坦诚,单步操作准确率 0.88 上下,但多步真实网站测试,只跑得到 20% 出头。失败里六成是同一个原因,「停得太早」,搜索都做完了,在结果页就直接 DONE。

我当时看到这段就愣了,这不跟我们弃 Kev 时是同款病吗。人家作者天天泡在这个模型上,都治不好这个收尾。

还是本机端到端复测,Chrome 调试口直连。这一次,TYPE_TEXT 选中输入框,填词,回车,提交成功,稳稳落在结果页,置信度 0.76 到 0.83。那一瞬间我是真兴奋,Kev 时代连提交这步都过不去,特化版真补上了。

然后,点搜索结果。

熟悉的画面回来了。对着同一个元素连点,不判 DONE,置信度一路递减,新开的标签页不追,换到维基的单步跳转,干脆来了个假 DONE,停在一个根本不是目标的页面上。

判词我写得很平静。322M 单发决策模型的多步收尾,在真实网站上属于结构性不可用,Kev 和 laya 同分落败。浏览器自动化这条线,到此为止,别再投了。这不是速度问题,不是大小问题,是这类「反射脑」天生缺一块负责说「到此为止」的组织。

顺便讲个阴间插曲。Chrome 144 之后加了安全弹窗,每次新建调试连接都弹一句「要允许远程调试吗」,没有记忆授权,官方 issue 关了不修。维护者给的口径就两条,要么一次运行复用同一根长连接,每轮只弹一次,要么开一个没有登录态的专用实例。你 AI 再快,也躲不开人肉点一下确定。

第三轮,jevos,最后捡回来的那个。

10 月 8 号,laya-browser 判决第二天,我碰到了 jevos-v4,feder-cr 的开源项目,1.2k star,MIT,单 C++ 二进制加 OpenVINO INT8,免 Python,免 GPU,定位就是 TypeSafe 云端 Jev 的本地平替,协议原样兼容。

部署简单到让人不好意思。22M 二进制加 630M 权重包,SHA256 校验,解压放好,serve,8.3 秒就绪。唯一的坑是模型目录必须和二进制同级,放错报 model.json cannot read。内存实测 2.4G,README 写的 1G 属于谦虚。

延迟,短请求一百零几毫秒,中文判断题二百一到二百五,同一个状态第二次提问降到 60 多毫秒,内置快照缓存。长文冷读每 token 3 到 4 毫秒,喂一整篇 3500 token 的原文要 7.5 秒,所以别这么干,先抽摘要进 state。

质量测试最有嚼头。规则写进题目里的那种是非题,中文 6 题全对,YES 置信度 0.86 到 0.95,NO 0.04 到 0.33,泾渭分明;英文同规则反而 4 题对 3,一例 0.479 压线漏掉。中文不弱,这跟 laya 的中文偏科正好相反。缺事实的样本,置信度自动掉到 0.10,门控第三次成立。零样本裸问 5 题对 7,而且系统性偏「否」,该 YES 的全挤在 0.4 以下,所以预筛的时候务必把判定规则写进题目,别指望它现场推理。上下文 8192 token,laya 的 512 在它面前是手机屏幕。

到这一步,三个本地模型可以拉出来排队定案了。

Kev-0.8B,81 毫秒,最快,但得配苹果 MPS 或 GPU,浏览器收尾的坑它亲自踩过。laya,CPU 单发 40 到 60 毫秒,比 Kev 还快,独一份的微调管线是它的杀手锏,等得起数据的那天。jevos,200 毫秒上下,比前两家慢两到三倍,换来的是免 Python 免 GPU 开箱即用、8192 长上下文、原生的是非加选择加打分、校准置信度、跟 Jev 云端协议即插即用。

落定的答案是,高置信自动放行、低置信升级大模型的分流预筛,本地路线首选 jevos。等真有了一批标注数据做专才模型,回头用 laya。Kev 的定位最尴尬,它是这条赛道的开路先锋,但今天没有任何一样独占的东西。

至于浏览器多步决策,三个模型一起埋在同一条沟里,墓碑我替它们立过了,就是 Kev 判死刑那句,单步可用不等于任务可用。那台 A10,从 23 号部署到当晚停删,满打满算只上岗了几个小时,第二天我就把包月退了订,快得像一段孽缘。。。但这一趟我觉得没白花,它买回来三件事,4B 模型 12G 显存就够、16G Mac 根本不用租卡这种硬件常识先校了一遍准,以及,跑通和能干活的距离有多远。

聊到这,把镜头拉远一点。

这一整条 System 1 路线的故事,本质是一场豪赌,赌机器做的大量决策不是推理,是模式匹配。匹配确实快,确实小,确实可以校准。但撞上的那堵墙也在同一处,反射能回答「这是什么」,回答不了「这件事完成了没有」。要不要停,是对目标和世界状态的判断,那块地方,老老实实属于慢思考。

卡尼曼那本书的结尾大概是这么个意思,人类对付直觉错误的方法,不是让自己变聪明,而是识别出自己会在哪些情境里犯错,然后在那个情境里刻意放慢,或者换一套流程。

我花三周搭的这套决策模型电路,最后没有变成什么生产系统。但它把每家模型的底裤都测出来了,延迟,校准,中文能力,微调管线,还有那块谁都没法伪造的短板。这些底细,README 不会写,评测基准不会写,只有自己下场,一台机器一台机器地撞,它才会开口。

那个死活说不出口的 DONE,我大概会记很久。

评论

总浏览 -- 次 · 总访客 -- 人 · 今日浏览 -- 次 · 今日访客 -- 人