---
title: "CLM-8B 自托管：vLLM、动作缓存与验证器"
canonical: https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/
language: zh
description: "通过 vLLM 自托管 CLM-8B，设计可复用动作候选，排查 token 截断和 API 故障，并正确理解微调编程验证器的成绩、缓存边界与上线条件。"
image: "https://wavect.io/img/blog/headers/header_clm-8b-self-hosting-action-cache-verifier.png"
---

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

12 分钟 阅读 · 2026年9月28日 最近审核 2026年9月28日

[**下一篇**](/zh/blog/llm-as-a-verifier/)

# CLM-8B 自托管：vLLM、动作缓存与验证器

要点速览

CLM-8B 使用冻结的 Qwen3-8B 编码器和小型状态、动作投影头，对给定候选打分。自托管仍需要完整编码器，不能只下载投影头。复用候选文本可能节省编码，但缓存向量不等于缓存权限或最终决策。本文介绍两个私有服务、2,048-token 截断边界、请求验证和验证器评估。公开编程成绩来自专门微调的投影头及留出任务子集，不是参考检查点的零样本结果。

**当智能体需要从已知动作中做选择，而不是再写一段答案时，CLM-8B 才值得考虑。** 它在部署上的关键特点是分别编码状态与动作：变化后的状态可以直接与已经编码的候选项比较。因此，在用另一个提示词替换生成步骤之前，先检查应用能否复用动作目录，往往更有价值。

