CLM-8B 发布:一个不生成 token 的 agent 模型,把「决定」做成了排序题
我这阵子搭 agent 工作流,最烦的就是它每走一步都要「想一下」——倒不是写不出代码。请求发出去、等 token 一个个挤出来、再解析结果,一个本来十秒能办完的动作硬被拖到半分钟。真正卡住 agent 的已经不是生成质量,是生成速度:每个决策都要跑一遍完整生成,太贵了。
所以看到这个叫 CLM 的新模型,我精神一振。它走的是反着来的路子:不生成下一段文本,只给候选打分。与其让模型现场写下一步,不如让它从几个现成的候选项里挑一个最快最对的——这个判断比生成便宜得多,也快得多。
结构极简,训练也极简
CLM 全称 Contrastive Language Model,给自己贴的标签是 System One 模型,对应那种「快思考、靠直觉」的模式。8B 版本结构很轻:一个冻结的 Qwen3-8B 当 encoder,上面只挂两个小投影头,一个管 state、一个管 action,用双向 InfoNCE 损失把「状态」和「动作」拉进同一个向量空间,再算它们之间的匹配。
训练数据是三段式:先在约 60M 的 Nemotron Q&A 对上预训练,再用约 30M 合成 hard negatives 做中期训练,最后用约 1M 的 agentic trajectories 做后训练。因为只训那两个头,其余全冻结,微调成本低到可以忽略,甚至不用换底座:pip install contrastive-lm,用 vllm 起一个 Qwen3-8B 的 pooling 服务,再 clm-serve 起本地 API 和 playground(默认跑在 8700 端口),就能拿来干活。
快是真快,但这套东西更值钱的定位是当 verifier
零样本下它在 computer-use、gaming、tool-calling 这几个场景上跟 Jev 持平,延迟最多能低 9 倍;配合它的 State & Action Caching(state 和 action 分开编码、action embedding 可复用),在候选大约 1k 个的时候,整体比 Jev 快 13 倍。光看这数字,agent 那套「每步全量生成」的痛点,算是被正面捅了一下。
不过读完,我更在意的定位不是替 agent 做决定,而是给 agent 做审查。微调过之后它当 verifier 的成绩相当扎眼:DeepSWE 上 81.6%、Terminal-Bench 2.1 上 87.6%,比 Jev 还快 4–6 倍。现在不少 agent 的瓶颈常卡在收尾:代码改完、方案跑完,缺一个快速又靠谱的把关。这种只对候选动作排序的模型正好填这个坑——把 best-of-N 的解、工具名、下一步动作丢给它,它返回一个带概率的排名,该上谁、该毙谁,一眼就看明白。
别被数字冲昏,限制要划清楚
这份卡片的诚实程度有点出乎意料,它把短板直接写在明面上。这个 checkpoint 把底座锁死在 Qwen3-8B 的 last-token-pooled embedding 上,想换别的 encoder,得等它开放泛化。它完全没有生成能力,CLM 只会对给定的一组候选排序,概率也是相对这组候选算的——候选给得烂,它也只能在这堆里挑瘸腿将军。而最容易踩的坑在这里:上面那些 SOTA 成绩全是微调过之后的头跑出来的,不是这个 checkpoint 的零样本表现,新手直接拿来当全自动 verifier 用,大概率要失望。
作者名单里挂着 Christopher Ré、Azalia Mirhoseini 这几个名字,圈子里的熟脸了,加上权重直接 Apache 2.0、底座 Qwen3-8B 也是 Apache 2.0,想上手基本没门槛。发布没几天,月下载已经 2720,下面挂出 4 个 finetune、9 个量化版本,已经有人开始折腾了。作者也明说了,CLM-8B 只是 scaling ladder 的一阶,一个更多数据、算力和参数的多模态 CLM-35B 预计十月初来。
我不太确定这条路是不是最终答案。System One 这套「快思考」的说法放在 agent 里,最容易验证的其实是后半截:它能不能在一堆候选动作里快速锁定正确的下一步,把 agent 的决定从生成变成排序。这至少是个值得盯的方向,尤其是它把 verifier 这条链路单独拎出来打磨的姿态,挺对现阶段 agent 的胃口。过几天 35B 出来,我打算拿真实工作流再测一轮——排序能不能真的替我省掉那半分钟,到时候见分晓。
相关链接
- 模型卡:https://huggingface.co/Contrastive-LM/CLM-v0.1-8B
- 官方博客:https://contrastive-lm.notion.site
- 代码仓库:https://github.com/Contrastive-LM/CLM
- 微调指南:https://github.com/Contrastive-LM/CLM/blob/main/docs/FINETUNING.md