近一个月来,围绕Jev的讨论大多集中在两件事上:其一,该模型不生成长篇文本,只在提前划定好的候选里做出判断;其二,它适用的位置包括模型路由、工具门控、评测环节以及实时控制。然而,“能放在哪儿”和“开发者实际把它做成了什么”之间,还隔着一段距离。

10月24日,GitTrend梳理了5个与Jev有关的开源项目。这5个项目分别把Jev接入浏览器操作、Claude Code的上下文管理、代码库检索、链上订单撮合和PostgreSQL数据库。它们的应用场景看上去互不相干,但做的事情高度一致:原本由通用大模型生成并解释的步骤,被收敛为高频、选项有限、带有概率的判定动作。

本文不再重复Jev的基本定义,而是借这5个项目回答一个偏工程的问题——在真实软件里,决策模型究竟应当怎么嵌入。

5个项目,本质上是5种“智能if-else”

按项目逐一对应:jev-ultrafast承担两件事,即生产需要输入的文本、校验任务是否完成;fast-jev-compaction面向Claude Code的上下文,判断某次工具调用及其结果该不该继续保留;jevgrep负责判断目录、文件与代码片段是否和问题相关;jev-trader处理资金上限、订单执行以及风险兜底;pg-jev面向PostgreSQL查询,对数据表中的每一行做语义判断并返回对应概率,同时兼顾索引检索、权限与数据治理。

这批项目的共同特征很鲜明:Jev并未接管整个应用。业务代码先把状态整理到位,再向它提出一个范围受限的问题;Jev给出概率化的选择结果,程序则继续执行、校验或回退。

这也是最值得参考的一点。Jev不替代Agent,它做的是把Agent内部大量原本模糊的细小判断,转成显式的接口。

jev-ultrafast:浏览器Agent从动作表里选择,而非“看图说话”

jev-ultrafast出自Browser Use团队。其演示流程是给定一句自然语言目标,在Google Flights上完成苏黎世飞往伦敦的单程航班搜索。

它没有让模型看着截图自行描述下一步动作,而是先由程序加载当前页面,把可以交互的对象整理成一张带编号的表格,例如[1] button 往返、[2] combobox 出发地、[3] combobox 目的地、[4] textbox 出发日期等。

针对一次请求,Jev同时完成两项判断:下一步应当执行CLICK、TYPE_TEXT、SELECT、WAIT还是DONE;若该动作需要落到某个元素上,则选定哪一个编号。

只有当选中TYPE_TEXT时,系统才会额外调用一个小型文本模型来生成城市名之类的文字内容。换句话说,决策与生成被分开了:由Jev决定“做什么、对谁做”,文本模型仅在确实需要写入文字时介入。

项目记录显示,一次航班搜索耗时7.073秒;在同一任务、相同配置下交替运行6次,新版本与旧版本均为3/3通过,中位耗时由9.450秒降到7.092秒。但仓库方面也主动提示:这仅是一个任务、一套浏览器配置下的少量重复,不能视为通用的可靠性基准;同时演示完成的是搜索动作,并未走到订票环节。

相比“7秒”这个数字,更值得关注的是安全边界:模型的输出不会直接变成CSS选择器、屏幕坐标、Shell命令或JavaScript;执行环节会重新核对页面是否失效、目标元素是否被其他元素遮挡;DONE之后还会对结果另行验证。

这为浏览器Agent提供了一条很实用的设计准则:模型只负责在合法动作集合中挑选,动作合法性由代码界定,动作是否真正成功也由代码确认。

fast-jev-compaction:所谓“零损耗”并非一字不删

fast-jev-compaction既可以作为Claude Code插件使用,也能以npm库的形式引入。它要解决的是会话拖长之后,摘要式压缩容易把文件路径、错误信息、命令或约束条件改写甚至丢掉的问题。

其选择的是另一条路径:不改写被保留的既有内容,只判定哪些工具调用与工具结果可以删掉或截断。

对每一组tool_use与tool_result,Jev需要回答:既然已经知道这次调用发生过,它是否仍有保留价值;这份结果是否必须逐字留存、并且不值得再运行一次工具去取得。

