这两天我把 TypeSafe 刚发布的 Jev 接进来测试跑了一圈。它最反常的设定是和目前的 LLM 架构和输出物完成不同。它不生成文字,一个字都不生成,Jev 只回答你事先定义好的选择题。这个设定一开始让我觉得是噱头,不就是把输出结果强制格式化了吗?LLM 做格式化输出也不是不行。但是测完之后,我认为它指向了一件更值得说的事:过去两年整个行业都在让模型想得更久,但绝大多数决策根本不需要想那么久,它们只是在为"想得久、想的深、端到端交付结果"付钱。
这次有什么不同?我觉得需要从它的设计理念说起。
慢思考被推到了极致
卡尼曼在《思考,快与慢》里把人的认知分成两个系统。系统一快速、直觉、几乎不耗能量,3 乘 7 你立马反应过来是 21;而系统二缓慢、刻意、费力,你算 17 乘 24 的时候用的就是它。
大模型这两年的主线,是把系统二越做越强。让模型在回答之前先在草稿纸上推演一遍,推演得越久越充分,答案越准。这条路走得很成功,复杂数学、长链路编码、多步规划,都是这么被攻下来的。
代价是整个链路的默认档位被调慢了。
我拿一个真实场景测了这件事。给 coding agent 做一道安全闸门:在它执行一条命令之前,先判断这条命令危不危险、碰不碰生产环境、万一出错影响多大。七条命令,从无害的查看状态,到删除整个目录,再到往生产数据库上扔一条删表语句。每条跑两轮,三个档位横着比。参与对比的大模型是 DeepSeek V4 Flash,关思考和开思考用的是同一个模型、同一套题目,只切换了思考开关。
| 档位 | 一半的请求快于 | 最慢一次 | 判断准确 | 总花费 |
|---|---|---|---|---|
| Jev(快思考) | 0.75 秒 | 0.9 秒 | 28/28 | $0.00026 |
| DeepSeek V4 Flash,关思考 | 2.9 秒 | 11.3 秒 | 26/28 | $0.00033 |
| DeepSeek V4 Flash,开思考 | 7.8 秒 | 30.8 秒 | 24/28 | $0.00134 |
这三件事值得单独拎出来对比说说。
同一个模型开不开思考,速度差 2.7 倍。 这不是数量级。不开思考时你能感觉到变快,但不会觉得换了个东西。真正的数量级差异出现在换范式的时候:Jev 比思考模式,按中位数算快十倍,按最坏情况算快三十多倍。
开了思考反而更不准。 28 到 26 到 24,越想越错。平均每条命令要写两百多字的内心戏,只为论证"查看一下当前状态"这种命令危不危险,纯属想多了引入噪声。慢思考在简单问题上会过度思考,这不是新发现,但看到它在自己的测试集上发生还是有点刺眼。
最坏情况比平均情况重要得多。 一道卡在 agent 循环里的安全检查,平均 3 秒还是 8 秒都还能忍,但"通常 3 秒、偶尔 30 秒"是没法上生产的。Jev 那个 0.9 秒是有上限的,这个性质比"平均更快"值钱。
值得一说的是,Jev 还提供了确定性。这对生产环境来说至关重要。用 LLM 做测试时第一次直接跑崩了,因为大模型开了思考模式之后,返回结果的字段结构悄悄变了(有时候会自由发挥画蛇添足),解析JSON 时码直接报错。加了兜底重跑,十四次调用里又出了一次残缺的 JSON:判断内容全对,但开头多了两个字符,整条记录报废。7% 的失败率,放在生产闸门上意味着重试、降级、告警三套代码都得写一遍。
把这三件事放在一起看,问题就不在模型不够聪明了。而在于我们本来就不该这样问它。
它把选择题前置了
Jev 的作者是 Diogo Almeida,前 OpenAI 研究员,参与过 ChatGPT。品类名字直接借了卡尼曼的系统一,模型名字则取自提出杰文斯悖论的经济学家 Jevons,那个悖论说的是:一样东西用起来越便宜,人类反而用得越多。
它的用法和聊天完全不同。你不发消息,而是递过去两样东西:一段待判断的现状,和一组你事先出好的题。
还是上面那条命令。现状就是那行命令本身,题目是我自己出的两道:
第一道判断题,问它会不会毁掉无法恢复的东西;
第二道评分题,问万一它是错的影响范围有多大,而且档位得由我列出来,从"一个本地文件"、"一个本地项目"、"一条共享分支"一直到"生产环境的用户"。
提醒只有三种,是非题、单选题、评分题。单选题最多能挂 255 个选项,评分题的档位由你自己写。回来的答案和你出的题一一对应,每个都附一个把握程度。
那条删除线上服务的命令,它给出的实测结果是:0.86 的概率会毁掉不可恢复的东西,影响范围落在 2.86,也就是介于"共享分支"和"生产环境的用户"之间、更靠近后者。作为对照,同一套题下"查看一下当前状态"拿到的影响范围是 0.39。这是一条能直接写进条件判断的刻度,而不是一段需要人读的描述。
关键在于选项是你出的。“就这几种可能,你给我做判断。“
它不可能返回你没定义过的东西,因为答案的形状是你在提问时画好的。
这也意味着那些解析代码、重试代码、格式校验代码都不用写了。让大模型输出结构化结果,本质上是在祈祷它这次听话;而这里不存在听不听话的问题。
这个设计在浏览器操作上被用到了极致。browser-use 官方做了一个叫 jev-ultrafast 的浏览器 agent,我接过来跑通了,顺便把真实流量抓了下来。
它每一轮先把当前页面上所有能点、能填、能选的地方编上号,列成一张表。维基百科首页压出来是 43 个可操作元素,比如 2 号是搜索框,标着"能打字、也能点",3 号是搜索按钮,只标着"能点"。每个元素都记着自己支持哪些操作,所以"在一个按钮里打字"这种非法组合,在出题阶段就根本问不出来。
然后一次性问三道题:这一步该做什么动作,如果是点击该点哪个编号,如果是打字该填哪个编号。
有意思的是后两道题会同时作答,哪怕其中一道注定用不上。抓到的第一步里,模型选的动作是"打字",0.96 的把握,但"该点哪里"的答案也照样算出来了,然后直接扔掉。这不是浪费,因为三道题在同一次往返里并行算完,多问几道几乎不加时间。两个决策,一次网络往返,整个循环里最贵的那项开销就这么省掉了一半。
至于该打什么字,Jev 是不管的。它只负责挑出"该在 2 号框里打字",具体内容交给旁边一个普通的小模型去写。整条链路里它只做判断,不做表达。
结合官方示例,实测查一篇维基百科文章用了 5.2 秒,在 Google Flights 上订一趟苏黎世到伦敦的机票跑了三次,12.5、13.5、14.7 秒,三次落到的最终页面完全一致。官方宣称是 7.1 秒,我这边慢一倍主要是网络链路:每次调用都要往返一趟太平洋,一个任务十来次调用就吃掉七八秒。
成本上也要说句实话。官方宣称比大模型便宜 400 倍,我实测比开了思考的便宜约 5 倍,比关了思考的只便宜两成多。它省的是输出那一半,输入照收,判断的内容不长时就省不出那个倍数。
谁来缩小选择范围
Jev 做的是有限答案的选择题,而不是无限答案的开放式问题。它不需要去想"我该怎么做",而只需要去想 "我该在这几个选项里选哪一个,大概有多少把握"。
这些数字背后其实是同一件事:它快,不是因为它更聪明,而是因为它被问的问题已经被人收拾干净了。
快思考之所以能快,前提是有人已经把选择范围缩小了。人也一样。我自己不希望每天吃什么穿什么占据太多思考时间,所以我主动把可选范围压到很小。那个压缩动作本身是慢思考,只是它发生在决策之前,而且只发生一次。后面的每一次选择都在这个小范围里,快思考就能接管。日常来说,我每天穿什么没有其他选择,因为都是一样款式的衣服我有几套,拿件顺手穿哪套。又或者中午什么吃的决定其实选择也不多,楼下那几家轮转一下,一周也不会吃重复。当然,如果有重要的活动或者饭局,我就会把选择范围放大甚至超出我已知的范围,这时是慢思考会接管。
确定性不是模型给的,是选择范围给的。
这件事在数据里看得很清楚。对于浏览器操作来说,每个决策按把握程度排了序,"该在哪里打字"这一步每次都是满分,因为整个页面只有一个地方能打字。选项只剩一个,把握自然是百分之百。
所以缩小选择范围的责任,在定义问题的人、设置规则的人身上。单纯把车开好这件事,选择也是有限的,因此这个问题迟早会被解决。
但选择范围之外的世界不会消失。
想象一条狭窄的单行道上迎面来了车,按规则应该对方让行,可对方是个人类司机,他无视了规则。自动驾驶的车该怎么办?如果对方还下了车走过来跟你理论,又该怎么办?这类边界情况不一定发生,一旦发生就是超出问题定义范围的事,快思考解决不了,慢思考也未必能,最后还是要人兜底。
这不是给快思考挑毛病。正因为它的出错方式是有边界的(只可能在给定选项里选错,不可能跑飞),你才能清楚地知道兜底该从哪里开始。慢思考的毛病恰恰是它不知道自己不知道,语气的笃定程度和正确率没有关系。
而 Jev 的把握程度是训练过的,它知道自己什么时候心里没底。我的测试集里有一道题问 4.9 和 4.11 哪个大,它答对了,但把握只给了 0.30;日期先后那道也答对了,把握给了满分。它在自己薄弱的地方主动降低了把握,这个行为比答对本身更有用。
这个把握程度,还能反过来读。
把机器的犹豫,当作用户的犹豫
我在努力想哪些场景我会用到 Jev,但是好像暂时没有非接不可的场景,不过有一个方向启发到我了,后续可能会继续尝试:端到端测试。
端到端测试现在是我现在所有集成管道的瓶颈。程序预设的测试路径太确定,覆盖不到真实用户的乱走;纯靠大模型驱动又太慢,慢到没法进流水线。结果就是那种模拟真人、带交互的功能验证一直没做起来,只有核心路径做了。
一个不到一秒、有上限、格式可靠的判断原语,让"覆盖更深、路径更多"变得现实。甚至可以模拟不同背景的用户,看他们面对同一个功能会怎么想、怎么做。
真正让我觉得有意思的是另一层。
可用性测试里有个经典方法叫 think aloud,让用户一边操作一边把心里想的念出来。它的目的不是记录用户做了什么,而是拿到他的心智模型,再去比较用户以为的和产品设计的差在哪里。纯看录像只能告诉你用户卡住了,说不出他为什么卡住。这个方法源自认知心理学家 Ericsson 和 Simon 1980 年的研究,八十年代被带进人机交互领域,此后一直是可用性工程里最常用的手段之一。
而模型每一步的把握程度,某种意义上就是一份自动生成的 think aloud 记录。
在那次维基百科的操作里,模型最不确定的一步只有 0.39 的把握:它不知道该点搜索框还是搜索按钮。回头看那张元素表就明白了,2 号和 3 号一个叫"搜索维基百科"一个叫"搜索",名字几乎一样,还都能点。一个第一次来的用户,大概率也会卡这么一下。这是个真实的可用性问题。
但紧随其后那个 0.63 就不是。那一步的候选是搜索建议里两条几乎同名的条目,模型在它们之间犹豫。这个犹豫是对的,因为这类判断本来就该让用户自己进入慢思考来决定。
所以低把握不等于坏设计。 它标记的是"用户会在这里慢下来",至于该不该慢下来,是设计者的判断。导航栏、主按钮、提交入口,这些地方如果模型只有 0.4 的把握,说明入口没做清楚;而删除确认、套餐选择、权限授予,这些地方本来就该让人停一下,模型的犹豫反而说明信息给够了。
读法不是拿它给页面打分,是拿到一张"用户会在哪里慢下来"的地图,然后逐个问自己:这里我希望他慢下来吗?
看到社区里还有很多有意思的尝试。一个我印象深刻的是 jev-town,它是一个虚拟的赛博小镇,里面住着 50 个 AI模拟的居民,日常生活他们自己做判断做决定,同时也会响应你的一条广播。当你广播一条消息到整个小镇的时候,你会看到它们都在用 Jev 来做快速判断,各种不同身份设定和背景的居民会做出自己的决定,你甚至可以观察到他们会怎么想、怎么做。使用者可以从非常微观的层面以上帝视角观察一些“社会行为“,看到及时的响应和群体行为,非常有趣。
我的思考
第一,模型正在按场景分化,这是应用铺开的必然结果。 早年是一个通用模型接所有活,现在场景越切越细,不同专长的模型就长出来了。快思考是其中一支,专吃那些高频、低价值、有语义但边界模糊的判断。这类判断在任何一个真实系统里的数量,都远远超过需要深度推理的那部分。
第二,快思考这个范式会留下来,但大概率不会以独立模型的形式留下来。 它背后用到的技术没有一样是独家的,社区里已经有人在用开源模型复现。更可能的结局是它被内化进现有大模型的结构,成为模型的内置能力,由模型自己决定这道题该快答还是该慢想。今天大模型的思考开关只差 2.7 倍,体感有限;等到同一个模型里真能拉开数量级的档位差,这件事才算成了。
第三,缩小选择范围的责任在定义问题的人,但定义之外的世界不会消失。 把范围缩小能换来速度和确定性,这是真实的收益。代价是所有没被装进去的情况都会掉到系统外面,而它们不会因为没被定义就不发生。兜底机制不是可选项,它是"缩小范围"这个动作的必然配套。
第四,有些场景,快速响应比深度思考更重要。 开车是这样,机器人也是这样。那种需要自主决策行动、需要实时给出反馈的具身场景,等不起一次几十秒的推演,而它需要的判断往往也并不复杂:该不该停、该不该绕、这个东西该不该拿。当响应速度真的压到这个量级,一批原本卡在延迟上的具身场景,才谈得上落地。
参考
- Introducing System One Models & Jev (TypeSafe AI)
- TypeSafe AI 官方文档
- Jev 1.13 官方公布的已知弱点清单
- A new kind of AI model from a ChatGPT inventor is thrilling developers (TechCrunch)
- browser-use/jev-ultrafast:本文实测的浏览器 agent
- vinilana/live-jev:浏览器里的自动驾驶模拟,可与大模型并排对比
- vedssharma/jev-drive:带信号灯、行人、天气与超车的驾驶模拟
- CeciliaW888/jev-town:50 个居民同时响应你的一条广播
- AnotiaWang/awesome-jev:社区项目索引
- Ericsson, K.A. & Simon, H.A., "Verbal Reports as Data", Psychological Review (1980)
- Think aloud protocol (Wikipedia)
- Loop Engineering:能放手的是执行,不能放手的是方向