返回博客
AI工具2026-09-19

我用六组实验测了 TypeSafe Jev:它到底能干什么,不能干什么

#TypeSafe Jev#模型评测#冷启动#搜索重排#开源

9 月 16 日 TypeSafe 发布了 Jev。它和我们熟悉的大模型很不一样:不写段落,不做长推理,只回答封闭问题。你给它一段状态(state),再给几个带类型的问题(是/否、多选一、打分),它一次前向就把每个问题的概率分布返回来。

官方示例是客服工单:"这条消息紧急吗?该转给哪个团队?客户有多生气?" 一次调用三个答案,每个都带概率,花费不到一分钱的千分之二。

看完发布会,我脑子里只有一个问题:这东西在真实数据上到底有没有用? 于是我做了六组实验,其中五组整理成了开源仓库,所有数据、代码、评测集都公开。这篇是总结。

先说结论,三句话:

  1. Jev 能用的前提是:信号在语义里,不在你的数据统计里。 列名有意义的表格它能做到 0.83 AUC,哈希 ID 组成的 CTR 数据它只有 0.46(比瞎猜还差)。
  2. 零样本时,它抵得上几百条标注。 在两个完全不同的冷启动问题上,一个训练好的文本模型要 150 到 500 条标注才追得上 Jev 的零样本判断。
  3. 有了标注,它最好的位置是当特征,不是当模型。 五个项目里,Jev 单独使用从来没有稳定地赢过强基线;但把它的答案加进基线模型,每一次都是显著提升。

下面一个一个说。

实验 0:开场三问

正式项目之前,我先用三个小实验摸它的边界。

Avazu 广告点击率。 2,000 条带标签的广告曝光,特征全是 site_id=1fbe01fe 这种哈希值。Jev 的 AUC 是 0.46,校准时最优斜率是 0,等于"把模型扔掉"。这不意外:一个站点的历史点击率只存在于你的日志里,世界上没有任何语料能告诉模型它是多少。

泰坦尼克号生还。 同样是表格、同样是二分类,但列名是性别、舱位、年龄。Jev 零样本 AUC 0.830,训练好的逻辑回归是 0.843。把 Jev 的概率作为一个特征加进逻辑回归,变成 0.854,比两者单独都高。Jev 错的方式很有规律:方向全对,幅度往中间收。头等舱女性真实生还率 0.97,它给 0.79。它知道"妇孺优先",但不知道这份数据里这条规律有多极端。

安全扫描器二审。 我的 skills 收录站有一个正则安全扫描器,误报很多。我让 Jev 给命中的片段做二审,同时试了两种问法:

  • 问"这段文字危险吗?"(是/否):AUC 0.70
  • 问"这段文字是什么?"(恶意指令 / 官方安装器 / 文档引用 / 否定句 / 占位符……):AUC 0.94

同一份证据,只是换了问法,差了 0.24。判断题会被模型的谨慎先验拉平到 0.3 到 0.6 之间;分类题让它把"官方安装器"和"恶意指令"分得很开。之前人工核实过的 19 个误报仓库,它 19 个全判对。

三个小实验定下了后面所有项目的判据:问它常识能回答的问题,别问你的数据才知道的问题。

实验 1:搜索重排(D)

仓库:jev-search-rerank-eval

我的 skills 收录站有个命令行工具 ash,搜索用的是手写的关键词打分。问题:Jev 重排能不能赢过 embedding?

我用 164 条真实查询(中文、英文、中英混合),把四个检索器的 top-30 结果合并成 9,831 个"查询—结果"对,请两个独立评审打 0 到 3 分的相关性:一个是 Jev,一个是 Claude Haiku 4.5。两者一致性 κ=0.71。30 条分歧最大的我人工裁决。

系统NDCG@10
embedding 与 Jev 融合(RRF)0.864
Jev 重排 embedding 的 top-300.785
bge-m3 embedding0.774
OpenAI text-embedding-3-small0.759
ash 线上关键词排序0.609

乍看 Jev 重排(0.785)比 embedding(0.774)高一点。但这里有个陷阱:Jev 既是评审又是选手。 我把所有系统分别用三套标签重算了一遍:

Jev 重排 − bge-m3差值
只用 Jev 自己的标签+0.053
用合并后的标签+0.012(不显著)
只用 Haiku 的标签−0.028(显著为负)

换成和 Jev 无关的评审,它单独重排反而输。评审循环偏差是真的,而且能量化出来。

但融合后的系统在三套标签下都显著赢 embedding(+0.064 到 +0.090)。这是第一次看到后面会反复出现的规律:Jev 单独用不赢,当第二个信号用就赢。

顺带发现 ash 真正的病不是排序而是召回:用 embedding 去重排 ash 自己的 top-30,结果反而更差,因为相关的结果根本不在列表里。

实验 2:新 skill 的冷启动先验(A2)

仓库:jev-cold-start-prior

一个新仓库刚被收录,还没有任何 star 数据。Jev 读它的 README,能不能预测它之后会不会火?