按照阈值判断,插件共有三种处理方式:结果仍然重要时,调用和结果一并保留;只需记住这次调用发生过的,保留调用而截断结果;两者都不再重要的,调用与结果一起删除。

用户与助手的文本内容保持原样,近期消息也会被固定保留;一旦Jev请求失败、返回格式异常,或者压缩带来的收益不够,插件会退回到Claude Code自带的摘要压缩方案。

因此,宣传中“零损耗压缩”的说法需要更准确地理解:它并不意味着什么都不丢,而是不给保留下来的原文改写措辞;被判定过期的工具结果依然会消失,而概率本身也无法担保删除一定安全。

该项目真正有价值的地方,是把压缩从“重写一遍”变成一组“保留、截断、删除”的显式判定。这样一来,压缩策略就可以被观察、被统计、可以调整阈值,也可以在失败时退回原有方案。

jevgrep:先确定文件,再交给昂贵模型写代码

jevgrep瞄准的是规模较大的代码库。使用方式例如:jg "数据库连接在哪里创建、复用和关闭?" ./my-project。

该工具逐层遍历仓库结构,由Jev判断哪些目录、文件、声明和代码片段与提问相关,随后输出文件位置、阅读线索以及原始代码片段。真正的实现与测试环节,仍交由编码Agent完成。

它并不是来代替传统grep的。如果已经知道符号名或路径,直接用rg往往更迅速;它擅长的,是“知道要什么功能、却不清楚实现在哪里”这类探索型问题。

仓库公布了一组调优过的10个Python SWE-bench任务:jevgrep与不带Jev的基线都完成了8/10;若只计算主编码模型,成本从7.62美元降到5.44美元,降幅为28.6%。

5个Jev开源项目落地实测:浏览器Agent中位延迟降到7.092秒

但把Jev自身的开销计入之后,不同版本的表现出现分化:一次重跑仍然节省了25.8%,另一次0.5.0的实验综合成本反倒高出2%至3%。

作者也作出说明:这些属于单次、小样本的观察结果,既不能证明两者在统计意义下等价,也不能保证在每个仓库上都省钱。

这恰好暴露了一个常被忽略的事实:增加一个便宜的筛选层,不必然带来总成本下降。只有当它过滤掉的后续阅读与推理足够多时,这笔账才算划算。

另外,jevgrep会把符合筛选条件的源码发送给所选的模型服务商。工具默认排除隐藏目录、依赖、构建产物与常见凭证,但这仅属于尽力检测,并不等同于完全脱敏。在私有仓库上使用之前,需要先想清楚哪些目录可以离开本机。

jev-trader:300毫秒的关键是让热路径保持两次RPC往返

jev-trader是在Monad上开展的一项做市实验。它读取Kuru的MON-USDC订单簿,大约每300毫秒(即每个区块)让模型判定一次买还是卖,之后再尝试提交仅做Maker的限价单。

其中最有参考价值的不是交易策略本身,而是对“热路径”的处理方式。在一个区块内,系统只为关键步骤安排两次RPC往返:第一次读取订单簿,第二次广播交易;收据确认、费用估算和资金检查尽量推迟到后续区块。当模型来不及给出响应时,系统将其记为hold,不发出任何订单。

不过它远远谈不上开箱即用的“AI印钞机”:默认模型是模拟的动量规则,并非Jev;在没有私钥的情况下只跑dry-run,以真实盘口模拟成交;真实模式会涉及私钥、Gas、滑点、仓位上限和实际交易亏损;仓库所展示的是一个实验系统,并未证明该策略能够稳定盈利。

它能证明的是:当任务被压缩为“基于当前状态从有限动作中选择”,模型判断就可以进入亚秒级循环。至于风险、资金以及最终执行权,仍应交由确定性代码掌握。

pg-jev:让WHERE听懂自然语言,但每一行都可能计费

pg-jev把Jev封装成一个PostgreSQL扩展。装好之后可以直接写如下SQL:

