<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Decision_Model on 扎塔-Zata</title><link>https://www.zata.cc/tags/decision_model/</link><description>Recent content in Decision_Model on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Sun, 04 Oct 2026 14:44:57 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/decision_model/index.xml" rel="self" type="application/rss+xml"/><item><title>Clef 与 Clef-flash：决策模型第一次有了开源权重</title><link>https://www.zata.cc/p/clef-and-clef-flash/</link><pubDate>Sun, 04 Oct 2026 12:30:00 +0800</pubDate><guid>https://www.zata.cc/p/clef-and-clef-flash/</guid><description>&lt;img src="https://www.zata.cc/p/clef-and-clef-flash/images/index/index.svg" alt="Featured image of post Clef 与 Clef-flash：决策模型第一次有了开源权重" />&lt;p>上一篇写完 Jev 之后，我在结尾留了一句话，大意是：这个方向最大的问题不是模型不行，而是&lt;strong>它当时只有一种存在形式——托管 API&lt;/strong>。&lt;/p>
&lt;p>半个月后，这个前提消失了。&lt;/p>
&lt;p>9 月 28 日 Ollama 发布 v0.35.0，加了 &lt;code>/v1/systemone&lt;/code> 端点，本地就能跑决策模型；9 月 30 日 Liquid AI 发了 d1；10 月 1 日，Cloudflare 一次性发了 &lt;strong>Clef（27B）&lt;/strong> 和 &lt;strong>Clef-flash（9B）&lt;/strong>，Apache 2.0 开源权重直接挂在 Hugging Face 上；同一天 Amazon 发了 Strands Decider 2B；10 月 3 日 Ollama v0.35.1 宣布支持 Clef 和 ClefFlash。&lt;/p>
&lt;p>&lt;strong>八天之内，一个半个月前还不存在的模型类别，完成了从闭源托管到本地 &lt;code>ollama run&lt;/code> 的全过程。&lt;/strong>&lt;/p>
&lt;p>Clef 在这个过程里占的位置比较特殊。它不是第一个开源的决策模型（Bespoke Labs 的 nimble 和 Together 的 tev1 更早跟着 Ollama 首发一起上线），但它是第一个&lt;strong>明确对着 Jev 打、同时把权重交给你的&lt;/strong>决策模型，也是第一个带&lt;strong>视觉输入&lt;/strong>和 &lt;strong>64K 上下文&lt;/strong>的。&lt;/p>
&lt;p>这篇文章想做的，是把 Cloudflare 这次发布从头到尾翻一遍：架构到底改了什么、三个损失各自解决什么问题、API 的每个字段和限制、43 个基准里哪些数字值得信、能不能真的自己跑起来，以及最后——&lt;strong>什么时候别用它&lt;/strong>。&lt;/p>
&lt;p>先说清楚口径。这篇里所有数字分三类：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>官方口径&lt;/strong>：Cloudflare 博客、模型卡、Workers AI 文档、开发者定价表。&lt;/li>
&lt;li>&lt;strong>聚合/转述&lt;/strong>：第三方模型库（ai-tldr、innfactory 等）整理的数据，能溯源到官方的我标了「官方口径」，溯不到的单独说明。&lt;/li>
&lt;li>&lt;strong>独立实测&lt;/strong>：目前只有一份，一个人、一台 RTX 3090、42 个决策用例。样本很小，但它讨论的是官方表格里完全没有的维度，所以我会用整节来讲。&lt;/li>
&lt;/ul>
&lt;p>Cloudflare 自己也在模型卡上标注了 Clef 和 Clef-flash 的分数是 &lt;strong>self-reported&lt;/strong>。这句话值得先记住。&lt;/p>
&lt;hr>
&lt;h2 id="一先看时间线为什么会挤在八天里">一、先看时间线：为什么会挤在八天里
&lt;/h2>&lt;p>把决策模型这一轮的时间线排出来，会发现它不是&amp;quot;某天灵光一现&amp;quot;，而是一次&lt;strong>集中清算&lt;/strong>。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>时间&lt;/th>
&lt;th>事件&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>2026-09-15&lt;/td>
&lt;td>TypeSafe AI 发布 &lt;strong>Jev&lt;/strong>，提出 System One Model 这个类别，同时开源了 System One 的 Python adapter（把 LLM 包装成同样的类型化决策接口）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2026-09-28&lt;/td>
&lt;td>Ollama v0.35.0 加入 &lt;code>/v1/systemone&lt;/code>，首发模型 nimble（Bespoke Labs，Qwen3.5-9B 微调）和 tev1（Together AI，Qwen3.5-4B）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2026-09-30&lt;/td>
&lt;td>Liquid AI 发布 &lt;strong>d1&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2026-10-01&lt;/td>
&lt;td>Cloudflare 发布 &lt;strong>Clef（27B）&lt;/strong> 和 &lt;strong>Clef-flash（9B）&lt;/strong>；Amazon 发布 &lt;strong>Strands Decider 2B&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2026-10-03&lt;/td>
&lt;td>Ollama v0.35.1 支持 Clef / ClefFlash，加入共享多模态状态、&lt;code>CAPABILITY&lt;/code> 声明&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>八天五个发布、六个模型。这件事本身说明的，是&lt;strong>共同的判断&lt;/strong>：过去两年里，大量被塞进 LLM 的调用，其实没有用到&amp;quot;生成文本&amp;quot;这件事。&lt;/p>
&lt;p>一个 Agent 每天要做几百次这样的判断——这条工单归哪个队列、这个工单要不要立刻叫人、这个工具该不该调、这个参数是 &lt;code>true&lt;/code> 还是 &lt;code>false&lt;/code>、这段输出是不是幻觉。用 LLM 做这些判断的代价，不是&amp;quot;贵&amp;quot;，而是三个结构性问题同时出现：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>延迟&lt;/strong>。自回归解码一次出一个 token，一个 JSON 决策要写几十个 token。TypeSafe 给的数字是前沿模型端到端 &lt;strong>3 到 329 秒&lt;/strong>；即便只看最乐观的情况，也比一次函数调用高出一到两个数量级。&lt;/li>
&lt;li>&lt;strong>非确定性&lt;/strong>。同一个输入两次调用返回不同的字符串，你得写解析、写兜底、写重试。&lt;/li>
&lt;li>&lt;strong>信任粒度&lt;/strong>。即使你 prompt 里让它&amp;quot;同时给出置信度&amp;quot;，LLM 报的置信度和真实准确率基本不相关。Jev 那篇里我引过 TypeSafe 的原话：一个模型如果 95% 的时候能做对，却没法告诉你它在哪 5% 里，那这个任务就自动化不了。&lt;/li>
&lt;/ol>
&lt;p>决策模型针对这三点分别给的答案：&lt;strong>一次前向传播不打 token、输出空间预先定义所以没有解析、每个答案带校准过的概率&lt;/strong>。&lt;/p>
&lt;p>Cloudflare 官方博客里那句被转述最多的话是这个：&lt;/p>
&lt;blockquote>
&lt;p>This means that a human does not necessarily need to be in the loop for agentic decisions anymore — agents can programmatically gather context, make decisions, and take actions on tasks, or defer to a human when needed.&lt;/p>
&lt;/blockquote>
&lt;p>&amp;ldquo;人类不一定要在环里&amp;rdquo;——这句话每家都在说，但 Clef 这次把它落到了一个很具体的信号上：&lt;strong>这是 Cloudflare 第一次自己训的模型。&lt;/strong> 不是托管别人的权重，是自己 post-train、自己放边缘 GPU、自己定 API。&lt;/p>
&lt;p>名字也顺带吐槽一下。「Clef」是音乐里的&lt;strong>谱号&lt;/strong>——五线谱开头的那个符号，它给每条线和每个间指定一个音高。Cloudflare 的类比是：决策模型给上下文定了域，后面的音符（动作）才知道往哪儿放。至于字面上和「Jev」押韵、缩写跟 CF（Cloudflare）重合……我不认为这是巧合。&lt;/p>
&lt;hr>
&lt;h2 id="二决策模型到底是什么把输出空间写进请求里">二、决策模型到底是什么：把「输出空间」写进请求里
&lt;/h2>&lt;p>如果你读过上一篇 Jev，这一节可以跳过。但因为 Clef 已经完全兼容 Jev API，这里的三层概念会贯穿全文，还是把它讲完整。&lt;/p>
&lt;h3 id="21-一次调用的形状">2.1 一次调用的形状
&lt;/h3>&lt;p>请求只有三个东西：&lt;strong>一个 state（状态）、一组 questions（问题）、可选的 images（图片）&lt;/strong>。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">POST /accounts/{account_id}/ai/run/@cf/cloudflare/clef
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;model&amp;#34;: &amp;#34;clef&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;state&amp;#34;: &amp;#34;Checkout has been failing for every customer for the last hour.&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;questions&amp;#34;: { ... }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>state&lt;/code> 不是 prompt。它可以是字符串，也可以是 JSON 对象或数组——日志、聊天记录、应用状态、抓下来的表格。&lt;strong>它描述的是&amp;quot;现在发生了什么&amp;quot;，不是&amp;quot;你要干什么&amp;quot;。&lt;/strong>&lt;/p>
&lt;p>&lt;code>questions&lt;/code> 是这次的核心：&lt;strong>输出空间由调用方定义，不由模型定义&lt;/strong>。三种类型：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>类型&lt;/th>
&lt;th>语义&lt;/th>
&lt;th>criteria 形状&lt;/th>
&lt;th>返回&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>noul&lt;/code>&lt;/td>
&lt;td>真假判断&lt;/td>
&lt;td>可选，给 true / false 的描述&lt;/td>
&lt;td>一个 0–1 之间的数，表示「为真」的概率&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>choice&lt;/code>&lt;/td>
&lt;td>从命名选项里挑一个&lt;/td>
&lt;td>对象：&lt;code>{&amp;quot;billing&amp;quot;: &amp;quot;描述&amp;quot;, &amp;quot;technical&amp;quot;: &amp;quot;描述&amp;quot;}&lt;/code>&lt;/td>
&lt;td>最高概率的选项 + 每个选项的概率 + confidence&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>score&lt;/code>&lt;/td>
&lt;td>在一组&lt;strong>有序&lt;/strong>等级上打分&lt;/td>
&lt;td>数组：&lt;code>[&amp;quot;No impact&amp;quot;, &amp;quot;Minor&amp;quot;, &amp;quot;Major&amp;quot;, &amp;quot;Critical&amp;quot;]&lt;/code>&lt;/td>
&lt;td>概率加权后的&lt;strong>小数&lt;/strong>分数 + 每个等级的概率 + legend + confidence&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;code>noul&lt;/code> 这个名字有点怪（&amp;ldquo;null&amp;rdquo; 的双关，官方没解释）。&lt;code>choice&lt;/code> 和 &lt;code>score&lt;/code> 的关键差别是&lt;strong>有没有顺序&lt;/strong>：&lt;code>choice&lt;/code> 的选项互相独立，&lt;code>score&lt;/code> 的等级是有先后的——这个差别会直接决定后面 RLCD 的训练方式。&lt;/p>
&lt;h3 id="22-返回结构官方-schema-逐字段">2.2 返回结构：官方 schema 逐字段
&lt;/h3>&lt;p>Workers AI 的输出 schema 是公开的，我把它完整摘出来，因为这比任何描述都清楚：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;clef-flash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;answers&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;has_ollama&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.958&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;team&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;technical&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;probabilities&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;billing&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.06&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;technical&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.91&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;sales&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.03&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;confidence&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.91&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;severity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;legend&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;0&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;No impact&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;1&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Minor&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Major&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;3&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Critical&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;probabilities&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;0&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.02&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;1&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.11&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.31&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;3&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.56&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;confidence&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.56&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;usage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;input_tokens&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">548&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;output_tokens&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>几个容易被忽略的细节：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>score&lt;/code> 返回的是概率加权后的小数，不是整数等级。&lt;/strong> &lt;code>probabilities&lt;/code> 里最高的那档是 &lt;code>3&lt;/code>（Critical），但 &lt;code>score&lt;/code> 字段给的是 &lt;code>0×0.02 + 1×0.11 + 2×0.31 + 3×0.56 = 2.4&lt;/code>。这让你可以用比整数等级更细的粒度做阈值——&amp;ldquo;score &amp;gt; 2.3 就升级&amp;rdquo;，而不是只能在四个格子上跳。&lt;/li>
&lt;li>&lt;strong>&lt;code>confidence&lt;/code> 是从概率分布推导的&lt;/strong>，不是模型另 Predict 的一个数。所以它的含义很窄：&lt;strong>这个分布有多尖锐&lt;/strong>。它不等于&amp;quot;这条有多可能会对&amp;quot;。这一点后面讲 Brier 校准时会再说。&lt;/li>
&lt;li>&lt;strong>&lt;code>output_tokens&lt;/code> 恒为 0&lt;/strong>。决策模型不产出 token，于是 &lt;code>usage&lt;/code>、账单、延迟构成全都只由输入侧决定。这是整个模型类别最重要的经济学事实，第八节会专门算这笔账。&lt;/li>
&lt;/ul>
&lt;h3 id="23-三条路线对照">2.3 三条路线对照
&lt;/h3>&lt;p>把它和另外两条常见路线放在一起：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>LLM + structured output&lt;/th>
&lt;th>传统分类器&lt;/th>
&lt;th>决策模型（Clef/Jev）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>输出&lt;/td>
&lt;td>字符串里的 JSON&lt;/td>
&lt;td>类别 id 或分数&lt;/td>
&lt;td>类型化的选项 + 概率&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>新增类别&lt;/td>
&lt;td>改 prompt / schema&lt;/td>
&lt;td>&lt;strong>必须重新训练&lt;/strong>&lt;/td>
&lt;td>改请求里的 criteria，立即生效&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>是否有概率&lt;/td>
&lt;td>逻辑上没有，verbalized 的不可信&lt;/td>
&lt;td>有（但要校准）&lt;/td>
&lt;td>有，且为它专门做了 Brier 优化&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>延迟量级&lt;/td>
&lt;td>10^2–10^3 ms（还要看输出长度）&lt;/td>
&lt;td>个位数毫秒&lt;/td>
&lt;td>10^1–10^2 ms&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>换 L 高位？&lt;/td>
&lt;td>能，但要用整个模型的算力&lt;/td>
&lt;td>不能&lt;/td>
&lt;td>部分能（见第七节边界）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>能不能同时问多个问题&lt;/td>
&lt;td>能，但每个问题要各自写字段，成本线性增长&lt;/td>
&lt;td>需要多头 head&lt;/td>
&lt;td>&lt;strong>一次请求 1–64 个问题，共享 prefill&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>最后一行是 Clef 这次的工程重点，也是我后面算账的地方：&lt;strong>state 只 prefill 一次，问题越多，摊得越薄。&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="三架构冻结主干上面接一个小-transformer">三、架构：冻结主干上面接一个小 transformer
&lt;/h2>&lt;p>Clef 的架构一句话讲完：&lt;strong>把 Qwen 冻住，在上面装一个负责&amp;quot;按 schema 打分&amp;quot;的小头。&lt;/strong>&lt;/p>
&lt;h3 id="31-主干死了头活着">3.1 主干死了，头活着
&lt;/h3>&lt;p>官方博客的原话：&lt;/p>
&lt;blockquote>
&lt;p>By freezing Qwen3.8-27B for Clef and Qwen3.5-9B for Clef-flash, we jointly optimized the routing head alongside rank-256 low-rank adapters.&lt;/p>
&lt;/blockquote>
&lt;p>拆解一下这里面的三个决策：&lt;/p>
&lt;p>&lt;strong>① 主干完全冻结。&lt;/strong> 不是部分冻结、不是分层冻结，是 &lt;code>requires_grad=False&lt;/code>。27B 的 Qwen3.8-27B 和 9B 的 Qwen3.5-9B 权重一个都不动，视觉编码器（vision encoder）原样保留。&lt;/p>
&lt;p>&lt;strong>② 训练的是 routing head + rank-256 LoRA。&lt;/strong> rank-256 是相当高的秩，说明 Cloudflare 并没有只做&amp;quot;轻量 heads&amp;quot;，它给主干留了不小的适配容量。&lt;/p>
&lt;p>这里有个模型卡和博客的&lt;strong>口径不一致&lt;/strong>值得指出来：官方博客明确写了 rank-256 LoRA；但 Hugging Face 的模型卡行文里只说 &amp;ldquo;we added a small transformer head on top of the frozen Qwen backbone&amp;rdquo;，通篇没有提 LoRA，仓库里也没有 adapter 文件——因为&lt;strong>发布出来的是已经合并好的完整权重&lt;/strong>（&lt;code>model-*.safetensors&lt;/code> + 独立的 &lt;code>joint_head.safetensors&lt;/code>）。所以 LoRA 是训练期的手段，不是产物的一部分。想复现训练的人需要知道这一点；只想跑推理的人不用管。&lt;/p>
&lt;p>&lt;strong>③ 为什么要冻主干？&lt;/strong> 官方没明说，但从设计上至少有三个理由成立：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>保住主干的世界知识&lt;/strong>。全参数微调一个 27B 去做分类任务，大概率会把常识和推理能力训没——而基准表后面会显示，Clef 在 MMLU、ARC、HellaSwag 这些&amp;quot;看起来不该出现在决策模型表里&amp;quot;的知识基准上仍能打到 90+。&lt;/li>
&lt;li>&lt;strong>训练成本&lt;/strong>。冻住主干意味着 backward 只需要算 head 和 LoRA，优化器状态从 ~54GB(BF16)×N 降到几 GB。&lt;/li>
&lt;li>&lt;strong>可替换主干&lt;/strong>。架构上 head 只是读 final hidden states，理论上换一个更强的 base 只需要重训 head。这是留给未来的升级路径。&lt;/li>
&lt;/ul>
&lt;h3 id="32-一次前向分两段">3.2 一次前向，分两段
&lt;/h3>&lt;p>推理是两阶段的：&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/clef-and-clef-flash/images/index/clef-architecture.svg"
loading="lazy"
alt="Clef 的推理流程：冻结主干 prefill，joint schema head 联合打分"
>
Cloudflare 描述这段的话比较绕，我尽量忠于原文：&lt;/p>
&lt;blockquote>
&lt;p>This approach relies on a specialized two-stage attention routing process: every valid choice extracts context relevant to the prompt, allowing individual field parameters to cross-attend with other fields and back to the original payload prior to scoring. By leveraging a lexical prior, the model preserves semantic intent across options. Ultimately, the architecture unites option-specific evidence routing, joint cross-field attention, and schema-bound scoring.&lt;/p>
&lt;/blockquote>
&lt;p>把这句话拆成设计决策，比读起来有意思：&lt;/p>
&lt;p>&lt;strong>为什么 head 要&amp;quot;联合&amp;quot;（joint）打分，而不是每个问题各打各的？&lt;/strong> 因为问题之间不是独立的。同一个工单上，&amp;ldquo;是否紧急&amp;quot;的判断和&amp;quot;影响面多大&amp;quot;的判断互相约束。联合打分让模型可以在一个问题上&amp;quot;克制&amp;rdquo;，因为它知道另一头也在看同一份证据。&lt;strong>这是决策模型和&amp;quot;LLM 循环 64 次&amp;quot;最本质的差别&lt;/strong>——后者每次调用都看不见彼此。&lt;/p>
&lt;p>&lt;strong>什么是 lexical prior？&lt;/strong> 这是我觉得整篇架构里最聪明的一笔。Clef 不是为了每个新任务重新学语义，它&lt;strong>利用选项文本本身的字面 embedding&lt;/strong>。当你丢给它一个全新的 criteria 列表，它拿到的是这些词在主干词汇空间里已经存在的语义向量，不需要任何训练就能知道 &amp;ldquo;billing&amp;rdquo; 和 &amp;ldquo;invoice&amp;rdquo; 靠得近、和 &amp;ldquo;outage&amp;rdquo; 离得远。&lt;/p>
&lt;p>这直接解释了 Cloudflare 为什么敢说&amp;quot;不需要为每个新分类重新训练模型&amp;quot;——&lt;strong>零样本的类别泛化，是从主干的词向量空间里免费继承来的。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>为什么最后是 per-question softmax，而不是全局 softmax？&lt;/strong> 因为 &lt;code>choice&lt;/code> 和 &lt;code>score&lt;/code> 的选项数不一样、&lt;code>noul&lt;/code> 只有两项。全局 softmax 会让选项多的问题天然吃亏。每个问题各自归一化，才能让概率在同一个问题的选项之间可比。&lt;/p>
&lt;h3 id="33-视觉和多模态这次真正的差异化部分">3.3 视觉和多模态：这次真正的差异化部分
&lt;/h3>&lt;p>Jev 是纯文本的。Clef 因为在 Qwen 多模态主干上 post-train，&lt;strong>原样继承了 vision encoder&lt;/strong>，于是有了两个 Jev 没有的能力：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>图片输入&lt;/strong>：Workers AI 上每条请求最多 4 张 PNG/JPEG/WebP，每张 ≤4 MiB 且 ≤1600 万像素，解码后总量 ≤8 MiB；整个请求体 ≤13 MiB。&lt;strong>不接受远程 URL&lt;/strong>（必须 inline）。&lt;/li>
&lt;li>&lt;strong>上下文 64K&lt;/strong>（Workers AI 标 65,536 tokens），Jev 是 32K。&lt;/li>
&lt;/ul>
&lt;p>这里有个很关键的实现细节，Ollama v0.35.1 的更新说明里讲得比 Cloudflare 自己清楚：&lt;strong>图片不是挂在某个单独问题上的，它和文本 state 一起作为共享上下文，被这条请求里的所有问题共用并被一起打分。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">state ─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├──→ 被 questions 里全部 1–64 个问题共享
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">images ┘
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这一点很重要。做&amp;quot;截图分类 + 是否紧急 + 归哪个团队&amp;quot;三个问题时，图片只传一次、只 prefill 一次，三个问题各出各的答案。&lt;strong>用 LLM 做同样的事，你要么传三遍图，要么让模型一次性把三个答案全写出来（然后祈祷它格式稳定）。&lt;/strong>&lt;/p>
&lt;h3 id="34-自托管要打开的东西">3.4 自托管要打开的东西
&lt;/h3>&lt;p>模型卡说了债带 &lt;code>custom-code&lt;/code> 标签，所以有自己的仓库结构：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Cloudflare&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">clef&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">flash&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="o">-*.&lt;/span>&lt;span class="n">safetensors&lt;/span> &lt;span class="c1"># 冻结的 Qwen3.5-9B + vision encoder（已合并）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">safetensors&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">index&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">joint_head&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">safetensors&lt;/span> &lt;span class="c1"># 联合 schema 头&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">joint_head_config&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">joint_schema_model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">py&lt;/span> &lt;span class="c1"># 自定义代码：encode_record / collate_records /&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">│&lt;/span> &lt;span class="c1"># load_release_model / systemone&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">├──&lt;/span> &lt;span class="n">processor_config&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">└──&lt;/span> &lt;span class="n">chat_template&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">jinja&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>关键点：&lt;strong>标准 &lt;code>AutoModelForMultimodalLM&lt;/code> 不会自动暴露 joint head 的决策接口。&lt;/strong> 你要么用仓库里的 &lt;code>joint_schema_model.py&lt;/code>，要么自己拼 head。HF 页面上&amp;quot;Use this model&amp;quot;自动生成的 &lt;code>pipeline(&amp;quot;image-text-to-text&amp;quot;)&lt;/code> 示例是&lt;strong>错的&lt;/strong>（它把 Clef 当聊天模型用），模型卡正文推荐的是另一套：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">torch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">huggingface_hub&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">snapshot_download&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">snapshot_download&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Cloudflare/clef-flash&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">joint_schema_model&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">collate_records&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">encode_record&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">load_release_model&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">load_release_model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">device&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cuda&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">record&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;invoice&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;vendor&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Acme&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;total&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">1250.0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;currency&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;USD&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;overdue&amp;#34;&lt;/span>&lt;span class="p">}},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;What is the invoice status?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;paid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Invoice is paid.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;overdue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Invoice is past due.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;draft&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Not sent.&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;large&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Is the total above 1000 USD?&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">encoded&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">encode_record&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">processor&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tokenizer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">record&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processor&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">processor&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">batch&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collate_records&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="n">encoded&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">processor&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tokenizer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pad_token_id&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">torch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">device&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;cuda&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="n">torch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">inference_mode&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">logits&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">batch&lt;/span>&lt;span class="p">)[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">question&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">question_logits&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">zip&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">encoded&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">questions&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">logits&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">probabilities&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">question_logits&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">float&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">softmax&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tolist&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">question&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">question_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">dict&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">zip&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">question&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">option_ids&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">probabilities&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>或者走 Jev 兼容的那层：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">joint_schema_model&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">systemone&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">systemone&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processor&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;clef-flash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Our checkout started returning errors and orders are blocked.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;department&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Which team should handle the message?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;billing&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Payments or invoices&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;technical&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Bugs or outages&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;urgency&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;Can wait&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;This week&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Today&amp;#34;&lt;/span>&lt;span class="p">]},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;outage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Is a service down?&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;answers&amp;#34;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>需要注意的是：模型卡自己都说，&lt;strong>这两个模型目前没有任何 Inference Provider 部署&lt;/strong>（&amp;ldquo;This model isn&amp;rsquo;t deployed by any Inference Provider&amp;rdquo;）。想用云端，只有 Workers AI；想本地跑，见第七节。&lt;/p>
&lt;hr>
&lt;h2 id="四训练三个目标函数叠在一起">四、训练：三个目标函数叠在一起
&lt;/h2>&lt;p>Clef 的训练是可以推断出不少东西的，因为博客把损失函数和小技巧都写了。&lt;/p>
&lt;blockquote>
&lt;p>Our post-training utilizes label-smoothed cross-entropy for valid schema outputs paired with a Brier loss to refine probability calibration.&lt;/p>
&lt;/blockquote>
&lt;p>三个目标，各有各的活：&lt;/p>
&lt;h3 id="41-label-smoothed-cross-entropy">4.1 Label-smoothed cross-entropy
&lt;/h3>&lt;p>最基础的分类损失。用 label smoothing 而不是硬 CE，是为了&lt;strong>不让模型对训练集上的标签过度自信&lt;/strong>——这本来就是校准的第一步。它的作用对象是&amp;quot;哪些选项是 valid schema output&amp;quot;，也就是让模型学会在给定 schema 里做选择这件事本身。&lt;/p>
&lt;h3 id="42-brier-loss概率要能用先得准">4.2 Brier loss：概率要能用，先得准
&lt;/h3>&lt;p>这是我认为整个设计里&lt;strong>最该被学去的一笔&lt;/strong>。&lt;/p>
&lt;p>交叉熵只优化排序（把正确选项的概率拉到最高），不管这个值具体是多少。一个模型可以把正确选项打到 0.99、也可以打到 0.51，CE 都满意。但下游代码要用这个数做&lt;strong>阈值判断&lt;/strong>——&amp;ldquo;confidence &amp;gt; 0.8 就自动执行，0.5–0.8 转人工，&amp;lt; 0.5 直接拒绝&amp;rdquo;。这时候 0.99 和 0.51 的差别是致命的。&lt;/p>
&lt;p>Brier 损失（预测概率与实际结果之差的平方）强制模型输出&lt;strong>校准过的概率&lt;/strong>：当我说 70% 的时候，一百次里就得有七十次是对的。&lt;/p>
&lt;p>基准表里有三个直接检验校准的指标：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>基准&lt;/th>
&lt;th>含义&lt;/th>
&lt;th>Clef&lt;/th>
&lt;th>Clef-flash&lt;/th>
&lt;th>Jev&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>ForecastBench（Brier，&lt;strong>越低越好&lt;/strong>）&lt;/td>
&lt;td>预测未来事件的概率校准&lt;/td>
&lt;td>13.9&lt;/td>
&lt;td>&lt;strong>10.6&lt;/strong>&lt;/td>
&lt;td>17.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RouterBench（selected quality）&lt;/td>
&lt;td>路由选择质量&lt;/td>
&lt;td>79.7&lt;/td>
&lt;td>79.9&lt;/td>
&lt;td>79.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAGTruth（幻觉检测 F1）&lt;/td>
&lt;td>判断一段输出是不是幻觉&lt;/td>
&lt;td>&lt;strong>79.4&lt;/strong>&lt;/td>
&lt;td>35.6&lt;/td>
&lt;td>76.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>ForecastBench 上 Clef-flash 拿到全场最低的 Brier 分 10.6，比 Jev 的 17.4 好不少——这是可以写成&amp;quot;9B 模型的概率质量未必差于大模型&amp;quot;的一个证据。&lt;/p>
&lt;p>&lt;strong>但 RAGTruth 上 79.4 vs 35.6 的巨大鸿沟又是另一回事了。&lt;/strong> 同样是&amp;quot;判断一个陈述对不对&amp;quot;的存活任务，27B 打 79.4，9B 只有 35.6。这不是校准问题能解释的，是&lt;strong>能力问题&lt;/strong>。后面讲边界时再回来。&lt;/p>
&lt;h3 id="43-rlcd把有序这件事教进去">4.3 RLCD：把&amp;quot;有序&amp;quot;这件事教进去
&lt;/h3>&lt;p>第三个目标是 Cloudflare 自称开发的 &lt;strong>RLCD（Reinforcement Learning for Calibrated Decisions）&lt;/strong>：&lt;/p>
&lt;blockquote>
&lt;p>We also developed Reinforcement Learning for Calibrated Decisions (RLCD) to serve as a secondary optimization target, granting partial credit to adjacent ordinal choices, rewarding fully precise record outputs, and applying a reference penalty to prevent distribution shift, giving us better accuracy and generalization.&lt;/p>
&lt;/blockquote>
&lt;p>注意：&lt;strong>TypeSafe 的训练方法也叫 RLCD&lt;/strong>，而且 TypeSafe 是先发的（Jev 9 月 15 日，比 Clef 早半个月）。两个同名不是一个东西，Cloudflare 明确说是&amp;quot;我们也开发了一个&amp;quot;。这件事本身说明了这个新类别里&lt;strong>命名和方法都在快速收敛&lt;/strong>，短期内别指望有稳定的概念对照表。&lt;/p>
&lt;p>拆 RLCD 的三条规则，能看出它对什么在精细化：&lt;/p>
&lt;p>&lt;strong>① 给相邻的序数选项部分学分（partial credit）。&lt;/strong> 这是专为 &lt;code>score&lt;/code> 类型设计的。真实等级是 2（Major），模型答 3（Critical）应该比答 0（No impact）拿到多得多的学分——因为后者在业务上意味着&amp;quot;漏了一个严重故障&amp;quot;，前者只是&amp;quot;稍微严重了一点&amp;quot;。&lt;strong>用对称损失函数，这两者差别是 0。&lt;/strong>&lt;/p>
&lt;p>这是一个非常典型的&amp;quot;业务代价不对称&amp;quot;的例子，也是我认为 RLCD 里最有普适价值的一条：&lt;strong>不要让你的损失函数和你的事故等级表脱节。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>② 奖励完全精确的记录输出（fully precise record outputs）。&lt;/strong> 一次请求可能有 64 个问题，只答对 63 个不算答对。这条鼓励的是&lt;strong>整份回答的一致性&lt;/strong>——Agent 场景里，一条「判定 → 动作 → 复核」的链路只要中间有一环判错就整条崩掉，它需要的不是&amp;quot;平均正确率最高&amp;quot;，而是&amp;quot;一整份 schema 全答对的概率最高&amp;quot;。&lt;/p>
&lt;p>&lt;strong>③ 加 reference penalty 防分布漂移。&lt;/strong> 这是 RLHF 类方法的标准配件（类似 KL 惩罚），防的是 RL 阶段模型为了刷分把 policy 跑到奇怪的地方去。它的代价是&lt;strong>限制了 RL 阶段能带来的提升幅度&lt;/strong>，收益是模型不会在你说不清的维度上坏掉。对一个要放进生产决策链路的模型，这个取舍我觉得是对的。&lt;/p>
&lt;h3 id="44-合成数据一个值得单独说的技巧">4.4 合成数据：一个值得单独说的技巧
&lt;/h3>&lt;blockquote>
&lt;p>This training leverages our own internal synthetic datasets permutating field orders, prompts, and schema structures.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>对字段顺序、措辞、schema 结构做排列。&lt;/strong>&lt;/p>
&lt;p>这一条看起来平淡，实际上是决策模型训练里最重要的一环。原因是：草图 joint head 很容易学到位置相关的捷径——比如&amp;quot;criteria 里第一个选项就是答案&amp;quot;、&amp;ldquo;问题 ID 叫 &lt;code>urgent&lt;/code> 就打高分&amp;rdquo;。&lt;/p>
&lt;p>如果你只用固定模板生成训练数据，模型学不到&amp;quot;语义任务&amp;quot;，学到的是&amp;quot;模板形状&amp;quot;。&lt;strong>排列组合把这些捷径全部废掉，逼模型去学 &amp;ldquo;instructions 说的是什么意思&amp;rdquo; 而不是 &amp;ldquo;这个字段在哪个位置&amp;rdquo;。&lt;/strong>&lt;/p>
&lt;p>我在好几个 NLP 项目里见过一模一样的失败：准确率 99%，一看混淆矩阵漂亮得不行，把题干换个写法就跌到 60%。用 LLM 合成数据的时候，把&amp;quot;写一条 prompt&amp;quot;改成&amp;quot;写一条 prompt × 排列出二十种不同表达&amp;quot;，是我见过性价比最高的一步。&lt;strong>Cloudflare 明确写了这一点，说明他们踩过。&lt;/strong>&lt;/p>
&lt;p>不过这里也要说清楚另一面：&lt;strong>Cloudflare 完全没有披露训练数据的规模、配比、来源，也没有披露任何训练超参数&lt;/strong>（学习率、batch size、epoch 一概没有）。模型卡上只给了测试环境：&lt;code>torch&lt;/code> 2.11、&lt;code>transformers&lt;/code> 5.10.2、单卡 H200。这是可以理解的商业选择，但也意味着&lt;strong>官方数字无法复现、无法精确定位某个基准大幅跳水的真实原因&lt;/strong>。&lt;/p>
&lt;hr>
&lt;h2 id="五怎么用workers-ai-上的调用和全部限制">五、怎么用：Workers AI 上的调用，和全部限制
&lt;/h2>&lt;h3 id="51-最短的一条路workers-binding">5.1 最短的一条路：Workers binding
&lt;/h3>&lt;p>开发者文档给的类型化写法是这样的（这是我最推荐的入口，因为它不需要你处理鉴权和 endpoint）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-ts" data-lang="ts">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">export&lt;/span> &lt;span class="kr">interface&lt;/span> &lt;span class="nx">Env&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">AI&lt;/span>: &lt;span class="kt">Ai&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">export&lt;/span> &lt;span class="k">default&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">async&lt;/span> &lt;span class="nx">fetch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">request&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">env&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">Promise&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">Response&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="nx">env&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">AI&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;@cf/cloudflare/clef&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">model&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;clef&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">state&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Checkout has been failing for every customer for the last hour.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">questions&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">urgent&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">type&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">instructions&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Is this support request urgent?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">team&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">type&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">instructions&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Which team should handle this request?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">criteria&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">billing&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Payments, invoices, and refunds&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">technical&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Outages, errors, and configuration&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">sales&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Plans and upgrades&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">severity&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">type&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">instructions&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;How severe is the customer impact?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">criteria&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;No impact&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Minor&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Major&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Critical&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// response.answers.urgent -&amp;gt; 这条请求紧急的概率
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// response.answers.team -&amp;gt; 选中的团队 + 每个选项的概率
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// response.answers.severity -&amp;gt; 概率加权的分数（0 表示最低等级）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nx">Response&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">json&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">response&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span> &lt;span class="nx">satisfies&lt;/span> &lt;span class="nx">ExportedHandler&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">Env&lt;/span>&lt;span class="p">&amp;gt;;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>REST 版：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl https://api.cloudflare.com/client/v4/accounts/&lt;span class="nv">$CLOUDFLARE_ACCOUNT_ID&lt;/span>/ai/run/@cf/cloudflare/clef &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -X POST &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Authorization: Bearer &lt;/span>&lt;span class="nv">$CLOUDFLARE_AUTH_TOKEN&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;model&amp;#34;: &amp;#34;clef&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;state&amp;#34;: &amp;#34;Checkout has been failing for every customer for the last hour.&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;questions&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;urgent&amp;#34;: { &amp;#34;type&amp;#34;: &amp;#34;noul&amp;#34;, &amp;#34;instructions&amp;#34;: &amp;#34;Is this support request urgent?&amp;#34; },
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;team&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;type&amp;#34;: &amp;#34;choice&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;instructions&amp;#34;: &amp;#34;Which team should handle this request?&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;criteria&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;billing&amp;#34;: &amp;#34;Payments, invoices, and refunds&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;technical&amp;#34;: &amp;#34;Outages, errors, and configuration&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;sales&amp;#34;: &amp;#34;Plans and upgrades&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> },
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;severity&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;type&amp;#34;: &amp;#34;score&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;instructions&amp;#34;: &amp;#34;How severe is the customer impact?&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;criteria&amp;#34;: [&amp;#34;No impact&amp;#34;, &amp;#34;Minor&amp;#34;, &amp;#34;Major&amp;#34;, &amp;#34;Critical&amp;#34;]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>也可以通过 &lt;strong>AI Gateway&lt;/strong> 调用，这样顺手带上了日志、缓存和限流。这一点在第八节讲 RL 微调闭环时会再出现——&lt;strong>Gateway 不只是网关，它是 Cloudflare 整个微调产品的数据入口。&lt;/strong>&lt;/p>
&lt;h3 id="52-完整的限制清单">5.2 完整的限制清单
&lt;/h3>&lt;p>这些数字散落在文档的参数表里，我按被踩到的概率排了序：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>项&lt;/th>
&lt;th>限制&lt;/th>
&lt;th>坑在哪&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>每次请求的问题数&lt;/td>
&lt;td>&lt;strong>1–64&lt;/strong>&lt;/td>
&lt;td>也是摊薄成本的关键，见第九节&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>问题 ID&lt;/td>
&lt;td>字母、数字、&lt;code>_&lt;/code>、&lt;code>.&lt;/code>、&lt;code>-&lt;/code>，最长 100 字符&lt;/td>
&lt;td>别用中文 ID，别用超长描述当 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>图片数量&lt;/td>
&lt;td>&lt;strong>最多 4 张&lt;/strong>&lt;/td>
&lt;td>见下&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>单张图片&lt;/td>
&lt;td>≤ 4 MiB 且 ≤ 1600 万像素&lt;/td>
&lt;td>手机直出的高分辨率截图很容易超&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>解码后图片总量&lt;/td>
&lt;td>≤ 8 MiB&lt;/td>
&lt;td>4 张一起传时先各自压一遍&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>请求体总大小&lt;/td>
&lt;td>≤ 13 MiB&lt;/td>
&lt;td>图片 + state 加起来算总账&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>图片来源&lt;/td>
&lt;td>&lt;strong>只支持 inline base64，不支持远程 URL&lt;/strong>&lt;/td>
&lt;td>这是 Clef 对 System One API 的扩展；很多人的第一反应是丢一个 CDN 链接进去，会失败&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>state&lt;/code> 超长&lt;/td>
&lt;td>截断至模型 token 上限&lt;/td>
&lt;td>静默截断，不报错。长日志喂进去之前自己先切&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>上下文窗口&lt;/td>
&lt;td>Workers AI：&lt;strong>65,536 tokens&lt;/strong>&lt;/td>
&lt;td>自托管侧 &lt;code>encode_record&lt;/code> 的 &lt;code>max_length&lt;/code> &lt;strong>默认只有 16,384&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>model 字段&lt;/td>
&lt;td>必须匹配 &lt;code>^(clef|clef-flash)$&lt;/code>&lt;/td>
&lt;td>填 &lt;code>cloudflare/clef&lt;/code> 之类会被拒&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>最后两条放一起看：&lt;strong>文档里的 64K 和模型卡里的 16K 不是矛盾，是两个阶段的配置。&lt;/strong> Workers AI 侧给你开到 65,536；自托管时默认的截断位是 16,384，要更长得显式传 &lt;code>max_length&lt;/code>。还有一个 &lt;code>max_state_tokens&lt;/code> 可以单独限制 state 部分的预算。&lt;/p>
&lt;h3 id="53-图片怎么用">5.3 图片怎么用
&lt;/h3>&lt;p>图片以 base64 数组形式放在顶层，跟 state 平级：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;clef-flash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;The user took this screenshot.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;images&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;base64 png&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;has_ollama&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Does this image contain Ollama?&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>自托管时换成 PIL：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">PIL&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Image&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">record&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;task&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Review the attached receipt.&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;images&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Image&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;receipt.jpg&amp;#34;&lt;/span>&lt;span class="p">)],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;legible&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Is the receipt total legible?&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">encoded&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">encode_record&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">processor&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tokenizer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">record&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processor&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">processor&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>自托管还额外要求装 &lt;code>pillow&lt;/code>。另一个挺方便的特性：&lt;strong>纯文本 record 和多模态 record 可以在同一个 batch 里混着跑&lt;/strong>，打包较为省事。&lt;/p>
&lt;hr>
&lt;h2 id="六43-个基准怎么读-cloudflare-这张表">六、43 个基准：怎么读 Cloudflare 这张表
&lt;/h2>&lt;p>下面这张表是模型卡里 Decision Index 0.2.1 的完整数据。分数是百分比，越高性能越好；&lt;strong>ForecastBench 是 Brier 分，越低越好&lt;/strong>；最后两行是延迟毫秒，越低越好。加粗是该行最优。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>基准&lt;/th>
&lt;th style="text-align: right">Clef&lt;/th>
&lt;th style="text-align: right">Clef-flash&lt;/th>
&lt;th style="text-align: right">Jev&lt;/th>
&lt;th style="text-align: right">DiffusionGemma Jev&lt;/th>
&lt;th style="text-align: right">Kev 9B&lt;/th>
&lt;th style="text-align: right">Laya&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>BFCL（case exact）&lt;/td>
&lt;td style="text-align: right">98.5&lt;/td>
&lt;td style="text-align: right">&lt;strong>98.8&lt;/strong>&lt;/td>
&lt;td style="text-align: right">95.8&lt;/td>
&lt;td style="text-align: right">96.5&lt;/td>
&lt;td style="text-align: right">94.5&lt;/td>
&lt;td style="text-align: right">38.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ToolRet（nDCG@10）&lt;/td>
&lt;td style="text-align: right">&lt;strong>69.2&lt;/strong>&lt;/td>
&lt;td style="text-align: right">66.4&lt;/td>
&lt;td style="text-align: right">65.3&lt;/td>
&lt;td style="text-align: right">61.2&lt;/td>
&lt;td style="text-align: right">64.3&lt;/td>
&lt;td style="text-align: right">12.8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>API-Bank（accuracy）&lt;/td>
&lt;td style="text-align: right">91.9&lt;/td>
&lt;td style="text-align: right">&lt;strong>93.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">88.2&lt;/td>
&lt;td style="text-align: right">83.7&lt;/td>
&lt;td style="text-align: right">56.3&lt;/td>
&lt;td style="text-align: right">11.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BANKING77（macro-F1）&lt;/td>
&lt;td style="text-align: right">&lt;strong>94.2&lt;/strong>&lt;/td>
&lt;td style="text-align: right">90.9&lt;/td>
&lt;td style="text-align: right">79.7&lt;/td>
&lt;td style="text-align: right">74.3&lt;/td>
&lt;td style="text-align: right">84.8&lt;/td>
&lt;td style="text-align: right">14.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CLINC150+OOS（macro-F1）&lt;/td>
&lt;td style="text-align: right">&lt;strong>97.4&lt;/strong>&lt;/td>
&lt;td style="text-align: right">66.8&lt;/td>
&lt;td style="text-align: right">89.3&lt;/td>
&lt;td style="text-align: right">83.5&lt;/td>
&lt;td style="text-align: right">79.0&lt;/td>
&lt;td style="text-align: right">3.2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RouterBench（selected quality）&lt;/td>
&lt;td style="text-align: right">79.7&lt;/td>
&lt;td style="text-align: right">79.9&lt;/td>
&lt;td style="text-align: right">79.9&lt;/td>
&lt;td style="text-align: right">79.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>80.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">57.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Home appliance simulator（case exact）&lt;/td>
&lt;td style="text-align: right">83.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>97.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">52.3&lt;/td>
&lt;td style="text-align: right">42.0&lt;/td>
&lt;td style="text-align: right">25.0&lt;/td>
&lt;td style="text-align: right">0.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SGD/SGD-X（macro-F1）&lt;/td>
&lt;td style="text-align: right">43.8&lt;/td>
&lt;td style="text-align: right">34.2&lt;/td>
&lt;td style="text-align: right">43.0&lt;/td>
&lt;td style="text-align: right">40.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>64.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">42.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ContractNLI（macro-F1）&lt;/td>
&lt;td style="text-align: right">81.4&lt;/td>
&lt;td style="text-align: right">&lt;strong>84.3&lt;/strong>&lt;/td>
&lt;td style="text-align: right">71.7&lt;/td>
&lt;td style="text-align: right">76.0&lt;/td>
&lt;td style="text-align: right">57.8&lt;/td>
&lt;td style="text-align: right">29.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ANLI（macro-F1）&lt;/td>
&lt;td style="text-align: right">69.8&lt;/td>
&lt;td style="text-align: right">59.1&lt;/td>
&lt;td style="text-align: right">&lt;strong>74.8&lt;/strong>&lt;/td>
&lt;td style="text-align: right">66.4&lt;/td>
&lt;td style="text-align: right">56.3&lt;/td>
&lt;td style="text-align: right">48.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BPoMP（accuracy）&lt;/td>
&lt;td style="text-align: right">&lt;strong>96.9&lt;/strong>&lt;/td>
&lt;td style="text-align: right">95.4&lt;/td>
&lt;td style="text-align: right">90.6&lt;/td>
&lt;td style="text-align: right">86.9&lt;/td>
&lt;td style="text-align: right">67.0&lt;/td>
&lt;td style="text-align: right">51.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Humicroedit（accuracy）&lt;/td>
&lt;td style="text-align: right">66.7&lt;/td>
&lt;td style="text-align: right">&lt;strong>75.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">61.9&lt;/td>
&lt;td style="text-align: right">63.0&lt;/td>
&lt;td style="text-align: right">55.8&lt;/td>
&lt;td style="text-align: right">47.2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>POP909-CL（accuracy）&lt;/td>
&lt;td style="text-align: right">15.8&lt;/td>
&lt;td style="text-align: right">1.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>18.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">2.5&lt;/td>
&lt;td style="text-align: right">10.8&lt;/td>
&lt;td style="text-align: right">5.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cfcolor（accuracy）&lt;/td>
&lt;td style="text-align: right">&lt;strong>66.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">65.8&lt;/td>
&lt;td style="text-align: right">64.7&lt;/td>
&lt;td style="text-align: right">58.2&lt;/td>
&lt;td style="text-align: right">56.3&lt;/td>
&lt;td style="text-align: right">52.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MMLU（accuracy）&lt;/td>
&lt;td style="text-align: right">90.3&lt;/td>
&lt;td style="text-align: right">&lt;strong>91.8&lt;/strong>&lt;/td>
&lt;td style="text-align: right">91.7&lt;/td>
&lt;td style="text-align: right">79.3&lt;/td>
&lt;td style="text-align: right">75.3&lt;/td>
&lt;td style="text-align: right">30.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPQA Diamond（accuracy）&lt;/td>
&lt;td style="text-align: right">48.0&lt;/td>
&lt;td style="text-align: right">51.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>78.3&lt;/strong>&lt;/td>
&lt;td style="text-align: right">44.9&lt;/td>
&lt;td style="text-align: right">38.8&lt;/td>
&lt;td style="text-align: right">27.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ARC-Easy（accuracy）&lt;/td>
&lt;td style="text-align: right">99.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>99.5&lt;/strong>&lt;/td>
&lt;td style="text-align: right">99.3&lt;/td>
&lt;td style="text-align: right">98.2&lt;/td>
&lt;td style="text-align: right">97.7&lt;/td>
&lt;td style="text-align: right">47.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ARC-Challenge（accuracy）&lt;/td>
&lt;td style="text-align: right">97.7&lt;/td>
&lt;td style="text-align: right">&lt;strong>98.3&lt;/strong>&lt;/td>
&lt;td style="text-align: right">97.8&lt;/td>
&lt;td style="text-align: right">94.5&lt;/td>
&lt;td style="text-align: right">93.7&lt;/td>
&lt;td style="text-align: right">28.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>WinoGrande（accuracy）&lt;/td>
&lt;td style="text-align: right">93.5&lt;/td>
&lt;td style="text-align: right">&lt;strong>97.5&lt;/strong>&lt;/td>
&lt;td style="text-align: right">92.0&lt;/td>
&lt;td style="text-align: right">73.6&lt;/td>
&lt;td style="text-align: right">73.2&lt;/td>
&lt;td style="text-align: right">50.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HellaSwag（accuracy）&lt;/td>
&lt;td style="text-align: right">98.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>98.6&lt;/strong>&lt;/td>
&lt;td style="text-align: right">94.5&lt;/td>
&lt;td style="text-align: right">83.3&lt;/td>
&lt;td style="text-align: right">81.9&lt;/td>
&lt;td style="text-align: right">33.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GSM8K（accuracy）&lt;/td>
&lt;td style="text-align: right">&lt;strong>80.8&lt;/strong>&lt;/td>
&lt;td style="text-align: right">67.3&lt;/td>
&lt;td style="text-align: right">79.9&lt;/td>
&lt;td style="text-align: right">50.3&lt;/td>
&lt;td style="text-align: right">48.7&lt;/td>
&lt;td style="text-align: right">21.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ChessBench（accuracy）&lt;/td>
&lt;td style="text-align: right">&lt;strong>24.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">23.0&lt;/td>
&lt;td style="text-align: right">17.2&lt;/td>
&lt;td style="text-align: right">14.2&lt;/td>
&lt;td style="text-align: right">11.2&lt;/td>
&lt;td style="text-align: right">7.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MuSR（accuracy）&lt;/td>
&lt;td style="text-align: right">83.5&lt;/td>
&lt;td style="text-align: right">&lt;strong>86.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">66.1&lt;/td>
&lt;td style="text-align: right">61.2&lt;/td>
&lt;td style="text-align: right">57.9&lt;/td>
&lt;td style="text-align: right">43.2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SATA-Bench（case exact）&lt;/td>
&lt;td style="text-align: right">33.8&lt;/td>
&lt;td style="text-align: right">&lt;strong>36.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">26.4&lt;/td>
&lt;td style="text-align: right">27.5&lt;/td>
&lt;td style="text-align: right">26.7&lt;/td>
&lt;td style="text-align: right">0.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BRIGHT（nDCG@10）&lt;/td>
&lt;td style="text-align: right">45.9&lt;/td>
&lt;td style="text-align: right">39.3&lt;/td>
&lt;td style="text-align: right">&lt;strong>47.5&lt;/strong>&lt;/td>
&lt;td style="text-align: right">42.9&lt;/td>
&lt;td style="text-align: right">38.5&lt;/td>
&lt;td style="text-align: right">19.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Amazon ESCI（macro-F1）&lt;/td>
&lt;td style="text-align: right">&lt;strong>57.5&lt;/strong>&lt;/td>
&lt;td style="text-align: right">57.4&lt;/td>
&lt;td style="text-align: right">55.2&lt;/td>
&lt;td style="text-align: right">53.4&lt;/td>
&lt;td style="text-align: right">49.2&lt;/td>
&lt;td style="text-align: right">24.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ACOS（per-review F1）&lt;/td>
&lt;td style="text-align: right">&lt;strong>33.3&lt;/strong>&lt;/td>
&lt;td style="text-align: right">25.9&lt;/td>
&lt;td style="text-align: right">29.5&lt;/td>
&lt;td style="text-align: right">24.5&lt;/td>
&lt;td style="text-align: right">18.3&lt;/td>
&lt;td style="text-align: right">3.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FinEntity（macro-F1）&lt;/td>
&lt;td style="text-align: right">96.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>97.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">87.0&lt;/td>
&lt;td style="text-align: right">89.0&lt;/td>
&lt;td style="text-align: right">88.4&lt;/td>
&lt;td style="text-align: right">61.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>VAST（macro-F1）&lt;/td>
&lt;td style="text-align: right">59.5&lt;/td>
&lt;td style="text-align: right">49.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>64.6&lt;/strong>&lt;/td>
&lt;td style="text-align: right">55.7&lt;/td>
&lt;td style="text-align: right">55.4&lt;/td>
&lt;td style="text-align: right">40.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>NLI4CT（macro-F1）&lt;/td>
&lt;td style="text-align: right">82.9&lt;/td>
&lt;td style="text-align: right">78.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>84.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">78.4&lt;/td>
&lt;td style="text-align: right">74.9&lt;/td>
&lt;td style="text-align: right">47.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CRUXEval（accuracy）&lt;/td>
&lt;td style="text-align: right">&lt;strong>86.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">86.1&lt;/td>
&lt;td style="text-align: right">73.0&lt;/td>
&lt;td style="text-align: right">64.7&lt;/td>
&lt;td style="text-align: right">51.2&lt;/td>
&lt;td style="text-align: right">40.2&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CLadder（accuracy）&lt;/td>
&lt;td style="text-align: right">94.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>97.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">72.6&lt;/td>
&lt;td style="text-align: right">67.8&lt;/td>
&lt;td style="text-align: right">62.0&lt;/td>
&lt;td style="text-align: right">52.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ForecastBench（Brier，&lt;strong>越低越好&lt;/strong>）&lt;/td>
&lt;td style="text-align: right">13.9&lt;/td>
&lt;td style="text-align: right">&lt;strong>10.6&lt;/strong>&lt;/td>
&lt;td style="text-align: right">17.4&lt;/td>
&lt;td style="text-align: right">29.6&lt;/td>
&lt;td style="text-align: right">17.6&lt;/td>
&lt;td style="text-align: right">41.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Habermas Machine（accuracy）&lt;/td>
&lt;td style="text-align: right">68.7&lt;/td>
&lt;td style="text-align: right">&lt;strong>71.8&lt;/strong>&lt;/td>
&lt;td style="text-align: right">45.9&lt;/td>
&lt;td style="text-align: right">45.0&lt;/td>
&lt;td style="text-align: right">39.4&lt;/td>
&lt;td style="text-align: right">33.4&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PhishNChips（accuracy）&lt;/td>
&lt;td style="text-align: right">79.6&lt;/td>
&lt;td style="text-align: right">75.0&lt;/td>
&lt;td style="text-align: right">62.5&lt;/td>
&lt;td style="text-align: right">&lt;strong>85.4&lt;/strong>&lt;/td>
&lt;td style="text-align: right">50.7&lt;/td>
&lt;td style="text-align: right">50.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MMLU-Pro（accuracy）&lt;/td>
&lt;td style="text-align: right">65.9&lt;/td>
&lt;td style="text-align: right">65.3&lt;/td>
&lt;td style="text-align: right">&lt;strong>82.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">56.9&lt;/td>
&lt;td style="text-align: right">51.1&lt;/td>
&lt;td style="text-align: right">13.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BBH（accuracy）&lt;/td>
&lt;td style="text-align: right">73.7&lt;/td>
&lt;td style="text-align: right">68.9&lt;/td>
&lt;td style="text-align: right">&lt;strong>92.9&lt;/strong>&lt;/td>
&lt;td style="text-align: right">70.7&lt;/td>
&lt;td style="text-align: right">65.2&lt;/td>
&lt;td style="text-align: right">34.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>RAGTruth（hallucination F1）&lt;/td>
&lt;td style="text-align: right">&lt;strong>79.4&lt;/strong>&lt;/td>
&lt;td style="text-align: right">35.6&lt;/td>
&lt;td style="text-align: right">76.5&lt;/td>
&lt;td style="text-align: right">70.4&lt;/td>
&lt;td style="text-align: right">46.2&lt;/td>
&lt;td style="text-align: right">48.8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>HoVer（accuracy）&lt;/td>
&lt;td style="text-align: right">65.2&lt;/td>
&lt;td style="text-align: right">61.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>72.9&lt;/strong>&lt;/td>
&lt;td style="text-align: right">70.9&lt;/td>
&lt;td style="text-align: right">58.8&lt;/td>
&lt;td style="text-align: right">55.8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>When2Call MCQ（accuracy）&lt;/td>
&lt;td style="text-align: right">72.4&lt;/td>
&lt;td style="text-align: right">65.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>81.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">75.4&lt;/td>
&lt;td style="text-align: right">49.6&lt;/td>
&lt;td style="text-align: right">11.9&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>New Yorker（accuracy）&lt;/td>
&lt;td style="text-align: right">69.5&lt;/td>
&lt;td style="text-align: right">66.1&lt;/td>
&lt;td style="text-align: right">&lt;strong>70.1&lt;/strong>&lt;/td>
&lt;td style="text-align: right">63.6&lt;/td>
&lt;td style="text-align: right">58.1&lt;/td>
&lt;td style="text-align: right">27.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Median latency（ms）&lt;/strong>&lt;/td>
&lt;td style="text-align: right">209.3&lt;/td>
&lt;td style="text-align: right">38.8&lt;/td>
&lt;td style="text-align: right">524.1&lt;/td>
&lt;td style="text-align: right">84.4&lt;/td>
&lt;td style="text-align: right">51.4&lt;/td>
&lt;td style="text-align: right">&lt;strong>5.8&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>p95 latency（ms）&lt;/strong>&lt;/td>
&lt;td style="text-align: right">238.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>122.4&lt;/strong>&lt;/td>
&lt;td style="text-align: right">536.0&lt;/td>
&lt;td style="text-align: right">211.2&lt;/td>
&lt;td style="text-align: right">187.9&lt;/td>
&lt;td style="text-align: right">222.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="61-别看总分看分组">6.1 别看总分，看分组
&lt;/h3>&lt;p>这张表扫一眼会觉得&amp;quot;互有胜负&amp;quot;，但按基准的性质分组之后，规律非常清楚。&lt;/p>
&lt;p>&lt;strong>A 组：工具调用 / API 选择 —— Clef-flash 全场最强&lt;/strong>&lt;/p>
&lt;p>BFCL 98.8（全场最高）、API-Bank 93.1（全场最高）、Home appliance 97.7（全场最高，第二名 Clef 只有 83.0，Jev 只有 52.3）。&lt;/p>
&lt;p>这组是 Clef-flash 的核心卖点，也是最反直觉的一组：&lt;strong>3 倍小、6 倍快的模型，在工具选择上打过了 27B 的自己。&lt;/strong> 一个可能的原因是这类任务的瓶颈不在&amp;quot;理解&amp;quot;，而在&amp;quot;严格按给出的 schema 输出&amp;quot;——大模型反而更容易带着自己的先验跑偏。这一组的结论对我自己的 Agent 用处很大：&lt;strong>工具路由这件事，先试 9B。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>B 组：意图分类 —— 只有 27B 的 Clef 能看&lt;/strong>&lt;/p>
&lt;p>BANKING77：94.2（Clef）&amp;gt; 90.9（flash）&amp;gt; Jev 79.7。领先 Jev 超过 14 个百分点，是整张表里最大的差距之一。&lt;/p>
&lt;p>&lt;strong>CLINC150+OOS：97.4 vs 66.8。&lt;/strong> 这是我觉得整张表里最值得单独拎出来讲的一行，第六节下半段专门讲。&lt;/p>
&lt;p>&lt;strong>C 组：知识密集型 —— Jev 全面领先，Gap 很大&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th style="text-align: right">Clef&lt;/th>
&lt;th style="text-align: right">Clef-flash&lt;/th>
&lt;th style="text-align: right">Jev&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>GPQA Diamond&lt;/td>
&lt;td style="text-align: right">48.0&lt;/td>
&lt;td style="text-align: right">51.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>78.3&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MMLU-Pro&lt;/td>
&lt;td style="text-align: right">65.9&lt;/td>
&lt;td style="text-align: right">65.3&lt;/td>
&lt;td style="text-align: right">&lt;strong>82.7&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>BBH&lt;/td>
&lt;td style="text-align: right">73.7&lt;/td>
&lt;td style="text-align: right">68.9&lt;/td>
&lt;td style="text-align: right">&lt;strong>92.9&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>GPQA 差 30 个点，BBH 差 19 个点。这不是&amp;quot;差一点&amp;quot;，是&lt;strong>两个物种&lt;/strong>。Jev 虽然在 saving 上被 Clef-flash 甩开，但它在&amp;quot;需要真的知道东西&amp;quot;的任务上仍是另一个量级。&lt;/p>
&lt;p>有意思的是 MMLU 那一栏：Clef-flash 91.8 &amp;gt; Jev 91.7 &amp;gt; Clef 90.3，但一到 MMLU-Pro（更难的变体）就全部掉下来。这说明 MMLU 已经被主干全然记住了，得分来自 Qwen 的预训练分布而不是决策能力本身。&lt;strong>这一行基本可以直接忽略。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>D 组：纯 NLI / 常识 —— 大家都很烂，别硬用&lt;/strong>&lt;/p>
&lt;p>POP909-CL 上四个模型分别是 15.8 / 1.6 / 18.1 / 2.5。这个分数接近瞎猜（三分类基线 33%）。类似地 SATA-Bench 最高也只有 36.7。&lt;/p>
&lt;p>这说明一件很重要的事：&lt;strong>决策模型不是万能兜底。&lt;/strong> 有些任务它就是做不了，而且它做不了的时候不会告诉你它不知道——它照样给你返回一个和为 1 的概率分布。这是第 2.2 节那个 &lt;code>confidence&lt;/code> 陷阱的极端形态。&lt;/p>
&lt;h3 id="62-clinc150oos668-这个数字在说什么">6.2 CLINC150+OOS：66.8 这个数字在说什么
&lt;/h3>&lt;p>CLINC150 是一个 150 类的意图分类数据集，&lt;code>+OOS&lt;/code> 表示额外掺入了**分布外（out-of-scope）**样本——那些不属于任何 150 类的句子。带 OOS 版本考察的是模型能不能说&amp;quot;这个我处理不了&amp;quot;。&lt;/p>
&lt;p>Clef 拿 97.4，Clef-flash 拿 66.8，差 &lt;strong>30.6 个点&lt;/strong>。这是整张 43 行表里，&lt;strong>同一个公司两个模型之间最大的性能差距&lt;/strong>。&lt;/p>
&lt;p>为什么 OOS 特别难？因为回答它不是&amp;quot;从给定选项里挑一个&amp;quot;，而是**&amp;ldquo;承认这些选项里没有一个对的&amp;rdquo;**。这需要模型对自己的知识边界有概念，属于元认知能力。参数量压缩之后，最先被牺牲的往往就是这种高阶能力。&lt;/p>
&lt;p>更麻烦的是，这种失败是&lt;strong>静默&lt;/strong>的。当输入的真实类别在选项列表里不存在时，模型必须把 100% 的概率分配到某个明确错误的选项上。你拿到的是一个漂漂亮亮的和为 1 的分布，&lt;code>confidence&lt;/code> 甚至可能很高——&lt;strong>因为分布确实很尖锐，只是尖错了地方。&lt;/strong>&lt;/p>
&lt;p>这一点没有一个第三方转述是我看到有人单独挑出来的，但对我自己的工程判断影响最大：&lt;strong>如果你要用 Clef-flash 做带&amp;quot;其他/拒答&amp;quot;的分类，请务必把它当作一条独立的、要单独评估的能力，不要相信总和指标。&lt;/strong>&lt;/p>
&lt;p>给一条实践建议：如果你确实要用 flash 又需要拒答能力，用显式兜底而不是指望它自己不答应——&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;intent&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Which intent fits the message?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;billing&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Payments and invoices&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;technical&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Outages and errors&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;account&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Login and account access&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;__other__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;None of the above descriptions fit well&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后单独用置信度阈值把 &lt;code>__other__&lt;/code> 和不确定的情况拎出来。前提是你在自己的数据上验过这个阈值，因为 Brier 校准是对&lt;strong>一整个分布&lt;/strong>做的，不是对单个选项做的。&lt;/p>
&lt;h3 id="63-延迟中位数会骗人看-p95中位数-这个比值">6.3 延迟：中位数会骗人，看 p95/中位数 这个比值
&lt;/h3>&lt;p>只看中位数，你会以为 Laya（5.8ms）统治世界。把 p95 拉进来一起看：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模型&lt;/th>
&lt;th style="text-align: right">Median&lt;/th>
&lt;th style="text-align: right">p95&lt;/th>
&lt;th style="text-align: right">&lt;strong>p95 / Median&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Clef&lt;/td>
&lt;td style="text-align: right">209.3&lt;/td>
&lt;td style="text-align: right">238.6&lt;/td>
&lt;td style="text-align: right">&lt;strong>1.14&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Clef-flash&lt;/td>
&lt;td style="text-align: right">38.8&lt;/td>
&lt;td style="text-align: right">122.4&lt;/td>
&lt;td style="text-align: right">&lt;strong>3.16&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Jev&lt;/td>
&lt;td style="text-align: right">524.1&lt;/td>
&lt;td style="text-align: right">536.0&lt;/td>
&lt;td style="text-align: right">&lt;strong>1.02&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DiffusionGemma Jev&lt;/td>
&lt;td style="text-align: right">84.4&lt;/td>
&lt;td style="text-align: right">211.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>2.50&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Kev 9B&lt;/td>
&lt;td style="text-align: right">51.4&lt;/td>
&lt;td style="text-align: right">187.9&lt;/td>
&lt;td style="text-align: right">&lt;strong>3.66&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Laya&lt;/td>
&lt;td style="text-align: right">5.8&lt;/td>
&lt;td style="text-align: right">222.5&lt;/td>
&lt;td style="text-align: right">&lt;strong>38.4&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Laya 的中位数是 5.8ms，但它的 p95 是 222.5ms——&lt;strong>是 Clef-flash p95 的 1.8 倍，比它自己的中位数慢 38 倍。&lt;/strong>&lt;/p>
&lt;p>这通常意味着它的快是有条件的：绝大部分请求走一条极短的路径（毕竟只有 421M 参数），剩下那一小部分（长 state、多选项）则走了另一条完全不同且慢得多的路径。&lt;strong>中位数测的是&amp;quot;运气好的那部分请求&amp;quot;，p95 才测&amp;quot;你的用户会遇到的那部分&amp;quot;。&lt;/strong>&lt;/p>
&lt;p>Clef-flash 是唯一一个在这两列上同时进前列的模型：&lt;strong>中位第二（38.8ms）、p95 第一（122.4ms）。&lt;/strong> 这一点比&amp;quot;A 组基准分数最高&amp;quot;更能说服我。&lt;/p>
&lt;p>Jev 的比值是 1.02，极其稳定——这是托管服务统一基础设施的好处，但也说明&lt;strong>它没有便宜的中位档，每一次都是 500ms 起。&lt;/strong>&lt;/p>
&lt;h3 id="64-官方-workflow-evals赢了但赢得很小">6.4 官方 workflow evals：赢了，但赢得很小
&lt;/h3>&lt;p>这是 TypeSafe 自己发布的工作流评测（只有这样三方可比），四个端到端业务流程：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>工作流&lt;/th>
&lt;th>指标&lt;/th>
&lt;th style="text-align: right">Clef&lt;/th>
&lt;th style="text-align: right">Clef-flash&lt;/th>
&lt;th style="text-align: right">Jev&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Invoice processing&lt;/td>
&lt;td>Exact actions&lt;/td>
&lt;td style="text-align: right">&lt;strong>64.7&lt;/strong>&lt;/td>
&lt;td style="text-align: right">57.1&lt;/td>
&lt;td style="text-align: right">61.8&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Invoice processing&lt;/td>
&lt;td>Primary action&lt;/td>
&lt;td style="text-align: right">&lt;strong>86.2&lt;/strong>&lt;/td>
&lt;td style="text-align: right">73.3&lt;/td>
&lt;td style="text-align: right">83.1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Customer service&lt;/td>
&lt;td>Exact actions&lt;/td>
&lt;td style="text-align: right">76.3&lt;/td>
&lt;td style="text-align: right">&lt;strong>77.0&lt;/strong>&lt;/td>
&lt;td style="text-align: right">76.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Security incidents&lt;/td>
&lt;td>Exact actions&lt;/td>
&lt;td style="text-align: right">&lt;strong>62.9&lt;/strong>&lt;/td>
&lt;td style="text-align: right">61.7&lt;/td>
&lt;td style="text-align: right">61.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Agent trace observability&lt;/td>
&lt;td>Primary action&lt;/td>
&lt;td style="text-align: right">68.5&lt;/td>
&lt;td style="text-align: right">69.8&lt;/td>
&lt;td style="text-align: right">&lt;strong>71.6&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Cloudflare 说 Clef 在四个领域里赢了三个，这是事实。但把数字摊开：&lt;/p>
&lt;ul>
&lt;li>Customer service：76.3 / 77.0 / 76.0，&lt;strong>三个模型在 1 个百分点内&lt;/strong>&lt;/li>
&lt;li>Security incidents：62.9 / 61.7 / 61.7，同样挤在一起&lt;/li>
&lt;li>只有 Invoice processing 的 &amp;ldquo;Primary action&amp;rdquo; 稍微分开了：86.2 / 73.3 / 83.1&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>翻译过来：在真实的端到端业务流上，这三个模型目前基本打平。&lt;/strong> 真正的差距在延迟、价格、能不能拿到权重、支不支持图片——&lt;strong>也就是这四点，而不是表格最后一位小数。&lt;/strong>&lt;/p>
&lt;p>另外请注意 Invoice processing 的绝对分数：Exact actions 只有 57–65，三家都远谈不上&amp;quot;可以无人值守&amp;quot;。这个分数本身就是对这个类别当前能力最诚实的一个刻度。&lt;/p>
&lt;h3 id="65-读这张表之前必须先知道的四件事">6.5 读这张表之前必须先知道的四件事
&lt;/h3>&lt;p>&lt;strong>① 全部是自报分数。&lt;/strong> 模型卡明确标注 Clef 和 Clef-flash 的数据是 self-reported。截至发稿，我没有找到任何第三方对这套 Decision Index 完整复跑过。&lt;/p>
&lt;p>&lt;strong>② Jev 的数字来源不明。&lt;/strong> Cloudflare 没有说明 524.1ms 和 89.27 这些 Jev 分数是自己在什么条件下测的，还是引用 TypeSafe 的公开数据。TypeSafe 本来就不发布标准基准成绩（见上一篇），所以这些行的可比性天然打折。&lt;/p>
&lt;p>&lt;strong>③ 公开数据集的污染问题无法排除。&lt;/strong> BANKING77 和 CLINC150 是极其常见的公开意图数据集，任何 Qwen 主干的预训练语料里都可能有它们。这场发布最大的几个宣称优势，恰好落在最可能被污染的集上。厂商一句话不足以证清白，第三方也暂时没法证伪——&lt;strong>这是个双方都暂时无解的悬案，你只能为自己的业务单独测。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>④ 计数本身都对不齐。&lt;/strong> 博客说&amp;quot;43 个 eval benchmark&amp;quot;，模型卡标题是 Decision Index 0.2.1，而 0.2.1 的表总共是 41 个基准加 2 行延迟。这个不一致已经被不止一家第三方转述指出了。它不影响数据，但它提醒你：&lt;strong>这套评测体系是 Cloudflare 自己定义、自己维护、自己跑的。&lt;/strong>&lt;/p>
&lt;p>榜单地址是公开的：&lt;code>clef-evals.workers-ai-mle.workers.dev&lt;/code>。有兴趣可以去看看，但请带着上面四条去看。&lt;/p>
&lt;hr>
&lt;h2 id="七唯一一份独立实测42-个决策一张-3090">七、唯一一份独立实测：42 个决策，一张 3090
&lt;/h2>&lt;p>官方表格之外，目前只有一份公开的深度实测，来自 Agdal Tech 的作者，发布在 Clef 发布的同一天。样本很小，但它是唯一提供了&lt;strong>官方完全没有的三个维度&lt;/strong>：本地能不能跑、和托管 Jev 的一致性、以及每类任务的分别表现。&lt;/p>
&lt;h3 id="71-设置">7.1 设置
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>本地&lt;/strong>：Clef-Flash 9B，BF16，PyTorch，单张 &lt;strong>RTX 3090（24GB）&lt;/strong>&lt;/li>
&lt;li>&lt;strong>对照&lt;/strong>：Jev-1.13.0 托管 API&lt;/li>
&lt;li>&lt;strong>用例&lt;/strong>：42 个来自一个&lt;strong>跑通宵的真实自主编程 Agent&lt;/strong> 的已标注决策，不是合成的&lt;/li>
&lt;li>&lt;strong>三轮&lt;/strong>：同样 prompt、同样类型化问题、同样 criteria&lt;/li>
&lt;/ul>
&lt;p>用例分三个族：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>任务族&lt;/th>
&lt;th>数量&lt;/th>
&lt;th>内容&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Computer-use 动作选择&lt;/td>
&lt;td>10&lt;/td>
&lt;td>目标 + 屏幕内容 + 一张预校验过的动作表（含 &lt;code>reobserve&lt;/code> 和 &lt;code>abstain&lt;/code>），其中&lt;strong>两个是刻意埋的安全陷阱&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Subagent 监督&lt;/td>
&lt;td>12&lt;/td>
&lt;td>目标 + 最近的日志尾 + 已耗时 → 五分类（进行中 / 在等答复 / 卡循环 / 受阻 / 已结束）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>消息分流&lt;/td>
&lt;td>20&lt;/td>
&lt;td>收件箱式消息 → now / today / queue / ignore&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="72-结果">7.2 结果
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th style="text-align: right">Jev（托管）&lt;/th>
&lt;th style="text-align: right">Clef-Flash（本地 3090）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>总体准确率&lt;/strong>&lt;/td>
&lt;td style="text-align: right">71.4%&lt;/td>
&lt;td style="text-align: right">66.7%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Computer-use 动作选择&lt;/td>
&lt;td style="text-align: right">&lt;strong>10 / 10&lt;/strong>&lt;/td>
&lt;td style="text-align: right">&lt;strong>10 / 10&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Subagent 监督&lt;/td>
&lt;td style="text-align: right">8 / 12&lt;/td>
&lt;td style="text-align: right">8 / 12&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>消息分流&lt;/td>
&lt;td style="text-align: right">&lt;strong>12 / 20&lt;/strong>&lt;/td>
&lt;td style="text-align: right">10 / 20&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>两者一致率&lt;/strong>&lt;/td>
&lt;td style="text-align: right">—&lt;/td>
&lt;td style="text-align: right">&lt;strong>35 / 42 = 83%&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>延迟 p50&lt;/td>
&lt;td style="text-align: right">&lt;strong>225 ms&lt;/strong>（含网络）&lt;/td>
&lt;td style="text-align: right">315 ms（纯本地，无批处理）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>作者自己说得很好：&lt;strong>&amp;ldquo;这个总体数字是会误导人的，真正的故事在按任务拆开之后。&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Computer-use：完全打平，包括两个安全陷阱。&lt;/strong> 一个是&amp;quot;缺少必要信息的不可逆转账&amp;quot;，正确答案是 &lt;code>abstain&lt;/code>（什么都不做）；另一个是&amp;quot;可能存在重复点击的加载动画&amp;quot;，正确答案是 &lt;code>reobserve&lt;/code>。付费 API 和本地免费模型在&lt;strong>后果最重的这类任务上不可区分&lt;/strong>。&lt;/p>
&lt;p>&lt;strong>Supervision：连错的两个都一样。&lt;/strong> 一个例子是&amp;quot;任务因为赏金超范围而停了&amp;quot;，两者都判成&amp;quot;在等答复&amp;quot;而不是&amp;quot;受阻&amp;quot;。作者自己也承认他的 gold label 有争议。&lt;/p>
&lt;p>&lt;strong>Triage：Jev 12/20，Clef-flash 10/20。&lt;/strong> 差距基本全在 &lt;code>today&lt;/code> 和 &lt;code>queue&lt;/code> 的边界判断上。9B 模型在这种&amp;quot;品味型&amp;quot;判断上输给大得多的托管模型，和 CLINC150+OOS 的倾向是一致的。&lt;/p>
&lt;h3 id="73-三个反直觉的发现">7.3 三个反直觉的发现
&lt;/h3>&lt;p>&lt;strong>① 本地比托管快这件事，3090 上不成立。&lt;/strong> Cloudflare 报 Clef-flash 中位 38.8ms；这份实测本地 p50 是 315ms，比托管 Jev 的 225ms 还慢。原因是硬件：官方数字是&lt;strong>单卡 H200 + BF16 + 边缘机房 + 服务端有批处理&lt;/strong>；这边是&lt;strong>单卡消费级 3090、无批处理&lt;/strong>。两个数字都对，但都不代表你的环境。&lt;/p>
&lt;p>&lt;strong>真正有用的结论是第二句：两个数字都远在 Agent 循环能容忍的范围内。&lt;/strong> 作者的原话是，延迟差距小到决定因素变成了&amp;quot;数据在哪&amp;quot;和&amp;quot;多少钱&amp;quot;。&lt;/p>
&lt;p>&lt;strong>② 83% 的一致率比任何单项分数都有信息量。&lt;/strong> 它们的分歧集中在 7 个用例上，而且&lt;strong>在其中一个任务上，两者是出于同样的原因一起错的。&lt;/strong>&lt;/p>
&lt;p>这意味着一件事：&lt;strong>它们在犯错这件事上高度相关。&lt;/strong> 如果你打算做 &amp;ldquo;Clef-flash 判不了就降级给 Jev&amp;rdquo; 的兜底，这 83% 告诉你降级通路会被频繁触发，而且触发的那部分里有一半的模型间会犯同样的错。&lt;strong>决策模型的冗余不等于容错。&lt;/strong>&lt;/p>
&lt;p>&lt;strong>③ GGUF 量化版本用不了。&lt;/strong> 这是目前自托管最大的坑：Hugging Face 上的社区 GGUF 量化版&lt;strong>只包含语言主干，没有 joint decision head&lt;/strong>。要走 llama.cpp 今天是不行的，必须用 PyTorch + 仓库里的 &lt;code>joint_schema_model.py&lt;/code>。&lt;/p>
&lt;p>顺带一个显存对照：Clef 27B BF16 大约需要 &lt;strong>54GB 显存&lt;/strong>。3090 只有 24GB。&lt;strong>这意味着在单张消费级 GPU 上，你实际的选择是 flash，没有第二个选项。&lt;/strong>&lt;/p>
&lt;h3 id="74-这份实测怎么读">7.4 这份实测怎么读
&lt;/h3>&lt;p>作者自己列的 caveat 我认为非常诚实，值得原样接受：&lt;/p>
&lt;ul>
&lt;li>42 个用例、一个人的 Agent、不是论文&lt;/li>
&lt;li>triage 的边界判断本身就&amp;quot;因人而异&amp;quot;，所以两个模型的得分都被自己的 gold label 压低了&lt;/li>
&lt;li>computer-use 用例重度依赖&amp;quot;预校验过的动作表&amp;quot;，这恰好是决策模型的舒适区，&lt;strong>所以 10/10 说明的既是模型能力，也是这个模式好不好&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>最后这一点我要单独强调，因为它可能是整篇文章里最实用的一条经验：&lt;strong>10/10 的成绩，一大半功劳来自&amp;quot;把候选动作预先校验成一张表&amp;quot;这个模式，而不是模型本身。&lt;/strong> 第八节会展开。&lt;/p>
&lt;hr>
&lt;h2 id="八算一笔账价格单位不是每次调用是每个问题">八、算一笔账：价格单位不是「每次调用」，是「每个问题」
&lt;/h2>&lt;p>这是我认为整个发布里最被低估的部分。决策模型的成本结构和 LLM 完全不同，理解了它，你才敢把 Clef 放进热路径。&lt;/p>
&lt;h3 id="81-官方价格">8.1 官方价格
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模型&lt;/th>
&lt;th>Workers AI 价格&lt;/th>
&lt;th>Neurons / 百万 input token&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Clef（27B）&lt;/td>
&lt;td>&lt;strong>$0.24 / 百万 input token&lt;/strong>&lt;/td>
&lt;td>21,818&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Clef-flash（9B）&lt;/td>
&lt;td>&lt;strong>$0.09 / 百万 input token&lt;/strong>&lt;/td>
&lt;td>8,182&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Workers AI 的计费单位是 neuron：每天 10,000 neurons 免费，超出部分 Workers Paid 计划是 &lt;strong>$0.011 / 1,000 neurons&lt;/strong>。验算一下：21,818 × 0.011 / 1000 = $0.24，完全对得上。&lt;/p>
&lt;p>&lt;strong>没有输出价格——因为 &lt;code>output_tokens&lt;/code> 恒为 0。&lt;/strong>&lt;/p>
&lt;h3 id="82-免费额度有多少">8.2 免费额度有多少
&lt;/h3>&lt;p>每天 10,000 neurons，换算回来：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Clef-flash&lt;/strong>：10,000 ÷ 8,182 × 1,000,000 ≈ &lt;strong>122 万 input token / 天&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Clef 27B&lt;/strong>：10,000 ÷ 21,818 × 1,000,000 ≈ &lt;strong>45.8 万 input token / 天&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>按每次请求 2,800 token（2,000 的 state + 800 的 schema）算，flash &lt;strong>每天大约 436 次免费调用&lt;/strong>。对个人项目和原型验证足够了。&lt;/p>
&lt;h3 id="83-关键一次请求可以带-64-个问题">8.3 关键：一次请求可以带 64 个问题
&lt;/h3>&lt;p>这是最能改变经济学的那个数字。因为 state 只 prefill 一次，多个问题共享同一份 prefill：&lt;/p>
&lt;p>假设 state 恒为 2,000 token，问 64 个问题（schema 部分约 800 token）：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>方式&lt;/th>
&lt;th style="text-align: right">总 input token&lt;/th>
&lt;th style="text-align: right">单次成本&lt;/th>
&lt;th style="text-align: right">&lt;strong>每问题成本&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>64 个问题一次请求&lt;/td>
&lt;td style="text-align: right">2,800&lt;/td>
&lt;td style="text-align: right">$0.000252&lt;/td>
&lt;td style="text-align: right">&lt;strong>$0.0000039&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64 次单独请求&lt;/td>
&lt;td style="text-align: right">64 × 2,050 = 131,200&lt;/td>
&lt;td style="text-align: right">$0.0118&lt;/td>
&lt;td style="text-align: right">$0.000185&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;/td>
&lt;td style="text-align: right">&lt;/td>
&lt;td style="text-align: right">&lt;/td>
&lt;td style="text-align: right">&lt;strong>差 47 倍&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>同一份 state 上问 64 个问题，比开 64 次调用便宜约 47 倍。&lt;/strong>&lt;/p>
&lt;p>这不是小优化，它改变了设计模式：原本&amp;quot;为了省钱，每个决策点都要先想想值不值得调模型&amp;quot;；现在更像&amp;quot;既然这份 state 已经 prefill 了，就把所有能问的都一次问完&amp;quot;。&lt;/p>
&lt;p>二级推论：&lt;strong>这也是为什么 64K 上下文和 64 个问题的组合是有意义的。&lt;/strong> 一份很长的上下文（比如整个 agent trace、整份合同）prefill 一次，然后把关心的问题一次全问掉。&lt;/p>
&lt;h3 id="84-但延迟的组成要反过来理解">8.4 但延迟的组成要反过来理解
&lt;/h3>&lt;p>因为不 decode，所以 &lt;strong>Clef 的延迟几乎全部由 prefill 决定&lt;/strong>，也就是几乎线性取决于 input token 数。&lt;/p>
&lt;p>所以那句&amp;quot;Clef-flash 中位 38.8ms&amp;quot;必须加上限定条件：&lt;strong>它是在某个典型长度的 state 上测的。&lt;/strong> 你塞一份 60K token 的长文档进去，不可能还是 38.8ms。&lt;/p>
&lt;p>这带来一条直接的工程建议：&lt;strong>不要把长上下文当成免费午餐，它是延迟倍增器。&lt;/strong> 想用长上下文，请务必同时用多问题摊薄——否则你付的是 60K token 的钱和延迟，只换回来一个 &lt;code>noul&lt;/code>。&lt;/p>
&lt;h3 id="85-和-jev-比和-llm-比">8.5 和 Jev 比、和 LLM 比
&lt;/h3>&lt;p>按月算一笔：每天 10 万次决策、每次 2,800 input token = 每天 280 百万 token。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th style="text-align: right">单价&lt;/th>
&lt;th style="text-align: right">每天&lt;/th>
&lt;th style="text-align: right">每月（30 天）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Clef-flash&lt;/td>
&lt;td style="text-align: right">$0.09 / M&lt;/td>
&lt;td style="text-align: right">$25.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>约 $756&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Clef 27B&lt;/td>
&lt;td style="text-align: right">$0.24 / M&lt;/td>
&lt;td style="text-align: right">$67.2&lt;/td>
&lt;td style="text-align: right">&lt;strong>约 $2,016&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Jev&lt;/td>
&lt;td style="text-align: right">$0.042 / M&lt;/td>
&lt;td style="text-align: right">$11.76&lt;/td>
&lt;td style="text-align: right">&lt;strong>约 $353&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这里有两个必须点破的事实：&lt;/p>
&lt;p>&lt;strong>① 开源不等于便宜。&lt;/strong> Clef-flash 是 Jev 输入单价的 &lt;strong>2.14 倍&lt;/strong>，27B 的 Clef 是 &lt;strong>5.7 倍&lt;/strong>。即使算上 Jev 的总结output（它 output 免费），也改变不了这个结论。&lt;/p>
&lt;p>Cloudflare 的商业逻辑很清楚：&lt;strong>卖的不是每 token 价格，是&amp;quot;权重给你 + 视觉 + 64K + 边缘延迟 + 不用跟 TypeSafe 谈合同&amp;quot;这个组合。&lt;/strong> 如果你本来就打算自托管，$0.09 这一栏和你无关。&lt;/p>
&lt;p>&lt;strong>② 但和 LLM 比，便宜是数量级的。&lt;/strong> 同样的路由判断用 LLM 做，除了 input 你还要为它写出来的那几十个 token 付 5 倍单价的输出费。这里要注意：BBH / GPQA 那些&amp;quot;知识型&amp;quot;任务上 Jev 明显更强，说明它和优化目标的差距不在&amp;quot;聪不聪明&amp;quot;，而在架构选择。&lt;strong>反过来也一样：Clef 系在这些任务上的弱势，正是它没打算去做。&lt;/strong>&lt;/p>
&lt;h3 id="86-rl-微调平台现在还不是自助的">8.6 RL 微调平台：现在还不是自助的
&lt;/h3>&lt;p>Cloudflare 同时发布了针对 Clef 的强化学习微调服务，链路是这样的：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">AI Gateway → 透传生产流量，自动攒成请求数据集
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Workers AI → 基于基础 Clef 生成 rollouts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Containers → 作为打分/重放 agent 动作的 RL 沙盒
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Trainer（新） → 更新微调后的 Clef 权重
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Workers AI BYO → 把微调模型重新部署上去
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这套东西在概念上很完整，但&lt;strong>现在必须走和 Cloudflare 前置部署工程师（FDE）的合作&lt;/strong>，自助平台是&amp;quot;以后&amp;quot;。也没有公布任何价格。&lt;/p>
&lt;p>不过它透露了一个信号值得留意：&lt;strong>AI Gateway 在这个闭环里不是网关，是数据采集器。&lt;/strong> 如果你今天已经在用 Gateway，未来你能接这套微调的概率最高。&lt;/p>
&lt;hr>
&lt;h2 id="九八个模型挤在八天里clef-站在哪">九、八个模型挤在八天里：Clef 站在哪
&lt;/h2>&lt;p>把这一轮所有的决策模型摊开：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模型&lt;/th>
&lt;th>厂商&lt;/th>
&lt;th>发布&lt;/th>
&lt;th>基座 / 参数&lt;/th>
&lt;th>许可&lt;/th>
&lt;th>部署&lt;/th>
&lt;th>上下文&lt;/th>
&lt;th>视觉&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Jev&lt;/strong>&lt;/td>
&lt;td>TypeSafe AI&lt;/td>
&lt;td>09-15&lt;/td>
&lt;td>未披露&lt;/td>
&lt;td>闭源&lt;/td>
&lt;td>托管 API&lt;/td>
&lt;td>32K&lt;/td>
&lt;td>✗&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Clef&lt;/strong>&lt;/td>
&lt;td>Cloudflare&lt;/td>
&lt;td>10-01&lt;/td>
&lt;td>Qwen3.8-27B / 27B&lt;/td>
&lt;td>Apache 2.0&lt;/td>
&lt;td>Workers AI + 自托管&lt;/td>
&lt;td>65,536&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Clef-flash&lt;/strong>&lt;/td>
&lt;td>Cloudflare&lt;/td>
&lt;td>10-01&lt;/td>
&lt;td>Qwen3.5-9B / 9B&lt;/td>
&lt;td>Apache 2.0&lt;/td>
&lt;td>Workers AI + 自托管&lt;/td>
&lt;td>65,536&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>nimble&lt;/strong>&lt;/td>
&lt;td>Bespoke Labs&lt;/td>
&lt;td>09-28&lt;/td>
&lt;td>Qwen3.5-9B / 9B&lt;/td>
&lt;td>Apache 2.0&lt;/td>
&lt;td>Ollama&lt;/td>
&lt;td>8,192&lt;/td>
&lt;td>✗&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>tev1&lt;/strong>&lt;/td>
&lt;td>Together AI&lt;/td>
&lt;td>09-28&lt;/td>
&lt;td>Qwen3.5-4B / 4B（实验性）&lt;/td>
&lt;td>模型卡未声明&lt;/td>
&lt;td>Ollama&lt;/td>
&lt;td>~2,000&lt;/td>
&lt;td>✗&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Strands Decider 2B&lt;/strong>&lt;/td>
&lt;td>Amazon&lt;/td>
&lt;td>10-01&lt;/td>
&lt;td>2B&lt;/td>
&lt;td>Apache 2.0&lt;/td>
&lt;td>仅自托管&lt;/td>
&lt;td>—&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Kev 9B&lt;/strong>&lt;/td>
&lt;td>Jared Palmer&lt;/td>
&lt;td>—&lt;/td>
&lt;td>9B + 45.4M LoRA&lt;/td>
&lt;td>—&lt;/td>
&lt;td>自托管&lt;/td>
&lt;td>—&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Laya&lt;/strong>&lt;/td>
&lt;td>Convai Innovations&lt;/td>
&lt;td>—&lt;/td>
&lt;td>421M&lt;/td>
&lt;td>—&lt;/td>
&lt;td>自托管&lt;/td>
&lt;td>—&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>三条清晰的路线：&lt;/p>
&lt;p>&lt;strong>① 闭源托管（Jev）。&lt;/strong> 优势是&amp;quot;底座明显被做得比这个定位大&amp;quot;——它的 GPQA 78.3、BBH 92.9 说明 Jev 的底子可能比&amp;quot;决策模型&amp;quot;这个定位要大得多。代价是只有 API、无权重、文本-only、32K。&lt;/p>
&lt;p>&lt;strong>② 开源自托管（Clef 双雄、nimble、tev1、Strands Decider）。&lt;/strong> 优势是数据不出门、可改可量化、可离线。代价是你要自己搞 GPU。&lt;/p>
&lt;p>&lt;strong>③ 极致小（Laya 421M、Strands Decider 2B）。&lt;/strong> 边缘/IoT / 每秒上千次的场景。&lt;/p>
&lt;p>Strands Decider 有个细节我觉得特别值得表扬：它在报告 JevBench v1（231 个任务）成绩时，同时公布了&lt;strong>难度分布&lt;/strong>（简单 ~100%、标准 87.5%、困难 50.5%）和&lt;strong>重训标准差（±3.2 个任务）&lt;/strong>，并说明&amp;quot;两次运行之间小于约 10 个任务的差异应当视为噪声&amp;quot;。&lt;/p>
&lt;p>&lt;strong>这个坦白比排名本身有用得多。&lt;/strong> 它让你知道这个榜单能分辨的最小差异是多少。相比之下，Cloudflare 那张表里 97.4 和 97.7 的差别是没有意义的——没人告诉我们噪声有多宽。&lt;/p>
&lt;h3 id="91-system-one-正在成为事实标准但已经开始被扩展">9.1 System One 正在成为事实标准，但已经开始被扩展
&lt;/h3>&lt;p>目前所有玩家都兼容 TypeSafe 的 System One API 语义：&lt;code>state&lt;/code> + &lt;code>questions&lt;/code>，三种类型、&lt;code>/v1/systemone&lt;/code> 端点。&lt;/p>
&lt;p>但要注意一个细节：Workers AI 的文档在 &lt;code>images&lt;/code> 字段上明确标注了 &lt;strong>&amp;ldquo;Clef extension to the System One API&amp;rdquo;&lt;/strong>（Clef 对 System One API 的扩展）。&lt;/p>
&lt;p>&lt;strong>这意味着&amp;quot;兼容&amp;quot;已经不是双向的。&lt;/strong> 你写了一个带 &lt;code>images&lt;/code> 的请求，能跑 Clef，但不能换去 Jev 或 nimble。这很像当年 everyone JDBC/SQL 的分岔：标准先因为大家都图方便而统一，然后因为有厂商需要差异化扩展而重新分裂。&lt;/p>
&lt;p>对工程决策的直接含义：&lt;strong>多模型兜底请只做在 &lt;code>state&lt;/code> + &lt;code>questions&lt;/code> + 三种类型这个最小子集上。&lt;/strong> 一旦你用了图片，你就是绑定 Cloudflare 了。&lt;/p>
&lt;h3 id="92-ollama把能力边界写进元数据里">9.2 Ollama：把「能力边界」写进元数据里
&lt;/h3>&lt;p>Ollama v0.35.1（10 月 3 日）接入 Clef / ClefFlash 的同时，做了一件我觉得比接入本身更重要的事。&lt;/p>
&lt;p>&lt;strong>① 共享多模态状态。&lt;/strong> 文本 state 和图片一起放顶层，被这条请求里所有问题共享并一起打分。这在概念上和 Workers AI 一致，但它确立了本地侧的参考实现形态。&lt;/p>
&lt;p>&lt;strong>② Modelfile 新增 &lt;code>CAPABILITY&lt;/code> 声明&lt;/strong>，并且这个声明在&lt;strong>从 GGUF 创建、从 safetensors 创建、模型继承、Modelfile 导出&lt;/strong> 四个流程里都能保留。&lt;/p>
&lt;p>&lt;strong>③ 决策模型在 &lt;code>ollama show&lt;/code> 和模型列表里只报告 &lt;code>decision&lt;/code> 这一项能力。&lt;/strong>&lt;/p>
&lt;p>第三条最值得说。它的目的是&lt;strong>防止客户端把决策模型当作通用聊天、工具调用或推理模型来提供&lt;/strong>。&lt;/p>
&lt;p>这是一个很漂亮的工程解法：过去这类信息写在 README 或者文档里，属于&amp;quot;人类可读但机器不知道&amp;quot;；现在它是模型元数据的一部分，是&lt;strong>机器可执行的边界声明&lt;/strong>。一个自动路由上层系统看到 &lt;code>capabilities: [&amp;quot;decision&amp;quot;]&lt;/code>，就不会试图拿它去生成一段话。&lt;/p>
&lt;p>考虑到决策模型恰恰需要一个&amp;quot;不去干什么&amp;quot;的明确边界（它不会说话，但它的错误不会以&amp;quot;我没这个功能&amp;quot;的形式出现），把这个约束上升到协议层，是这一轮生态里我最欣赏的一步。&lt;/p>
&lt;hr>
&lt;h2 id="十六个能立刻上手的模式">十、六个能立刻上手的模式
&lt;/h2>&lt;p>按&amp;quot;回报/改动量&amp;quot;排序。&lt;/p>
&lt;h3 id="模式-1工具选择与路由">模式 1：工具选择与路由
&lt;/h3>&lt;p>Clef-flash 的强项区（BFCL 98.8、API-Bank 93.1、Home appliance 97.7）。直接替换你现在的 &amp;ldquo;LLM + JSON schema&amp;rdquo; 路由。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;clef-flash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;tool_count&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">37&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;recent_calls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;search&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;read_file&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="nt">&amp;#34;request&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;把刚才那个函数的测试用例删掉&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;tool&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Which tool should be called next?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;edit_file&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Modify existing file content&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;delete_file&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Remove a file entirely&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;run_tests&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Execute the test suite&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;search&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Find content across the repo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;destructive&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Is the requested change irreversible?&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>注意我把 &lt;code>destructive&lt;/code> 和 &lt;code>tool&lt;/code> 放在&lt;strong>同一个请求&lt;/strong>里——它们是相关的，joint head 会联合打分，而且共用一份 prefill。&lt;/p>
&lt;h3 id="模式-2阈值门禁--分级升级">模式 2：阈值门禁 + 分级升级
&lt;/h3>&lt;p>决策模型最大的价值不是&amp;quot;它判得准&amp;quot;，是&amp;quot;&lt;strong>它告诉你它没底&lt;/strong>&amp;quot;。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">confidence ≥ 0.85 → 自动执行
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0.60 ≤ confidence &amp;lt; 0.85 → 自动执行 + 记审计日志
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0.40 ≤ confidence &amp;lt; 0.60 → 降级给大模型做一次
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">confidence &amp;lt; 0.40 → 转人工
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>三个提醒：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>阈值必须自己在自己的数据上标定。&lt;/strong> Brier 校准是对整体分布做的，不是对你这个业务的代价函数做的。&lt;/li>
&lt;li>&lt;strong>记住 &lt;code>confidence&lt;/code> 描述的是分布尖锐度，不是正确率。&lt;/strong> 两个不同问题之间 &lt;code>confidence&lt;/code> 不可比。&lt;/li>
&lt;li>用 &lt;code>score&lt;/code> 类型时可以拿概率加权后的小数做更细的分级（还记得它是 2.4 而不是 &amp;ldquo;Major&amp;rdquo; 吗）。&lt;/li>
&lt;/ul>
&lt;h3 id="模式-3verify-everything只建议用-27b">模式 3：Verify everything（只建议用 27B）
&lt;/h3>&lt;p>用决策模型去给另一段输出打分：这是不是幻觉、这段 SQL 有没有越权、这个邮件该不该发。&lt;/p>
&lt;p>&lt;strong>但请一定看清楚这组数字再选型号：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模型&lt;/th>
&lt;th style="text-align: right">RAGTruth（幻觉检测 F1）&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Clef 27B&lt;/td>
&lt;td style="text-align: right">&lt;strong>79.4&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Jev&lt;/td>
&lt;td style="text-align: right">76.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Clef-flash 9B&lt;/td>
&lt;td style="text-align: right">&lt;strong>35.6&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>这个任务上 9B 完全不能用。&lt;/strong> 35.6 和 79.4 不是&amp;quot;差一点&amp;quot;，是&amp;quot;能不能用&amp;quot;的分界。这是整个发布里我觉得最容易被踩的坑：大伙默认&amp;quot;flash 够用了&amp;quot;，而&amp;quot;9B 校准得也不错&amp;quot;这个印象，在能力不足的任务上是完全不成立的。&lt;/p>
&lt;h3 id="模式-4截图--文档分类jev-做不到">模式 4：截图 / 文档分类（Jev 做不到）
&lt;/h3>&lt;p>这是 Clef 唯一的独占能力。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">record&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;ticket_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;T-2291&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;product&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;checkout&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;images&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Image&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;user_screenshot.png&amp;#34;&lt;/span>&lt;span class="p">)],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;is_error_dialog&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;noul&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Does the screenshot show an error dialog?&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;ui_area&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Which part of the product is shown?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;checkout&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Payment and order confirmation screens&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;account&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Profile, settings, and login screens&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;catalog&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Product listing and detail pages&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;severity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;Cosmetic&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Annoying&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Blocking&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;Data loss&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>一次 prefill、一张图、三个问题。&lt;strong>用 LLM 做同样的事，你要么调三次（传三遍图），要么一次性拿到三个答案然后祈祷格式不漂。&lt;/strong>&lt;/p>
&lt;p>限制记得看 5.2：最多 4 张、每张 ≤4 MiB 且 ≤1600 万像素、不接受远程 URL。手机用户的原图截图经常超 1600 万像素，先压。&lt;/p>
&lt;h3 id="模式-5agent-自监督supervisor">模式 5：Agent 自监督（supervisor）
&lt;/h3>&lt;p>实测里打得最好的两个任务族之一。给长跑的 subagent 定期做健康分类：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;clef-flash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;state&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;goal&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Fix failing test suite in repo X&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;elapsed_minutes&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">23&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;log_tail&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;...rerun tests&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;...12 failed, 12 passed&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;...rerun tests&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;...12 failed, 12 passed&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;questions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;choice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;instructions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;What state is the run in?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;criteria&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;progressing&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Making measurable progress toward the goal&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;waiting&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Blocked on input or an external response&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;looping&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Repeating the same action with no change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;blocked&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Stuck on an obstacle it cannot clear itself&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;finished&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Goal achieved&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>本地 315ms、9B、一天几百次这样的调用——这类调用的成本和延迟，终于低到&lt;strong>可以每 30 秒问一次&lt;/strong>而不是每 5 分钟问一次。这个量变会带来质变：你从&amp;quot;事后发现卡住了&amp;quot;变成&amp;quot;刚卡住 30 秒就知道&amp;quot;。&lt;/p>
&lt;h3 id="模式-6预校验动作表这是那-1010-的真正原因">模式 6：预校验动作表（这是那 10/10 的真正原因）
&lt;/h3>&lt;p>最后这个模式没有多少讨论，但我认为它是整个决策模型工程里最重要的一条，而且它和具体模型无关。&lt;/p>
&lt;p>&lt;strong>不要让你的 Agent 自由地&amp;quot;创作&amp;quot;一个动作，让它从一张你已经校验过的动作表里选一行。&lt;/strong>&lt;/p>
&lt;p>关键设计点（来自实测里两个刻意埋的安全陷阱）：&lt;/p>
&lt;ul>
&lt;li>表里必须显式包含 &lt;strong>&lt;code>abstain&lt;/code>&lt;/strong>（什么都不做）和 &lt;strong>&lt;code>reobserve&lt;/code>&lt;/strong>（重新观察一次）这两个选项&lt;/li>
&lt;li>每题动作在进入表格之前已经做过语法/权限/参数校验&lt;/li>
&lt;li>模型的任务从&amp;quot;生成一个安全的动作&amp;quot;降级成&amp;quot;在这张表里挑一行最合适的&amp;quot;&lt;/li>
&lt;/ul>
&lt;p>为什么这是个质变？因为&lt;strong>安全边界从模型转移到表格&lt;/strong>了。你不再依赖模型&amp;quot;记得不要删库&amp;quot;，而是它压根调不到那条命令——&lt;code>delete_database&lt;/code> 就不在你的 criteria 里。&lt;/p>
&lt;p>实测里那个&amp;quot;缺少必要信息的不可逆转账&amp;quot;，正确答案是 &lt;code>abstain&lt;/code> —— 两个模型都选对了。但真正让这个系统安全的不是模型，是&lt;strong>那张表里恰好有 &lt;code>abstain&lt;/code> 这一行&lt;/strong>。&lt;/p>
&lt;p>这也是为什么作者说他那个 10/10 &amp;ldquo;说明的既是模型能力，也是这个模式好不好&amp;rdquo;。我基本同意，而且想把话说得更直一点：&lt;strong>如果你的 Agent 动作不是预校验表，换任何决策模型都救不了你。&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="十一什么时候不要用它">十一、什么时候不要用它
&lt;/h2>&lt;p>把边界列清楚，比吹它能干什么有用。&lt;/p>
&lt;p>&lt;strong>① 任务需要&amp;quot;知道东西&amp;quot;。&lt;/strong> GPQA Diamond 48.0（Jev 78.3）、MMLU-Pro 65.9（Jev 82.7）、BBH 73.7（Jev 92.9）。这三个缺口不是调参能补的，是架构取向的结果：&lt;strong>决策模型优化的是&amp;quot;从给出的选项里选&amp;quot;，不是&amp;quot;推导出一个你知道的答案&amp;quot;。&lt;/strong> 需要世界知识和多步推理的判断，仍然应该交给会推理的模型。&lt;/p>
&lt;p>&lt;strong>② 需要任何形式的生成。&lt;/strong> 它不会写字，也不该被要求写字。这也是 Ollama 只报 &lt;code>decision&lt;/code> 能力的原因。&lt;/p>
&lt;p>&lt;strong>③ 拒答/OOS 检测 —— 不要用 flash。&lt;/strong> CLINC150+OOS 上 66.8 vs 27B 的 97.4。见 6.2，这条路必须显式设计，不能指望模型自己知道边界。&lt;/p>
&lt;p>&lt;strong>④ 别把 &lt;code>confidence&lt;/code> 当准确率。&lt;/strong> 再说一次：&lt;code>confidence&lt;/code> 是从概率分布推导出来的尖锐度。一次 &amp;ldquo;additional prior&amp;rdquo; 不相关的「听起来对」的答案，分布也可以很尖锐。真正需要的是&amp;quot;这条请求是否在&amp;lt;｜hy_place▁holder▁no▁813｜&amp;gt;分布内&amp;quot;，这是另一回事，决策模型不会直接告诉你。&lt;/p>
&lt;p>&lt;strong>⑤ D 组那些任务（NLI、常识）直接不要用。&lt;/strong> POP909-CL 全场最高只有 18.1，说明这类任务在这个架构上是无解的。它会给你一个和为 1 的概率分布，但那是随机噪声。&lt;/p>
&lt;p>&lt;strong>⑥ 数据合规要提前确认。&lt;/strong> Cloudflare 声明不会读取、存储或用你的请求/响应训练模型（微调产品除外）。但截至 2026 年 10 月初，&lt;strong>Workers AI 没有被列入支持 region pinning 的产品清单&lt;/strong>。如果你需要一个&amp;quot;推理必须发生在欧盟境内&amp;quot;的合同级承诺，现在得去找 Cloudflare 单独确认，或者直接选第二条路：自托管。&lt;/p>
&lt;p>&lt;strong>⑦ 长期可用性。&lt;/strong> 这是新模型类别发布后的第八天，字段会不会变、模型什么时候下线、价格会不会调，都没有答案。因为各家目前都兼容 System One 的最小子集，把调用封装成一层薄适配器是划算的。&lt;/p>
&lt;hr>
&lt;h2 id="十二我的判断">十二、我的判断
&lt;/h2>&lt;p>写到这里，说三点总结。&lt;/p>
&lt;p>&lt;strong>第一，Clef 最大的贡献不是分数，是把「决策」这件事从托管服务变成了可下载的文件。&lt;/strong>&lt;/p>
&lt;p>Jev 提出了一个很好的问题：&amp;ldquo;为什么 Agent 的每个判断都要先让模型把答案写出来一遍？&amp;rdquo; Clef 回答的是一个不同的问题：&amp;ldquo;为什么这个东西只能是一家公司的 API？&amp;rdquo;&lt;/p>
&lt;p>Apache 2.0 权重上了 Hugging Face、本地显存够就能跑、&lt;code>ollama run&lt;/code> 能拉、&lt;strong>没有任何许可上的障碍&lt;/strong>（唯一的现实限制是 joint head 现在还得走 PyTorch，见 7.3）。这件事的意义在于，你现在可以做一个离线优先、数据不出门的 Agent 监督层——在 9 月之前这是做不到的。&lt;/p>
&lt;p>&lt;strong>第二，Cloudflare 真正的差别不在模型，在「边缘 + Gateway + 微调」这条线。&lt;/strong>&lt;/p>
&lt;p>38.8ms 这个数字别人在自己机房用一张 H200 也能跑出来。但&amp;quot;你的 Workers 本来就已经跑在上面了&amp;quot;这件事复制不了：&lt;/p>
&lt;ul>
&lt;li>你的 Worker 和 Clef 在同一个地方跑，少了那一跳网络&lt;/li>
&lt;li>AI Gateway 顺手给你攒了微调要用的数据集&lt;/li>
&lt;li>以后想微调自己的 Clef，入口就在你现在调的这个 API 后面&lt;/li>
&lt;/ul>
&lt;p>它的模型选择在纸面上不一定是全局最优，但在这三个约束的组合下（已经用 Cloudflare、要低延迟、将来可能要按自己的数据调），它是当下最省事的一条路。&lt;/p>
&lt;p>&lt;strong>第三，先把自己的 40 个样本跑出来，再去管那些表格。&lt;/strong>&lt;/p>
&lt;p>这篇给的所有数字——无论哪一家发布的——最后都会被你自己的一个具体任务打回去。这份 42 例独立实测最有价值的不是分数，而是作者那句总结：&lt;/p>
&lt;blockquote>
&lt;p>跑自己的评测而不是读榜单，你学到的不是&amp;quot;哪个模型最好&amp;quot;，而是&amp;quot;你在哪些调用上白花了很多钱&amp;quot;。&lt;/p>
&lt;/blockquote>
&lt;p>如果只用一条 actionable 的建议收尾，那就是：&lt;strong>把你 Agent 里最高频的那三个决策点抽出来，做 40 个带标签的样本，把 flash、27B 和你现在的 LLM 三个都跑一遍。&lt;/strong> 大概率你会得到和我一样的结果——有些调用早就该换，有些绝对不能换，而这张分界线，没有任何公开发布的表格会替你画出来。&lt;/p>
&lt;hr>
&lt;h2 id="参考来源">参考来源
&lt;/h2>&lt;p>&lt;strong>一手（官方）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Cloudflare Blog：《Introducing Clef: our open-source decision models, and new RL fine-tuning platform》，2026-10-01&lt;/li>
&lt;li>Hugging Face：&lt;a class="link" href="https://huggingface.co/Cloudflare/clef" target="_blank" rel="noopener"
>Cloudflare/clef&lt;/a>、&lt;a class="link" href="https://huggingface.co/Cloudflare/clef-flash" target="_blank" rel="noopener"
>Cloudflare/clef-flash&lt;/a> 模型卡&lt;/li>
&lt;li>Cloudflare Docs：&lt;a class="link" href="https://developers.cloudflare.com/workers-ai/models/clef/" target="_blank" rel="noopener"
>Workers AI · clef&lt;/a>（含 input/output JSON schema）&lt;/li>
&lt;li>Decision Index 榜单：&lt;code>clef-evals.workers-ai-mle.workers.dev&lt;/code>&lt;/li>
&lt;li>TypeSafe AI Blog：《Introducing System One Models &amp;amp; Jev》，2026-09-15&lt;/li>
&lt;li>Ollama 发布说明：v0.35.0（09-28）、v0.35.1（10-03）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>独立实测&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Agdal Tech：《I benchmarked Cloudflare&amp;rsquo;s new open decision model against the hosted API it&amp;rsquo;s trying to replace》，2026-10-01 —— 42 例、单卡 RTX 3090、对照 Jev-1.13.0&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>第三方汇总（数字已尽力溯源到官方，未能溯源的在正文中有标注）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>DataNorth AI、the-decoder、ai-tldr.dev、innFactory AI Consulting、ThreatFrontier 等&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>关联阅读&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>本站：《&lt;a class="link" href="https://www.zata.cc/p/jev%e4%b8%8d%e5%86%99%e5%ad%97%e7%9a%84%e5%86%b3%e7%ad%96%e6%a8%a1%e5%9e%8b%e5%92%8c%e5%ae%83%e7%9c%9f%e6%ad%a3%e9%80%82%e5%90%88%e8%a7%a3%e5%86%b3%e7%9a%84%e9%97%ae%e9%a2%98/" >Jev：不写字的决策模型，和它真正适合解决的问题&lt;/a>》（Clef 的前篇，讲 System One 这个类别的来源和四种设计模式）&lt;/li>
&lt;/ul></description></item></channel></rss>