已发布的 `CLM-v0.1-8B` 包含状态与动作两个投影头，依赖冻结的 Qwen3-8B 编码器。每个头约有 2,000 万个可训练参数，但推理时仍然需要运行完整的基础编码器。参考权重采用 Apache 2.0 许可证。 [CLM 模型卡说明了架构、许可与限制](https://huggingface.co/Contrastive-LM/CLM-v0.1-8B) 。这里的 CLM 指对比语言模型，不是合同生命周期管理软件，也不是通用聊天模型。

**工程问题不应是“CLM 是否击败了 Jev”，而应是“这个应用能否复用候选项、保持决策质量，并降低实测端到端延迟”。** 我们的 [Jev 技术评测](/zh/blog/jev-ai-decision-model-review/) 、 [Laya 与 Jev 基准分析](/zh/blog/laya-vs-jev-benchmark-ai-startup-moat/) 及 [业务工作流指南](/zh/blog/laya-jev-business-workflows-roi/) 分别覆盖那些主题。本文专注于 CLM 的运行方式、输入设计和验证器集成。

资料核查日期为 2026年9月28日。源码检查固定于 CLM 提交 `bb42c6c5bf914fd449bed2f6ca65be80602cb1f7`。下文是建议的集成模式，不是 Wavect 的 GPU 实测，也不代表我们已在生产环境部署 CLM。

## CLM-8B 究竟替代哪个步骤？

**当候选集合已经存在时，CLM 可以替代一个打分或选择步骤。** 规划器、检索系统、确定性规则或其他模型仍然需要提供候选项。CLM 无法选择集合中不存在的正确动作，不能生成任意工具参数，也不负责执行所选工具或授予执行权限。

项目提供兼容 TypeSafe 的类型化 API 和直接排序端点。项目描述的训练过程包括约 6,000 万条问答对、3,000 万条合成困难负样本和 100 万条智能体轨迹。状态与动作表示通过对比目标对齐，而不是把最终决策生成为一段文字。 [固定版本的项目 README 介绍了训练和服务设计](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/README.md) 。

不要把 CLM 与 Jev 的区别描述成“选择与写作”。Jev 本身也是类型化决策模型，而不是普通聊天机器人。 [TypeSafe 官方介绍明确了这一区别](https://docs.typesafe.ai/introduction) 。请求格式相同，不代表预测可以互换、概率已经校准，或运行特性完全一致。

一个适合起步的有限场景是只读诊断助手。应用提供经过批准的诊断动作，CLM 根据错误报告排序，再由可信代码验证选择结果，最后才允许独立执行器运行。这只是设计建议，并不能证明 CLM 对您的日志具有某种准确率。

## 速度和编程成绩实际证明了什么？

**应把发布数字视为作者报告的实验结果，而不是普遍适用的替换结论。** 项目称，在部分零样本任务中延迟最多降低约 9 倍，在约 1,000 个候选项时实现约 13 倍加速。两者对应不同负载与缓存条件，不是任何请求都能获得的两项保证。作者报告的数字见 [已核查的模型卡](#source-model) 。

T-Rex 复现实验很重要，因为它明确使用了标注安全动作的物理规划器、多个并行中的请求以及开启的安全保护机制。CLM 在本地 RTX 4090 上运行，对比的 Jev 服务返回版本为 `jev-1.13.0`，延迟按客户端单次请求计时。因此，存活结果衡量的是组合系统，而不是无辅助模型对截图的理解能力。 [T-Rex 方法说明披露了规划器、安全机制和运行环境](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/examples/t_rex/README.md) 。不能把游戏循环的成绩直接当成生产延迟目标。

在编程任务中，CLM 对其他模型生成的候选解决方案进行排序。README 报告，经任务专用投影头微调后，在 38 个留出 DeepSWE 任务上达到 81.6%，在 30 个留出 Terminal-Bench 2.1 任务上达到 87.6%。这既不是可下载参考头的零样本成绩，也不是完整基准套件的排行榜成绩。验证器计时使用 H100，与 T-Rex 的硬件不同。 [固定版本的结果部分](#source-readme) 给出了任务数量与硬件说明。

已发布的 DeepSWE 投影头模型卡提供了更明确的解释：从四个候选中选择，取最后十二个可用步骤分数的平均值，在 38 个留出任务中成功 31 个。其 pass@1 基线为 28/38，oracle 上限为 34/38。 [DeepSWE 投影头模型卡公开了划分、评分规则与检查点哈希](https://huggingface.co/Contrastive-LM/deepswe-clm-heads-8k) 。这意味着在该集合上，比所列基线多选对三个任务，而不是证明一个 8B 模型独立完成了整个编程基准。

自己的对照实验应保持候选生成、任务划分、硬件、并发和网络边界一致。除了延迟，还应公布准确率和拒绝自动决策的比例。快速但错误的选择会造成返工，把返工从计时中排除会制造虚假的提升。

## 如何通过 vLLM 自托管 CLM-8B？

**需要运行两个服务：Qwen3-8B 池化编码器，以及 CLM 打分 API。** 投影头下载很小，不意味着完整运行时也很小。CLM 包要求 Python 3.10 或更新版本，依赖包括 PyTorch、vLLM、FastAPI 与 NumPy。 [固定版本的包定义列出了实际依赖](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/pyproject.toml) 。

使用与所选 vLLM、PyTorch 版本匹配的隔离 Linux CUDA 环境。下面固定的是 CLM 源码提交，并没有锁定全部依赖或编码器权重版本。应按硬件解析兼容版本，再保存环境锁定文件和编码器修订号。本文不声称某个最低显存配置或硬件成本。

```
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install \
  "git+https://github.com/Contrastive-LM/CLM.git@bb42c6c5bf914fd449bed2f6ca65be80602cb1f7"
python -m pip freeze > clm-environment.txt
```

在一个已激活环境的终端启动编码器。必须使用参考 Qwen3-8B 及其预期池化方式，不能仅因输出维度相同就换成任意嵌入模型：

```
vllm serve Qwen/Qwen3-8B \
  --served-model-name qwen3-8b \
  --runner pooling \
  --max-model-len 2048 \
  --host 127.0.0.1 \
  --port 8090
```

在第二个已激活环境的终端，通过密钥管理流程提供 `CLM_API_KEY`。客户端终端需要相同密钥，绝不能将密钥提交到仓库。以下启动方式将 API 绑定到本机，并明确限制向量缓存预算：

```
: "${CLM_API_KEY:?Set CLM_API_KEY in this shell first}"
export CLM_API_KEY
clm-serve \
  --host 127.0.0.1 \
  --port 8700 \
  --emb-url http://127.0.0.1:8090/v1/embeddings \
  --emb-model qwen3-8b \
  --max-tokens 2048 \
  --device cpu \
  --action-cache 64MiB \
  --no-ui
```

该示例刻意把小型投影头及其向量缓存放在 CPU 上，8B 编码器仍在 GPU 上。它是部署示例，不是宣传加速比所用的配置。应使用自己的负载比较 CPU 与 GPU 投影头后再决定。

检查到的服务器默认绑定 `0.0.0.0`，只有配置 `CLM_API_KEY` 才启用认证，健康响应同时包含 `ok` 和 `embedder`。 [服务器实现定义了这些参数、认证和健康检查行为](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/server.py) 。因此，显式绑定回环地址很重要。CLM 密钥不会自动保护独立的编码器端点，`--no-ui` 也不是认证。应将两个服务保持为私有服务；远程使用前增加认证入口、请求限制及合适的负载隔离。

健康端点返回成功 HTTP 状态，并不足以证明服务可用。还要检查编码器标记和提供的模型：

```
curl -fsS --connect-timeout 5 --max-time 15 http://127.0.0.1:8700/health \
  | python -c 'import json,sys; d=json.load(sys.stdin); sys.exit(0 if d.get("ok") and d.get("embedder") and "clm-latest" in d.get("models", []) else 1)'
```

## 如何发送有边界的请求，而不是授予工具权限？

**使用稳定的选项 ID 和可以独立理解的描述。** 在 CLM 的 `Choice` 实现中，状态编码器接收上下文与问题指令，动作编码器接收各选项的描述；描述为空时才使用选项键。因此，两个 ID 即使不同，描述相同也不会为动作编码器提供不同语义。 [模式实现展示了状态和候选项如何转换为文本](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/schema.py) 。

下面是一条合成的英文请求，只要求给出只读诊断建议。各语言版本保留完全相同的测试输入，以便比较结果。`review` 是刻意加入的选项，但应用仍需强制回退路径，因为模型并不保证在该弃权时选择它。

```
{
  "model": "clm-latest",
  "state": "A CI job fails during dependency installation. The log reports a lockfile mismatch. No production change is authorized.",
  "questions": {
    "next_step": {
      "type": "choice",
      "instructions": "Select the most useful permitted read-only diagnostic step, or request review when the evidence is insufficient.",
      "criteria": {
        "inspect_lockfile": "Read the manifest and lockfile to identify inconsistent dependency versions; make no changes.",
        "read_network_log": "Read existing dependency-download network logs to investigate connection failures; make no changes.",
        "review": "Ask a human to review because the supplied evidence is insufficient or no listed diagnostic is appropriate."
      }
    }
  }
}
```

将其保存为 `request.json`，再从配置了相同 `CLM_API_KEY` 的终端调用 API：

```
: "${CLM_API_KEY:?Set the same CLM_API_KEY used by the API}"
curl -fsS --connect-timeout 5 --max-time 30 \
  -H "Authorization: Bearer ${CLM_API_KEY}" \
  -H "Content-Type: application/json" \
  --data-binary @request.json \
  http://127.0.0.1:8700/v1/systemone
```

使用结果前，先检查响应类型、选项 ID 和概率分布。应用应拒绝未知 ID，独立验证执行权限，并在超时、证据不足或质量标准未满足时转交人工复核。不能把 `choice` ID 直接变成未经验证的 shell 命令。

兼容 TypeSafe 不代表只改基础 URL 就能安全上线。需要重新验证阈值、选项描述和输入准备方式。一般业务流程示例由上文的工作流指南负责，本文只讨论 CLM 特定的请求约束。

## 动作缓存何时真正有效？

**相同候选文本需要对不同状态反复打分时，缓存最有机会发挥作用。** 固定的诊断动作、产品记录或允许动作集合，可以分摊编码成本。每次调用都重新生成一批长解决方案，则无法在无关任务间复用这些动作嵌入，不过状态侧或其他复用仍可能有帮助。

检查到的 embedder 在进程内使用按精确输入文本索引的 LRU 缓存，保存归一化编码器向量。未命中时才访问配置好的池化端点，输入 token 计数反映这些未命中所消耗的新 token。 [Embedder 源码定义了精确文本缓存和 token 统计](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/embedder.py) 。“没有新增编码器 token”不等于没有计算、没有托管成本，也不能证明新用户输入被独立处理。

在引擎层，投影后的状态向量和动作向量使用不同命名空间，投影头身份也参与命名。 [引擎实现区分原始嵌入、投影向量和模型选择](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/engine.py) 。设备侧向量区在启动时分配，通过最近最少使用策略淘汰条目。 [向量缓存实现定义了有上限的存储池](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/cache.py) 。该预算并不限制单独的编码器文本缓存或整个进程。两种缓存都只是实现细节，不是权限控制层，也不是持久记忆存储。

三种不同对象需要不同复用规则：

| 对象 | 复用机会 | 必须保持有效的条件 |
| --- | --- | --- |
| 候选嵌入 | 相同动作描述再次出现 | 编码器、池化、预处理与精确文本 |
| 投影后的候选向量 | 相同嵌入再次参与打分 | 上述条件以及投影头身份 |
| 最终决策 | 完整决策上下文重复 | 状态、候选集合、权限、策略、模型、温度和时效性 |

我们的部署建议是维护一份清单，记录编码器修订号、池化模式、投影头哈希、文本渲染版本和 token 上限。编码器或预处理改变后，应重启并重新预热，而不是假定投影头热更新会使所有缓存失效。动作目录应单独版本化；权限或记录更新后，不能复用旧的最终决策。

共享进程缓存并不保证租户隔离。对敏感负载，应评估独立进程或更强的隔离，并把日志、内存、缓存时序和请求路由纳入考虑。只预热经过授权的候选目录。全局列表中某项分数很高，并不意味着调用者拥有访问权限。

## 为什么 CLM 可能很自信，却仍然选错？

**CLM 的概率只相对于提供的候选集合成立。** 即使所有选项都不合适，softmax 也必须分配概率。只有一个候选时，概率必然为 1.0，但这并不证明动作正确。增加合理备选项，即使任务本身不变，也可能改变概率。

公开实现中的 `confidence` 是最高概率减去其余概率的平均值。它不是通用的事实正确概率，也不能替代经过校准的接受策略。公式可在前面引用的 schema 源码中查看。应把 `0.9` 当作需要验证的输出，而不是可直接套用的 90% 保证。

对 CLM 集成，应测试正确选项缺失、描述重复、候选高度相似、上下文矛盾、选项顺序变化和集合大小变化。按照相关语言和动作类别，分别测量拟用阈值下的错误率。本文有多语言版本，并不能证明 CLM 具有对应的多语言性能。

权限检查应放在候选打分器之外，并在执行前再次进行。对影响重大的操作，回退必须由应用控制，而不是仅提供一个可能被同一模型忽略的标签。初始上线应只提供建议，直到留出测试证据支持更大的权限。

## 2,048-token 限制和常见运行故障

**参考快速入门会把输入文本截断到 2,048 个 token。** 只提高编码器上限，不会取消 CLM 侧截断。测试 8K 输入时，应同时提高 `vllm serve --max-model-len 8192` 与 `clm-serve --max-tokens 8192`，然后重新检查 GPU 内存和质量。能够接收更长输入，不代表投影头已经针对这种用途验证。

检查到的 embedder 会发送 `truncate_prompt_tokens`。状态与问题的文本渲染、动作描述都会影响实际嵌入内容。应测试边界附近的关键证据和指令。超长输入需要由可信应用代码拒绝或有意摘要，不能默默把基于截断内容的决策当成完整决策。

| 症状 | 优先检查 | 可控处理方式 |
| --- | --- | --- |
| CLM 返回 HTTP 502 | 编码器 URL、模型名、进程和 vLLM 错误 | 保留请求并转交复核，不默认批准 |
| HTTP 401 | 两端 bearer 密钥是否匹配 | 修复凭证，但不要打印密钥 |
| HTTP 422 | 问题类型、候选、模型与温度 | 验证请求后再重试 |
| API 健康但无法正常决策 | `embedder` 状态及真实打分冒烟测试 | 两个服务都就绪才放行 |
| “热缓存”请求仍然慢 | 文本变化、缓存淘汰及新状态 | 测量未命中，而非假设命中 |
| 短任务正常，长任务质量差 | 两侧 token 限制及关键文本位置 | 上线前补充长输入样例 |

不要仅因另一个编码器看起来更快就替换 Qwen3-8B。投影头依赖训练时的表示空间与池化方式。量化、替代运行时和更长上下文都需要各自的质量与延迟验证。

## 将 CLM 用作验证器，而不是代码生成器

**验证器从已有解决方案中选择，不能消除生成和测试成本。** 候选流水线可以生成多个方案，运行确定性检查，对剩余候选打分，再将选中的产物交给复核。候选生成成本应与验证器时间分开记录。通用架构见 [LLM 作为验证器指南](/zh/blog/llm-as-a-verifier/) ；CLM 特定的问题是匹配正确的投影头和评估方法。

针对公开的 DeepSWE 实验，模型卡提供了使用已保存嵌入的复现命令。请在固定版本的 CLM 源码目录中，准备好文档要求的评估依赖和 Hugging Face CLI 后运行：

```
git clone https://github.com/Contrastive-LM/CLM.git clm-source
git -C clm-source checkout bb42c6c5bf914fd449bed2f6ca65be80602cb1f7
cd clm-source
hf download Contrastive-LM/deepswe-clm-heads-8k --local-dir heads/deepswe
python evaluation/bon_eval.py \
  --hf-dataset Contrastive-LM/deepswe-clm-embeddings-8k \
  --checkpoint heads/deepswe/best_head.pt \
  --tasks-file heads/deepswe/heldout_tasks.json \
  --n 4 --window 12
```

这条命令在公开嵌入数据集上评估验证器，并不会启动编程智能体、重新生成全部轨迹，也不能说明解决原始任务的完整墙钟时间。应检查公开的检查点哈希和留出任务清单哈希，固定候选预算，并确保训练与测试任务不重叠。

项目的微调说明明确要求在调整训练时保持数据、折分、评估集和 best-of-N 设置不变。 [固定版本的微调指南规定了这些实验边界](https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/docs/FINETUNING.md) 。只训练小型投影头可能降低可训练参数相关成本，但数据标注、嵌入生成、评估与服务运行仍然需要投入。不能在留出任务上调优后，再把结果称作未经触碰的测试成绩。

还要检查每个产物自己的许可证元数据：CLM 参考权重采用 Apache 2.0，而已核查的 DeepSWE 投影头模型卡标注为 MIT。不要假定所有下游检查点使用同一许可证。开放权重不意味着免费基础设施，也不提供适用性保证。

## 替换前，先测量完整处理链路

**决策组件快十倍，不代表整个智能体快十倍。** 一个明确假设的例子：工作流有 900 ms 花在选择以外，另有 100 ms 用于选择。把后者缩短到 10 ms，总耗时就从 1,000 ms 降至 910 ms，即减少 9%，整体加速约 1.10 倍。这只是示例计算，不是 CLM 实测。

CLM 试点应分别比较新状态加冷候选、新状态加热候选、完全相同的重复请求，以及持续变化的候选目录。重复完全相同的请求，可能测到与真实业务不同的缓存路径。应分开记录结果，在相同并发和候选预算下报告端到端 p50/p95、失败率、内存、接受决策的准确率和复核比例。

扩大使用前，应具备版本化的编码器与投影头组合、明确的候选责任人、经过测试的错误处理、缓存监控、代表性的留出评估，以及回滚路径。授予新服务写权限前，先让现有选择器参与影子对照。投资决策可沿用 [AI 试点停止或扩展评分卡](/zh/blog/ai-pilot-kill-or-scale-scorecard/) ，而不是在这里再建立一套重复的推广方法。

截至核查日期，参考模型卡将多模态 CLM-35B 描述为计划于 2026 年 10 月初推出。这是路线图声明，不是已发布能力，也不是保证交付日期。后续检查点需要独立验证，不能直接继承 8B 的结果。

Wavect 的 [AI 集成服务](/zh/services/artificial-intelligence/) 可以一起评估选择器、权限、可观测性和测试。 [Twinsoft AI 案例](/zh/case-studies/twinsoft-ai/) 提供相关交付背景，但不是 CLM 部署案例。可以结合 [上线前 QA 检查清单](/zh/software-development-guide/software-qa-checklist-before-launch/) 与代表性候选集合， [讨论一个有明确边界的 CLM 验证器试点](/zh/contact/) 。

## CLM-8B 部署常见问题

### 只下载投影头就能运行 CLM-8B 吗？

不能。参考投影头依赖 Qwen3-8B 最后一个 token 的池化嵌入，仍然需要编码器服务及其内存和计算资源。把投影头放到 CPU 上，不会使完整的 8B 系统变成小型纯 CPU 模型。

### CLM 动作缓存也会缓存工具权限吗？

不会。它复用文本嵌入和投影向量，不负责授权。权限应由可信应用代码控制，并在执行前再次检查。复用最终决策还要求完整状态、候选集合、策略和时效性全部保持有效。

### 提高 vLLM 上下文限制后，CLM 为什么仍然截断请求？

参考配置有两道限制：vLLM 的 max-model-len 和 CLM 的 max-tokens。评估长输入时必须同时提高。之后还要检查内存、边界附近的关键文本和质量。接受更多 token 不代表长上下文行为已经验证。

### CLM 健康端点返回 HTTP 200 就代表就绪吗？

不代表。检查到的响应可能同时包含 ok=true 和 embedder=false。还应检查编码器状态、可用模型，并运行真实打分冒烟测试。两个服务都应保持私有；CLM bearer 密钥不会自动保护编码器。

### CLM 公布的编程成绩是零样本结果吗？

不是。这些结果来自任务专用微调头和留出子集：38 个 DeepSWE 任务、30 个 Terminal-Bench 2.1 任务。CLM 从已经生成的候选中选择。只下载参考头无法自动复现这些成绩。

### CLM confidence 为 0.9，意味着动作有 90% 概率正确吗？

不能直接这样解释。Choice 概率只相对于候选集合成立。检查到的 confidence 公式是最高概率减去其余概率的平均值。应使用代表性的留出样例验证阈值，并保留由应用强制执行的人工复核回退。

### 可以用另一个嵌入模型替换 Qwen3-8B 吗？

不能假定这是兼容替换。参考投影头依赖训练时的表示和最后一个 token 池化。不同编码器、量化方式或输入准备流程都需要单独质量验证，向量维度相同并不足够。

### 本指南已经可以使用多模态 CLM-35B 吗？

不能。截至 2026 年 9 月 28 日核查，模型卡只表示计划于 10 月初推出。本指南使用已发布的 CLM-v0.1-8B 参考投影头。后续检查点的可用性、许可、运行要求和质量需要独立核查。

## 最终思考

把 CLM 当作可替换的打分组件：编码器有版本、候选约束明确、质量经过测量。输入真正重复时可以复用向量，但决策和权限必须重新验证。第一个目标应是在自身留出任务上运行可靠的私有选择器，而不是追逐宣传中的加速比。

## 你可能也喜欢..

[**LLM-as-a-Verifier：通用架构** 理解候选生成、验证成本和确定性检查。](/zh/blog/llm-as-a-verifier/) [**Jev 技术评测** 单独了解 Jev，避免把 CLM 部署指南变成另一篇模型对比。](/zh/blog/jev-ai-decision-model-review/)

模型与基础设施

## 继续浏览此集群

模型选择、推理经济性、本地部署、压缩与服务架构。

[从核心文章开始**在欧盟自托管 LLM：开放权重模型何时才真正划算**](/zh/blog/self-hosting-llms-eu-cost/)

- [DeerFlow 2.0：Docker 部署、沙箱与记忆机制](/zh/blog/deerflow-2-docker-setup-sandbox-memory/)
- [AnyJev：LLM 概率校准与选项顺序偏差](/zh/blog/anyjev-calibration-option-order-bias/)
- [LiteAgents SDK：逐轮模型路由、安装与迁移指南](/zh/blog/liteagents-sdk-per-turn-model-routing/)
- [mcp-memory-service：让 Claude Code 与 Cursor 共享持久记忆](/zh/blog/mcp-memory-service-claude-code-cursor/)
- [Claude Opus 5.5 使用指南：适用场景、提示词与思考强度](/zh/blog/claude-opus-5-5-best-use-cases-workflows/)

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

12 分钟 阅读 · 2026年9月28日 最近审核 2026年9月28日

[**下一篇**](/zh/blog/llm-as-a-verifier/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-09-28",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-09-28",
      "url": "https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "CLM-8B 使用冻结的 Qwen3-8B 编码器和小型状态、动作投影头，对给定候选打分。自托管仍需要完整编码器，不能只下载投影头。复用候选文本可能节省编码，但缓存向量不等于缓存权限或最终决策。本文介绍两个私有服务、2,048-token 截断边界、请求验证和验证器评估。公开编程成绩来自专门微调的投影头及留出任务子集，不是参考检查点的零样本结果。",
  "articleBody": " 博客概览/AI 与智能体/模型与基础设施 CLM-8B 自托管：vLLM、动作缓存与验证器 要点速览 CLM-8B 使用冻结的 Qwen3-8B 编码器和小型状态、动作投影头，对给定候选打分。自托管仍需要完整编码器，不能只下载投影头。复用候选文本可能节省编码，但缓存向量不等于缓存权限或最终决策。本文介绍两个私有服务、2,048-token 截断边界、请求验证和验证器评估。公开编程成绩来自专门微调的投影头及留出任务子集，不是参考检查点的零样本结果。 当智能体需要从已知动作中做选择，而不是再写一段答案时，CLM-8B 才值得考虑。 它在部署上的关键特点是分别编码状态与动作：变化后的状态可以直接与已经编码的候选项比较。因此，在用另一个提示词替换生成步骤之前，先检查应用能否复用动作目录，往往更有价值。 已发布的 CLM-v0.1-8B 包含状态与动作两个投影头，依赖冻结的 Qwen3-8B 编码器。每个头约有 2,000 万个可训练参数，但推理时仍然需要运行完整的基础编码器。参考权重采用 Apache 2.0 许可证。CLM 模型卡说明了架构、许可与限制。这里的 CLM 指对比语言模型，不是合同生命周期管理软件，也不是通用聊天模型。 工程问题不应是“CLM 是否击败了 Jev”，而应是“这个应用能否复用候选项、保持决策质量，并降低实测端到端延迟”。 我们的 Jev 技术评测、Laya 与 Jev 基准分析及业务工作流指南分别覆盖那些主题。本文专注于 CLM 的运行方式、输入设计和验证器集成。 资料核查日期为 2026年9月28日。源码检查固定于 CLM 提交 bb42c6c5bf914fd449bed2f6ca65be80602cb1f7。下文是建议的集成模式，不是 Wavect 的 GPU 实测，也不代表我们已在生产环境部署 CLM。 CLM-8B 究竟替代哪个步骤？ 当候选集合已经存在时，CLM 可以替代一个打分或选择步骤。 规划器、检索系统、确定性规则或其他模型仍然需要提供候选项。CLM 无法选择集合中不存在的正确动作，不能生成任意工具参数，也不负责执行所选工具或授予执行权限。 项目提供兼容 TypeSafe 的类型化 API 和直接排序端点。项目描述的训练过程包括约 6,000 万条问答对、3,000 万条合成困难负样本和 100 万条智能体轨迹。状态与动作表示通过对比目标对齐，而不是把最终决策生成为一段文字。固定版本的项目 README 介绍了训练和服务设计。 不要把 CLM 与 Jev 的区别描述成“选择与写作”。Jev 本身也是类型化决策模型，而不是普通聊天机器人。TypeSafe 官方介绍明确了这一区别。请求格式相同，不代表预测可以互换、概率已经校准，或运行特性完全一致。 一个适合起步的有限场景是只读诊断助手。应用提供经过批准的诊断动作，CLM 根据错误报告排序，再由可信代码验证选择结果，最后才允许独立执行器运行。这只是设计建议，并不能证明 CLM 对您的日志具有某种准确率。 速度和编程成绩实际证明了什么？ 应把发布数字视为作者报告的实验结果，而不是普遍适用的替换结论。 项目称，在部分零样本任务中延迟最多降低约 9 倍，在约 1,000 个候选项时实现约 13 倍加速。两者对应不同负载与缓存条件，不是任何请求都能获得的两项保证。作者报告的数字见已核查的模型卡。 T-Rex 复现实验很重要，因为它明确使用了标注安全动作的物理规划器、多个并行中的请求以及开启的安全保护机制。CLM 在本地 RTX 4090 上运行，对比的 Jev 服务返回版本为 jev-1.13.0，延迟按客户端单次请求计时。因此，存活结果衡量的是组合系统，而不是无辅助模型对截图的理解能力。T-Rex 方法说明披露了规划器、安全机制和运行环境。不能把游戏循环的成绩直接当成生产延迟目标。 在编程任务中，CLM 对其他模型生成的候选解决方案进行排序。README 报告，经任务专用投影头微调后，在 38 个留出 DeepSWE 任务上达到 81.6%，在 30 个留出 Terminal-Bench 2.1 任务上达到 87.6%。这既不是可下载参考头的零样本成绩，也不是完整基准套件的排行榜成绩。验证器计时使用 H100，与 T-Rex 的硬件不同。固定版本的结果部分给出了任务数量与硬件说明。 已发布的 DeepSWE 投影头模型卡提供了更明确的解释：从四个候选中选择，取最后十二个可用步骤分数的平均值，在 38 个留出任务中成功 31 个。其 pass@1 基线为 28/38，oracle 上限为 34/38。DeepSWE 投影头模型卡公开了划分、评分规则与检查点哈希。这意味着在该集合上，比所列基线多选对三个任务，而不是证明一个 8B 模型独立完成了整个编程基准。 自己的对照实验应保持候选生成、任务划分、硬件、并发和网络边界一致。除了延迟，还应公布准确率和拒绝自动决策的比例。快速但错误的选择会造成返工，把返工从计时中排除会制造虚假的提升。 如何通过 vLLM 自托管 CLM-8B？ 需要运行两个服务：Qwen3-8B 池化编码器，以及 CLM 打分 API。 投影头下载很小，不意味着完整运行时也很小。CLM 包要求 Python 3.10 或更新版本，依赖包括 PyTorch、vLLM、FastAPI 与 NumPy。固定版本的包定义列出了实际依赖。 使用与所选 vLLM、PyTorch 版本匹配的隔离 Linux CUDA 环境。下面固定的是 CLM 源码提交，并没有锁定全部依赖或编码器权重版本。应按硬件解析兼容版本，再保存环境锁定文件和编码器修订号。本文不声称某个最低显存配置或硬件成本。 python3 -m venv .venv . .venv/bin/activate python -m pip install --upgrade pip python -m pip install \\ \"git+https://github.com/Contrastive-LM/CLM.git@bb42c6c5bf914fd449bed2f6ca65be80602cb1f7\" python -m pip freeze > clm-environment.txt 在一个已激活环境的终端启动编码器。必须使用参考 Qwen3-8B 及其预期池化方式，不能仅因输出维度相同就换成任意嵌入模型： vllm serve Qwen/Qwen3-8B \\ --served-model-name qwen3-8b \\ --runner pooling \\ --max-model-len 2048 \\ --host 127.0.0.1 \\ --port 8090 在第二个已激活环境的终端，通过密钥管理流程提供 CLM_API_KEY。客户端终端需要相同密钥，绝不能将密钥提交到仓库。以下启动方式将 API 绑定到本机，并明确限制向量缓存预算： : \"${CLM_API_KEY:?Set CLM_API_KEY in this shell first}\" export CLM_API_KEY clm-serve \\ --host 127.0.0.1 \\ --port 8700 \\ --emb-url http://127.0.0.1:8090/v1/embeddings \\ --emb-model qwen3-8b \\ --max-tokens 2048 \\ --device cpu \\ --action-cache 64MiB \\ --no-ui 该示例刻意把小型投影头及其向量缓存放在 CPU 上，8B 编码器仍在 GPU 上。它是部署示例，不是宣传加速比所用的配置。应使用自己的负载比较 CPU 与 GPU 投影头后再决定。 检查到的服务器默认绑定 0.0.0.0，只有配置 CLM_API_KEY 才启用认证，健康响应同时包含 ok 和 embedder。服务器实现定义了这些参数、认证和健康检查行为。因此，显式绑定回环地址很重要。CLM 密钥不会自动保护独立的编码器端点，--no-ui 也不是认证。应将两个服务保持为私有服务；远程使用前增加认证入口、请求限制及合适的负载隔离。 健康端点返回成功 HTTP 状态，并不足以证明服务可用。还要检查编码器标记和提供的模型： curl -fsS --connect-timeout 5 --max-time 15 http://127.0.0.1:8700/health \\ | python -c 'import json,sys; d=json.load(sys.stdin); sys.exit(0 if d.get(\"ok\") and d.get(\"embedder\") and \"clm-latest\" in d.get(\"models\", []) else 1)' 如何发送有边界的请求，而不是授予工具权限？ 使用稳定的选项 ID 和可以独立理解的描述。 在 CLM 的 Choice 实现中，状态编码器接收上下文与问题指令，动作编码器接收各选项的描述；描述为空时才使用选项键。因此，两个 ID 即使不同，描述相同也不会为动作编码器提供不同语义。模式实现展示了状态和候选项如何转换为文本。 下面是一条合成的英文请求，只要求给出只读诊断建议。各语言版本保留完全相同的测试输入，以便比较结果。review 是刻意加入的选项，但应用仍需强制回退路径，因为模型并不保证在该弃权时选择它。 { \"model\": \"clm-latest\", \"state\": \"A CI job fails during dependency installation. The log reports a lockfile mismatch. No production change is authorized.\", \"questions\": { \"next_step\": { \"type\": \"choice\", \"instructions\": \"Select the most useful permitted read-only diagnostic step, or request review when the evidence is insufficient.\", \"criteria\": { \"inspect_lockfile\": \"Read the manifest and lockfile to identify inconsistent dependency versions; make no changes.\", \"read_network_log\": \"Read existing dependency-download network logs to investigate connection failures; make no changes.\", \"review\": \"Ask a human to review because the supplied evidence is insufficient or no listed diagnostic is appropriate.\" } } } } 将其保存为 request.json，再从配置了相同 CLM_API_KEY 的终端调用 API： : \"${CLM_API_KEY:?Set the same CLM_API_KEY used by the API}\" curl -fsS --connect-timeout 5 --max-time 30 \\ -H \"Authorization: Bearer ${CLM_API_KEY}\" \\ -H \"Content-Type: application/json\" \\ --data-binary @request.json \\ http://127.0.0.1:8700/v1/systemone 使用结果前，先检查响应类型、选项 ID 和概率分布。应用",
  "articleSection": "AI 基础设施",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "CLM 模型卡说明了架构、许可与限制",
      "url": "https://huggingface.co/Contrastive-LM/CLM-v0.1-8B"
    },
    {
      "@type": "WebPage",
      "name": "固定版本的项目 README 介绍了训练和服务设计",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/README.md"
    },
    {
      "@type": "WebPage",
      "name": "TypeSafe 官方介绍明确了这一区别",
      "url": "https://docs.typesafe.ai/introduction"
    },
    {
      "@type": "WebPage",
      "name": "T-Rex 方法说明披露了规划器、安全机制和运行环境",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/examples/t_rex/README.md"
    },
    {
      "@type": "WebPage",
      "name": "DeepSWE 投影头模型卡公开了划分、评分规则与检查点哈希",
      "url": "https://huggingface.co/Contrastive-LM/deepswe-clm-heads-8k"
    },
    {
      "@type": "WebPage",
      "name": "固定版本的包定义列出了实际依赖",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/pyproject.toml"
    },
    {
      "@type": "WebPage",
      "name": "服务器实现定义了这些参数、认证和健康检查行为",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/server.py"
    },
    {
      "@type": "WebPage",
      "name": "模式实现展示了状态和候选项如何转换为文本",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/schema.py"
    },
    {
      "@type": "WebPage",
      "name": "Embedder 源码定义了精确文本缓存和 token 统计",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/embedder.py"
    },
    {
      "@type": "WebPage",
      "name": "引擎实现区分原始嵌入、投影向量和模型选择",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/engine.py"
    },
    {
      "@type": "WebPage",
      "name": "向量缓存实现定义了有上限的存储池",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/src/clm/cache.py"
    },
    {
      "@type": "WebPage",
      "name": "固定版本的微调指南规定了这些实验边界",
      "url": "https://github.com/Contrastive-LM/CLM/blob/bb42c6c5bf914fd449bed2f6ca65be80602cb1f7/docs/FINETUNING.md"
    }
  ],
  "dateModified": "2026-09-28",
  "datePublished": "2026-09-28",
  "description": "CLM-8B 使用冻结的 Qwen3-8B 编码器和小型状态、动作投影头，对给定候选打分。自托管仍需要完整编码器，不能只下载投影头。复用候选文本可能节省编码，但缓存向量不等于缓存权限或最终决策。本文介绍两个私有服务、2,048-token 截断边界、请求验证和验证器评估。公开编程成绩来自专门微调的投影头及留出任务子集，不是参考检查点的零样本结果。",
  "headline": "CLM-8B 自托管：vLLM、动作缓存与验证器",
  "image": "https://wavect.io/img/blog/headers/header_clm-8b-self-hosting-action-cache-verifier.svg",
  "inLanguage": "zh",
  "keywords": "AI 智能体, CLM-8B, 自托管",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/",
  "wordCount": 835
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/",
      "name": "首页",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/overview/",
      "name": "博客概览",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/topics/ai-agents/",
      "name": "AI 与智能体",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/clusters/models-infrastructure/",
      "name": "模型与基础设施",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/clm-8b-self-hosting-action-cache-verifier/",
      "name": "CLM-8B 自托管：vLLM、动作缓存与验证器",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能。参考投影头依赖 Qwen3-8B 最后一个 token 的池化嵌入，仍然需要编码器服务及其内存和计算资源。把投影头放到 CPU 上，不会使完整的 8B 系统变成小型纯 CPU 模型。"
      },
      "name": "只下载投影头就能运行 CLM-8B 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会。它复用文本嵌入和投影向量，不负责授权。权限应由可信应用代码控制，并在执行前再次检查。复用最终决策还要求完整状态、候选集合、策略和时效性全部保持有效。"
      },
      "name": "CLM 动作缓存也会缓存工具权限吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "参考配置有两道限制：vLLM 的 max-model-len 和 CLM 的 max-tokens。评估长输入时必须同时提高。之后还要检查内存、边界附近的关键文本和质量。接受更多 token 不代表长上下文行为已经验证。"
      },
      "name": "提高 vLLM 上下文限制后，CLM 为什么仍然截断请求？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不代表。检查到的响应可能同时包含 ok=true 和 embedder=false。还应检查编码器状态、可用模型，并运行真实打分冒烟测试。两个服务都应保持私有；CLM bearer 密钥不会自动保护编码器。"
      },
      "name": "CLM 健康端点返回 HTTP 200 就代表就绪吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不是。这些结果来自任务专用微调头和留出子集：38 个 DeepSWE 任务、30 个 Terminal-Bench 2.1 任务。CLM 从已经生成的候选中选择。只下载参考头无法自动复现这些成绩。"
      },
      "name": "CLM 公布的编程成绩是零样本结果吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能直接这样解释。Choice 概率只相对于候选集合成立。检查到的 confidence 公式是最高概率减去其余概率的平均值。应使用代表性的留出样例验证阈值，并保留由应用强制执行的人工复核回退。"
      },
      "name": "CLM confidence 为 0.9，意味着动作有 90% 概率正确吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能假定这是兼容替换。参考投影头依赖训练时的表示和最后一个 token 池化。不同编码器、量化方式或输入准备流程都需要单独质量验证，向量维度相同并不足够。"
      },
      "name": "可以用另一个嵌入模型替换 Qwen3-8B 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能。截至 2026 年 9 月 28 日核查，模型卡只表示计划于 10 月初推出。本指南使用已发布的 CLM-v0.1-8B 参考投影头。后续检查点的可用性、许可、运行要求和质量需要独立核查。"
      },
      "name": "本指南已经可以使用多模态 CLM-35B 吗？"
    }
  ]
}
```