SELECT subject, jev_prob(tickets, 'the customer is angry') AS pFROM ticketsORDER BY p DESCLIMIT 20;

也可以调用jev_choice(),把工单分派给billing、technical、security或sales几个团队。该扩展不需要向量列,也无需事先建立嵌入索引,它的做法是把多行数据打包成共享状态,再由Jev针对每一行并行回答对应问题。

这样,语义分类就能与JOIN、GROUP BY句、普通过滤条件以及排序直接组合使用。对分析师而言入口很自然;对工程师来说,代价也必须提前说清楚:

本质上它仍会扫描并判断查询所触及的每一行,不是魔法索引;行内容默认发送给第三方API,因此不适合不能外发的数据;应当先用常规SQL在日期、数值和精确匹配上做过滤,再让Jev负责语义判断;该扩展依赖plpython3u与超级用户权限,Supabase、Neon、RDS等对相关能力有限制的托管环境通常无法直接安装;会话缓存有可能随着“行数乘以问题数”的组合不断膨胀,必须主动设定费用与内存上限。

仓库给出的示例中,2,000行数据首次运行约耗时3.5秒、产生100次请求,估算费用约为0.012美元;在同一会话中命中缓存后,耗时约50毫秒。这些数字仅在作者特定的数据、网络与模型条件下成立,不应直接套用到生产数据表上。

pg-jev最值得借鉴的并不是“自然语言SQL”,而是另一种组合思路:把语义判断做成数据库函数,让确定性查询与概率判断出现在同一条执行链里。

五个项目背后的同一套决策核架构

把5个项目放在一起,一个稳定模式就浮现出来:业务状态先由程序整理、裁剪并编号为有限的问题与候选动作;随后Jev返回选项、概率与置信度;再由阈值、权限、超时与成本检查分流,或自动执行,或调用文本模型或更强模型,或请求人工确认,或退回原有方案;最后对结果独立验证并记录轨迹。

由此可归纳出五条可直接落地的工程原则。

第一,收缩动作空间先于调用模型。不要询问“现在该怎么办”,而是问“在A、B、C中选哪一个”。候选范围越清楚,输出就越容易被验证。

第二,状态交给代码维护,模型只看到必要的投影。浏览器只提交可见元素,代码检索只发送允许搜索的源码,数据库先完成普通条件过滤。输入越克制,延迟、费用与数据风险就越好控制。

第三,概率不等于执行许可。0.9并不构成正确性的证明。阈值应与出错的代价挂钩;高风险动作还需要权限校验、额度限制、人工确认以及紧急停止。

第四,生成模型只在需要生成的时候登场。浏览器仅在需要录入文字时调用小模型;代码检索先筛选文件,再让编码模型实现。不应让大模型为一个通常是或否的判断去写一篇作文。

第五,回退路径必须比“智能路径”更早设计。压缩失败就回到内置摘要,交易超时就不下单,浏览器操作完成后独立验收。一个新模型接入生产系统之前,首先要回答的不是“它有多强”,而是“它失败时系统会做什么”。

现在要不要引入Jev:先做一道最小替换题

如果手头已经有Agent或自动化流程,不必立刻重写整个系统。可以先挑出满足以下条件的步骤:输出能够收敛为固定选项、布尔值或分数;调用频率高,通用LLM的延迟或费用已经成为负担;有历史样本或人工结果可用于评测;置信度低时允许回退,而不是被迫执行;输入数据允许发送给所选服务商。

选定之后只替换这一处,并记录四类指标:准确率、端到端延迟、总成本以及回退率。不要只盯着模型的单次调用价格,也不要只凭一段演示视频就下结论。

小结:这5个项目给出的答案并不是“替换所有大模型”,而是把浏览器选元素、上下文删结果、代码库找文件、订单簿选方向、数据库判语义这类高频判断单独拆出来。Jev类决策模型的价值,正从“不会聊天的AI”这一反差,落到软件系统中具体的位置;通用LLM负责开放式理解、规划与生成,决策模型负责高频、受限、可量化的选择,普通代码负责状态、权限、执行、验证和回退。