我本想回溯:重建每个仓库入库那天的 star 数和 14 天后的 star 数。做到一半发现 GitHub 的 stargazers 接口已经对所有仓库返回 404(连 octocat/Hello-World 都是),第三方的 star 历史服务也自己标注了"2026 年 5 月起严重降级"。历史 star 已经无法重建。

所以只能做代理实验:1,132 个真正的新仓库,目标是"今天的 star 数,按仓库年龄校正"。

  • Jev 零样本问"两周内会涨多少星":相关系数 0.435
  • 用约 900 条标注训练的 README 文本模型:0.524
  • 文本模型加上 Jev 的答案:0.559,显著提升
  • 学习曲线:文本模型要 100 到 200 条标注才追得上 Jev 零样本

两个有意思的细节:README 里有没有 demo 截图是第二强的信号(0.324);"是否基于当前热门工具(Claude Code、MCP……)"反而是负相关。因为 95% 的新仓库都在蹭这波,蹭热点是常态,不是区分点。

回溯实验缺了最关键的基线"入库时的 star 数",所以我在收录站的同步流程里加了一个前瞻实验:每个新仓库入库时记下 Jev 先验和当时的 star 数,14 天后对答案。第一批 10 月 2 日出结果。

实验 3:新闻冷启动(A1)

仓库:jev-news-cold-start

A2 的结论会不会只是 GitHub 这个小圈子的特例?我换了一个完全不同的领域:微软的 MIND 新闻推荐日志,2019 年 MSN 新闻 6 天的曝光记录,3,448 篇文章。按时间切分,前 3 天训练,后 3 天测试。

预测方式需要标注相关系数
文本模型 + 类目 + Jev1,937 条0.310
文本模型 + 类目1,937 条0.241
Jev 问"这篇情绪化吗"00.210
Jev 问"读者会点吗"00.154
类目平均点击率1,937 条0.078

结论和 A2 一致:零样本的 Jev 抵得上约 500 条标注;加进模型显著提升(+0.069)。更直观的是:50 条标注加 Jev,约等于不加 Jev 的 800 条标注。

我还做了一个冷启动推荐的模拟:每天的新文章是一堆"老虎机",用 Thompson sampling 分配曝光。先验里加入 Jev 的答案后,同样的曝光量多拿 25% 的点击,比完全没有先验多 73%。

这组实验有一个和 A2 不同的发现:描述题比预测题准。直接问"读者会点吗"(0.154)不如问"这篇情绪化吗"(0.210)。这和扫描器实验一模一样:问它"这是什么",往往比让它直接做判断更好。但在 A2 里,直接预测题反而最强。所以我的建议是两种问法都试,在你自己的数据上比。

另外两个反直觉的点:"内容实用"和"受众面广"的文章,点击反而更少。

实验 4:GitHub issue 流能否提前发现坏版本(C2)

仓库:jev-issue-pulse

前三个都是"排序/预测",后两个换成"监控/预警":把一段文本流交给 Jev 逐条分类,再汇总成时间序列,看能不能比人更早发现问题。

我抓了 claude-code 和 codex 两个仓库近 60 天的 25,052 个 issue,Jev 逐条判断类型(回归 / bug / 功能请求……)、沮丧程度、是否被卡住。总花费 $0.44。

"坏版本"的真值用维护者自己的原话:后续 release note 里写"regression in 2.1.269"或"Reverted a 2.1.268 change"的版本就算坏。claude-code 的 42 个版本里有 7 个。

发布级结果:阴性。 所有信号(issue 数量、关键词、情绪、Jev)都区分不了好坏版本,7 个坏版本里一个都没能在修复发布前抓到。原因很简单:claude-code 几乎每天发版,坏版本的修复中位只要 25 小时,维护者比任何汇总曲线都快。

单条分诊:Jev 明显更好。

对照仓库自己的标签关键词Jev情绪分析
claude-code regression0.7650.8980.432
codex bug0.6420.9650.331

需要说明:这两个仓库约 75% 的标签是自动化机器人打的,所以这里测的是"Jev 和另一个模型的一致程度",不是和人的一致程度。情绪分析比随机还差,因为报 bug 的人通常写得很冷静。

实验 5:客服推文能否早于官方承认故障(C1)

仓库:jev-support-pulse

C2 的阴性结果会不会只是因为 claude-code 修得太快?我换了一个组织反应慢得多的场景:Kaggle 上 2017 年的客服推文数据,7 个品牌客服号收到的 17 万条客户推文。Jev 逐条判断"是不是服务挂了""是不是很多人都遇到了",总花费 $1.84。

真值同样用当事方自己的话:品牌客服回复"your area has an outage""this is a known issue"的时刻。这里踩了一个坑:我第一版的匹配规则很宽,人工读了 40 条样本,准确率只有 22%,大部分是"sorry for the service issues, please DM us"这种客服套话。收紧后重新读,准确率 92.5%。最终得到 62 个事故,其中包括 2017 年 11 月 6 日 Comcast 全美断网,说明这个定义抓到的是真事件。

按小时区分"事故前"和"平常":所有信号都差不多(约 0.6),Jev 没有更好。

但作为预警(误报率控制在每周 1.76 次):

信号抓到的事故(共 62)比官方承认平均提前
Jev "服务挂了 × 影响面大"174.1 小时
关键词121.7 小时
推文数量102.4 小时
情绪分析91.7 小时

在三种阈值下,Jev 抓到的事故都比推文数量多,其中一个阈值下统计显著。原因是客服号本来就会因为各种事(游戏上线、账单调整、球赛)变忙,只看数量会被淹没;Jev 把"服务真的挂了"的推文筛出来,背景噪声就小了。

但对比一份认真写的关键词表,Jev 的优势始终不显著。报故障的推文用词很集中(down、no internet、anyone else?),关键词已经能抓住大部分。这里我比较了 6 个信号 × 3 个阈值,单个显著结果要打折看。

C2 和 C1 合起来是一个清楚的结论:汇总预警有没有用,取决于组织和客户谁更快。 修得比投诉累积还快,什么信号都没用;组织滞后于客户,Jev 筛过的信号能提前几个小时。

六组实验合起来

项目Jev 单独用Jev 当特征 / 当筛选器
泰坦尼克0.830,接近训练模型0.854,超过两者
D 搜索重排和 embedding 持平(中立评审下略输)融合后 +0.06 到 +0.09
A2 skill 冷启动相当于 150 条标注+0.035,显著
A1 新闻冷启动相当于 500 条标注+0.069,推荐多拿 25% 点击
C2 GitHub issue发布级预警无效逐条分诊 0.90 / 0.97
C1 客服推文按小时排序无效预警多抓 70% 事故

一共做了约 21 万次判断,Jev 本身的花费不到 3 美元。

我总结的六条规律

1. 信号在语义里才有用。 泰坦尼克能做,Avazu 不能做,差别不在任务形式,在于答案能不能从常识推出来。用之前先问自己:一个懂行的人,不看你的历史数据,凭这段文字能猜个大概吗?

2. 零样本的它抵得上几百条标注。 两个领域、两个任务,都是 150 到 500 条。这就是冷启动场景的价值:新业务线、新类目、没有历史数据的第一天。

3. 有了标注,它最好的位置是当特征。 五个项目五次显著提升,一次都没有例外。它带来的是训练数据里没有的世界知识,你的模型带来的是你这份数据里规律的实际幅度。两者互补。

4. 问法本身是超参数。 "这是什么"和"会怎样"两种问法都要试。扫描器和新闻里描述题赢,skill 冷启动里预测题赢。criteria 的措辞也是 prompt,每改一次都要在带标签的样本上重跑。好在很便宜:几千条样本几美分。

5. 汇总预警看时间尺度。 逐条分诊它都很强;要把逐条判断汇总成预警,前提是问题暴露得比组织反应慢。

6. 情绪分析在这类场景没用。 C2 和 C1 两次都低于随机或接近随机。报故障的人不一定"生气",生气的人也大多不是在报故障。

评测上的几个教训

这六组实验里,我踩过的坑比结论本身更值得记:

  • 评审和选手不能是同一个模型。 如果只用 Jev 自己打的标签,搜索重排的结论会完全反过来。至少要有一个无关的第二评审,再看结论在各套标签下是否一致。
  • 真值的精度要亲手读。 客服推文那条匹配规则,不读样本的话我会拿着 22% 准确率的"真值"得出一堆结论。
  • 机器人打的标签不是人工真值。 GitHub 大仓库的 bug/regression 标签大部分是自动化分诊打的。
  • 看到结果后才加的指标要标明。 C2 里我补了一个"按版本比例"的信号,效果略好但仍不显著。它可以报告,但不能拿来替换原计划的结论。
  • 钉死模型版本。 ~jev-latest 会漂,所有结果都记录了实际解析到的版本 typesafe/jev-1.13-20260917。
  • 数据会消失。 GitHub 的 stargazers 接口、MIND 的官方下载,都在这周之内被我撞上不可用。能前瞻记录的,别指望以后回溯。

什么时候该用 Jev

  • 该用: 没有标注的冷启动;逐条分诊、路由、审核;给已有模型加一个"世界知识"特征;便宜的第二评审或二审。
  • 不该用: 信号在你的行为日志里(点击、转化、出价);需要计数、日期比较这类精确计算;需要生成内容或长推理;需要跨多步记忆和规划。

五个仓库都是 MIT 开源,数据和评测集能公开的都公开了:

本文与 TypeSafe 无任何关联,所有实验自费完成。

📬

订阅 Newsletter,免费获取完整手册

Subscribe即送《AIP出海自媒体实战手册》完整版,还有每周AI精选内容推送

我们尊重你的隐私,不会发送垃圾邮件。可随时退订。

Jason Zhu

前AI算法工程师 | AI博主

在 X 上关注我