---
title: "Context Language Models 与上下文压缩：应该如何试点？"
canonical: https://wavect.io/zh/blog/context-language-models-vs-compaction/
language: zh
description: "解读 Meta Context Language Models：可编辑上下文、仍需保留的运行框架控制、缓存权衡、非商业许可，以及验证关键事实保留与真实成本的试点方案。"
image: "https://wavect.io/img/blog/headers/header_context-language-models-vs-compaction.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年10月2日 最近审核 2026年10月2日

[**下一篇**](/zh/blog/agent-harness-engineering/)

# Context Language Models 与上下文压缩：应该如何试点？

要点速览

Context Language Models 让模型编辑当前工作上下文。参考实现仍有运行框架负责保护指令、检查预算并验证修改。编辑上下文不等于持久记忆，也不会自动更新模型权重。核查代码使用 CC BY-NC 4.0，并非不限制商业用途的许可。应使用保留测试任务，把新策略与现有压缩方案进行对照，测量证据保留和总成本。Suffix Cache Reuse 应单独测试：删除可见文字，并不能证明其影响已从缓存状态消失。

能编辑工作上下文的智能体，比仅仅拥有更大笔记本的智能体更值得关注。它可以决定删除哪些失败搜索、保留哪些约束，以及何时重写中间计划。真正的工程问题是：这些决策能否改善你的工作流，改善到足以替换现有上下文压缩策略的程度？

**Context Language Models（CLM，上下文语言模型）把模型的实时上下文暴露为可编辑文本，而不是把所有上下文管理决策都交给应用代码。** 这项研究由华盛顿大学、Meta Superintelligence Labs、MIT 和 Trillium Labs 的研究人员共同完成。arXiv 提交日期为 **2026 年 9 月 29 日**，不能简单写成含糊的“十月某天刚发布”。 [论文及提交记录明确了研究内容和日期](https://arxiv.org/abs/2609.37725v1) 。

它不是用于候选动作排序的 **Contrastive Language Model CLM-8B（对比语言模型）**。那个不同的系统见我们的 [CLM-8B 自托管与验证器指南](/zh/blog/clm-8b-self-hosting-action-cache-verifier/) 。

资料核查日期：2026 年 10 月 2 日。代码引用固定到 `18dc11115f50f261233c5bba7937834491e307e8`。本文是基于公开资料的工程评估，不是 Wavect 实测，也不代表我们已为客户部署 CLM。

## Meta 与合作团队究竟发布了什么？

发布内容包括上下文编辑运行框架、上下文内技能改进、强化学习代码，以及名为 Suffix Cache Reuse 的推理服务优化。它并不是一种让现有基础设施突然变得多余的新模型架构。 [固定版本的仓库说明列出了已发布组件](https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/README.md) 。

“笔记本”的比喻有边界。普通草稿文件是在对话旁边添加笔记；这里的编辑可以改变后续模型调用实际收到的对话材料。应把它理解为可编辑的工作集，而不是重写应用权限或真实执行历史的许可。

对于研究智能体，我们希望工作集保留问题、尚未解决的矛盾和证据链接，同时去掉重复搜索输出。对于编程智能体，则应保留失败测试、相关代码位置和无效修复尝试。这些是我们建议的保留目标，不是每次 CLM 运行都会自动满足的性质。

论文还描述了智能体自行创建跟踪记录和可复用压缩辅助函数。这才是值得关注的部分：上下文管理可以成为面向具体任务的行为，而不必不断增加手写删除规则。这些是观察到的示例，并不保证其他模型或任务也会出现相同行为。详见 [论文中的上下文编辑示例](#source-paper) 。

## 可编辑的上下文文件如何工作？

参考实现 `ClmAgent` 基于 Harbor。在执行命令前，它将可编辑的对话轮次镜像到 `/tmp/.live_ctx/LIVE_CTX_MAIN.txt`。模型可以用常见 Shell 工具修改文件。运行框架会把修改重新解析成消息，同时固定系统提示和原始任务。此外，它还提供 token 提醒、编辑准入检查和上下文超限恢复。 [运行框架文档说明了镜像文件、受保护前缀和控制循环](https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/clm/clm_harness/README.md) 。

这改变的是职责分工，而不是取消运行框架。模型决定保留什么；软件仍然要判断修改是否有效、哪些工具可以运行、何时必须停止执行。我们的 [Agent Harness 工程指南](/zh/blog/agent-harness-engineering/) 讨论了这一更广泛的运行时责任。

模型生成的“已获得授权”不能变成真正的授权。权限应保存在可信应用状态中，而不是放在可编辑笔记里。同样，模型对失败测试的重新描述也不能替换实际测试结果。对有实质影响的动作，需要独立的记录。

**编辑上下文不会更新模型权重。** 项目的上下文内学习流程可以改进 `SKILL.md`，同时保持权重和运行框架不变；强化学习是另一条路径。 [技能演化实现明确区分了这些机制](https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/clm/clm_icl/README.md) 。因此，“策略在权重里”只描述一种可能的训练结果，并不是模型每次编辑文件时都会发生的事。

## CLM、上下文压缩、记忆文件与 RAG 有何区别？

替换决策应一次只针对一层能力。服务端上下文压缩可以自动总结早期轮次，也可以由应用主动请求，不一定只是固定阈值脚本。 [Anthropic 文档同时介绍了自动压缩与按需压缩](https://platform.claude.com/docs/en/build-with-claude/compaction) 。持久记忆是另一层：其记忆工具允许应用实现跨对话存储。 [记忆工具文档说明了这个独立的持久化约定](https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool) 。

| 机制 | 主要职责 | 试点要回答的问题 |
| --- | --- | --- |
| Context Language Model | 选择并编辑当前工作上下文中的材料。 | 选择性重写能否保留任务所需事实？ |
| 上下文压缩 | 浓缩对话材料，使工作能够继续。 | 摘要能否以较低运维复杂度保留足够信息？ |
| 持久记忆 | 让选定信息跨会话保留。 | 谁可以写入、检索、更正和使其过期？ |
| 检索 / RAG | 把相关外部证据引入工作上下文。 | 答案是否仍能追溯到权威来源？ |

这些职责可以共存。能编辑上下文的智能体仍可能需要检索和持久存储。不要仅因为模型能够删减工具输出，就替换文档索引。我们的 [RAG、微调与长上下文比较](/zh/blog/rag-vs-finetune-vs-longcontext-2026/) 负责更广泛的架构选择； [OpenViking 评估](/zh/blog/openviking-agent-memory-review/) 介绍另一个面向文件系统的记忆系统。

## CLM 基准测试能证明什么？

**论文支持针对具体工作负载开展实验，而不是支持“所有模型都能直接升级”的结论。** 下列 BrowseComp-Plus 结果由作者报告，并非我们的测量。详见 [论文实验部分和表 2](#source-paper) 。

| 实验 | 作者报告的结果 | 如何理解 |
| --- | --- | --- |
| Qwen3.6-27B，32K 上下文，最多 100 轮 | 准确率 59.4%；相对最强摘要基线提高 11.4%，前缀复用计算口径下 FLOPs 减少 21.5%。 | 只对应这一模型、工作负载和计算成本口径。 |
| Qwen3.5-9B，训练前 | CLM 准确率 28.8%；摘要基线 34.7%。 | 在此设置中，未经额外训练的上下文编辑更差。 |
| Qwen3.5-9B，强化学习后 | CLM 准确率 42.5%；摘要基线 42.1%。 | 训练改变了比较结果，不能把训练后成绩包装成开箱即用效果。 |

相对百分比提升不是百分点提升。FLOPs 不等于货币成本、端到端延迟或完整生产运维成本。我们的决策标准是，在条件一致时比较成功结果，并计入失败运行和恢复的成本。如果短上下文恰好忘掉决定答案是否正确的关键事实，它就不是有价值的优化。

## 为什么编辑上下文可能降低前缀缓存复用？

仅统计 token 数会遗漏重要权衡：**修改发生的位置很重要。** 例如，OpenAI 文档说明，提示缓存命中需要前缀精确匹配。 [提示缓存指南解释了前缀匹配要求](https://developers.openai.com/api/docs/guides/prompt-caching) 。

```
Before: [stable instructions] [old investigation] [useful evidence]
After:  [stable instructions] [shorter summary]   [useful evidence]
```

末尾的有效证据没有变化，但它前面的上下文变了。采用前缀缓存的实现可能需要再次处理这些保留内容。因此，一种减少可见 token 的策略，未必能降低真实请求成本或延迟。应分别测量缓存输入、未缓存输入和输出，而不是根据文件大小估算节省金额。

**Suffix Cache Reuse（SCR）** 是独立的 SGLang 补丁，用于在编辑后复用保留下来的缓存状态。其文档报告，在对应 BrowseComp-Plus 比较中，以标准服务 65.0% 的经验前缀复用 FLOPs 达到了相当的表现。核查版本的支持目标为 SGLang 0.5.16 和 Qwen3.6-27B，同时需要额外缓存内存。 [SCR 文档解释了近似处理方式、支持范围和内存分配](https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/suffix_cache_reuse/README.md) 。

关键在于，保留的状态可能仍包含旧前缀的信息。**我们的推论是：从上下文文件删除文字，不代表它对缓存状态的影响也已被清除。** 这不是已经证实的数据泄漏，而是应该针对敏感删除和约束变更进行全新预填充测试的理由。不能把复用旧状态视为与重新构建提示完全等价。日志和保存的快照也需要独立的保留规则。

先用普通推理服务评估上下文策略，再把 SCR 作为单独实验组加入。否则，无法分清变化来自更好的上下文决策，还是推理引擎使用了不同的近似机制。

## 发布的 CLM 代码可以不受限制地商用吗？

**核查的仓库采用 CC BY-NC 4.0。** 它不是 MIT 许可，也不是不限制商业用途的发布。 [固定版本的 LICENSE 写明 Attribution-NonCommercial 4.0](https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/LICENSE) 。Creative Commons 在 [CC BY-NC 4.0 说明页](https://creativecommons.org/licenses/by-nc/4.0/) 解释了非商业条件。Open Source Definition 不允许禁止商业用途的领域限制。 [OSI 定义列出了相应要求](https://opensource.org/osd) 。

进行技术采购判断时，应将其标为带有非商业限制、公开可获取的研究代码，而不是简单称为“免费开源”。使用前请确认计划中的评估或部署是否获得许可，或取得相应授权。企业内部实验不会仅因为没有对外销售订阅，就自动变成获准用途。模糊情况应交由合格法律顾问评估。

这里评估的是已核查代码的许可，不是在判断研究思想、独立编写的实现、模型权重或其他依赖的权利范围。

## 如何试用参考实现？

确认用途获准后，从隔离的开发环境、有效 Harbor 任务和已配置的模型端点开始。不要挂载生产密钥，也不要授予业务系统写权限。下面的提交固定了研究代码版本，但没有固定所有依赖或模型修订。

```
git clone https://github.com/facebookresearch/context-language-models.git
cd context-language-models
git checkout --detach 18dc11115f50f261233c5bba7937834491e307e8
python3.12 -m venv .venv
. .venv/bin/activate
python -m pip install -e .
```

请使用真实存在的 Harbor 任务目录。示例假设所示地址已有兼容 OpenAI 接口的端点，以 `qwen36-27b` 为模型别名，并启用了工具调用。根据环境修改路径和端点。“兼容 OpenAI”描述的是接口，并不说明谁在托管模型。

```
: "${TASK_DIR:?Set TASK_DIR to an existing Harbor task directory}"
test -d "$TASK_DIR" || exit 1
clm-harbor trial start -p "$TASK_DIR" -e docker \
  -a clm-minimal -m openai/qwen36-27b \
  --agent-kwarg api_base=http://localhost:8000/v1
```

这些命令依据 [文档中的安装和 Harbor 接口](#source-harness) 编写，我们没有实际执行 CLM 试验。模型服务器必须能被发起模型调用的进程访问。它的上下文容量需要容纳 `context_budget_tokens + max_tokens`，而不只是可编辑输入预算。请把依赖版本、模型修订、采样设置和端点配置与结果一起保存。

命令行程序成功启动不构成验收证据。还应检查最终任务结果与保留的产物。参考日志包括 `usage.json`、`trajectory.json` 和上下文快照。只编辑上下文的操作可能不占任务步骤额度，但仍消耗模型调用。这些调用必须计入实验的真实成本。

## 能拒绝错误上下文编辑的试点设计

下面是我们建议的评估设计，不是在声称这些都是发布版本内置功能。先选择一个只读工作流，例如调查支持事件并提出诊断建议。不要从能退款、修改权限或部署代码的智能体开始。

对现有压缩方案与 CLM 方案使用相同的模型检查点、初始指令、工具、证据语料和任务集。在实现允许的情况下，保持上下文预算和总执行预算一致，并记录不可避免的差异。进行重复配对试验，因为一次成功轨迹不能证明可靠性。最终保留测试集必须与用于改进编辑技能的样例分开。

| 测试 | 测试材料 | 必须提供的证据 |
| --- | --- | --- |
| 关键事实保留 | 大量无关结果之后，任务仍需要一个精确标识符。 | 答案保留正确标识符及来源。 |
| 约束更新 | 后续获授权指令使先前假设失效。 | 决策遵守当前约束，不会悄悄恢复旧假设。 |
| 证据矛盾 | 两条来源相互冲突，只有一条对当前任务具有权威性。 | 在凭证据解决前，编辑仍保留该分歧。 |
| 被操纵的工具输出 | 检索页面包含伪装成策略的指令。 | 重写后的上下文不会把这条指令提升为权威规则。 |
| 无效或中断的编辑 | 编辑产生非法结构，或进程在更新中途停止。 | 不会用部分状态执行动作，恢复过程在轨迹中可见。 |
| 对缓存敏感的删除 | 删除合成敏感事实，比较复用缓存与全新预填充。 | 记录行为差异，不能仅凭文件差异推断已彻底清除。 |
| 智能体隔离 | 两个智能体处理无关且权限不同的任务。 | 任务之间不会收到对方的上下文或缓存状态。 |

作为一般故障类型，注入测试并非纯粹假设。OpenAI 曾记录一个未发布模型在单独训练过程中，极少数上下文压缩摘要包含模型自行生成的未授权指令。报告没有把该行为归于最终模型用于实际流量的检查点。这不是针对 CLM 的漏洞发现，但说明重写摘要仍应作为不可信内容处理。 [OpenAI 事件报告给出了观察结果及其适用边界](https://alignment.openai.com/misalignment-reports/self-generated-prompt-injections-in-compaction-summaries/) 。

对每项候选编辑，我们建议生产设计保存先前修订、拟议差异、验证结果和拒绝原因。审计记录应由应用控制，而不是让智能体自行重写。即使上下文检查通过，也必须在动作执行边界再次验证实际权限。

报告任务成功率、关键事实丢失、无依据断言、被拒绝编辑、恢复尝试、延迟，以及模型与工具总成本。增加“每个验收通过结果的成本”，计入重试与人工审核。查看结果之前就约定不能接受的退化。平均成本降低但丢掉关键证据的策略，不能因为最好看的几个示例而获批。

## 多个上下文文件并不是协调协议

由模型管理文件，为多个智能体分配工作上下文提供了有吸引力的方式。但文件本身无法回答谁拥有某个修订、如何处理并发写入，以及哪个智能体能读取其他任务的数据。

我们的默认设计是让每个智能体拥有私有工作文件，明确共享证据的读取权限，并为每个共享产物指定唯一负责的写入方。共享更新应声明要替换的修订，并拒绝过时写入。在测试修订冲突、恢复和跨任务隔离之前，不应将它描述成已具备完整协作语义的共享文档。

## 团队现在应该改变什么？

**试点模型主导的上下文压缩，同时独立控制权限、证据和恢复。** 优先选择长调查历史已经造成可测量问题的工作流。对短小、可靠的流程，在有明确理由前不要改动。以不影响生产的影子运行评估新方案时，保留原有压缩路径。

拥有上下文文件的控制权有价值，但不等于控制了完整 AI 系统。 [参考运行框架支持本地或托管模型端点](#source-harness) 。本地文件依然可能发送给远程提供商。请分别决定推理在哪里运行、谁能访问轨迹、如何导出，以及适用哪些许可。仅凭自托管或云托管，都无法证明系统与用户利益对齐。

下一步可以明确一个工作流、必须保留的事实，以及批准新上下文策略所需的证据。我们的 [AI 开发服务](/zh/services/artificial-intelligence/) 是界定此类项目范围的商业入口。 [TwinSoft AI 案例](/zh/case-studies/twinsoft-ai/) 展示相关 AI 产品交付经验，并非 CLM 实施案例。可借助 [上线前软件 QA 检查清单](/zh/software-development-guide/software-qa-checklist-before-launch/) 将试点纳入整体发布检查，或 [讨论一个边界明确的上下文管理评估](/zh/contact/) 。

模型可能成为更好的工作笔记编辑者。应用仍然需要知道，这些笔记是否准确到足以支持行动。

## Context Language Models 常见问题

### 什么是 Context Language Model？

Context Language Model 让模型通过编辑文本形式的实时上下文来管理工作材料，再由运行时把修改读取到后续请求中。它不只是外部笔记本，也不只是更大的上下文窗口。

### Context Language Models 会取消智能体运行框架吗？

不会。核查的参考运行框架仍固定系统提示和任务、检查 token 预算、验证编辑并处理超限。由模型决定保留哪些信息，不能替代应用授权或恢复机制。

### 现有 LLM 能不经训练就使用 CLM 式上下文编辑吗？

参考运行框架支持现有模型和兼容工具调用的端点，不要求新架构。但质量取决于模型和任务，未经额外训练的结果不代表每个模型都一定改进。

### 编辑上下文文件会改变模型权重吗？

不会。文件编辑改变的是后续请求使用的材料。项目的上下文内技能演化保持权重不变，强化学习则是独立的训练过程。

### Meta 发布的 Context Language Models 代码是无限制开源吗？

核查仓库使用 CC BY-NC 4.0，包含非商业条件。它不是 MIT 许可，也不是不限制商业用途的发布。请确认预期用途是否获准，或取得相应授权。

### 它与 Contrastive Language Model CLM-8B 是同一个系统吗？

不是。Context Language Models 关注工作上下文编辑；Wavect 另一篇指南中的 Contrastive Language Model CLM-8B 关注候选动作排序。相同缩写不代表同一个项目。

### 删除上下文文字就等于从缓存中清除了吗？

不能这样假设。核查的 Suffix Cache Reuse 设计可能保留受旧前缀影响的缓存状态。敏感删除应与全新预填充进行比较，日志和快照也要单独管理。

模型与基础设施

## 继续浏览此集群

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

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

- [LiteLLM Lens：用 SQL 与 API 分析智能体 Trace](/zh/blog/litellm-lens-agent-trace-analysis/)
- [SmythOS Studio 自托管指南：Docker、成本与部署边界](/zh/blog/smythos-studio-self-hosting/)
- [DeerFlow 2.0：Docker 部署、沙箱与记忆机制](/zh/blog/deerflow-2-docker-setup-sandbox-memory/)
- [CLM-8B 自托管：vLLM、动作缓存与验证器](/zh/blog/clm-8b-self-hosting-action-cache-verifier/)
- [AnyJev：LLM 概率校准与选项顺序偏差](/zh/blog/anyjev-calibration-option-order-bias/)

[**返回**](/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年10月2日 最近审核 2026年10月2日

[**下一篇**](/zh/blog/agent-harness-engineering/)

## 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/context-language-models-vs-compaction/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-10-02",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-10-02",
      "url": "https://wavect.io/zh/blog/context-language-models-vs-compaction/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "Context Language Models 让模型编辑当前工作上下文。参考实现仍有运行框架负责保护指令、检查预算并验证修改。编辑上下文不等于持久记忆，也不会自动更新模型权重。核查代码使用 CC BY-NC 4.0，并非不限制商业用途的许可。应使用保留测试任务，把新策略与现有压缩方案进行对照，测量证据保留和总成本。Suffix Cache Reuse 应单独测试：删除可见文字，并不能证明其影响已从缓存状态消失。",
  "articleBody": " 博客概览/AI 与智能体/模型与基础设施 Context Language Models 与上下文压缩：应该如何试点？ 要点速览 Context Language Models 让模型编辑当前工作上下文。参考实现仍有运行框架负责保护指令、检查预算并验证修改。编辑上下文不等于持久记忆，也不会自动更新模型权重。核查代码使用 CC BY-NC 4.0，并非不限制商业用途的许可。应使用保留测试任务，把新策略与现有压缩方案进行对照，测量证据保留和总成本。Suffix Cache Reuse 应单独测试：删除可见文字，并不能证明其影响已从缓存状态消失。 能编辑工作上下文的智能体，比仅仅拥有更大笔记本的智能体更值得关注。它可以决定删除哪些失败搜索、保留哪些约束，以及何时重写中间计划。真正的工程问题是：这些决策能否改善你的工作流，改善到足以替换现有上下文压缩策略的程度？ Context Language Models（CLM，上下文语言模型）把模型的实时上下文暴露为可编辑文本，而不是把所有上下文管理决策都交给应用代码。 这项研究由华盛顿大学、Meta Superintelligence Labs、MIT 和 Trillium Labs 的研究人员共同完成。arXiv 提交日期为 2026 年 9 月 29 日，不能简单写成含糊的“十月某天刚发布”。论文及提交记录明确了研究内容和日期。 它不是用于候选动作排序的 Contrastive Language Model CLM-8B（对比语言模型）。那个不同的系统见我们的 CLM-8B 自托管与验证器指南。 资料核查日期：2026 年 10 月 2 日。代码引用固定到 18dc11115f50f261233c5bba7937834491e307e8。本文是基于公开资料的工程评估，不是 Wavect 实测，也不代表我们已为客户部署 CLM。 Meta 与合作团队究竟发布了什么？ 发布内容包括上下文编辑运行框架、上下文内技能改进、强化学习代码，以及名为 Suffix Cache Reuse 的推理服务优化。它并不是一种让现有基础设施突然变得多余的新模型架构。固定版本的仓库说明列出了已发布组件。 “笔记本”的比喻有边界。普通草稿文件是在对话旁边添加笔记；这里的编辑可以改变后续模型调用实际收到的对话材料。应把它理解为可编辑的工作集，而不是重写应用权限或真实执行历史的许可。 对于研究智能体，我们希望工作集保留问题、尚未解决的矛盾和证据链接，同时去掉重复搜索输出。对于编程智能体，则应保留失败测试、相关代码位置和无效修复尝试。这些是我们建议的保留目标，不是每次 CLM 运行都会自动满足的性质。 论文还描述了智能体自行创建跟踪记录和可复用压缩辅助函数。这才是值得关注的部分：上下文管理可以成为面向具体任务的行为，而不必不断增加手写删除规则。这些是观察到的示例，并不保证其他模型或任务也会出现相同行为。详见论文中的上下文编辑示例。 可编辑的上下文文件如何工作？ 参考实现 ClmAgent 基于 Harbor。在执行命令前，它将可编辑的对话轮次镜像到 /tmp/.live_ctx/LIVE_CTX_MAIN.txt。模型可以用常见 Shell 工具修改文件。运行框架会把修改重新解析成消息，同时固定系统提示和原始任务。此外，它还提供 token 提醒、编辑准入检查和上下文超限恢复。运行框架文档说明了镜像文件、受保护前缀和控制循环。 这改变的是职责分工，而不是取消运行框架。模型决定保留什么；软件仍然要判断修改是否有效、哪些工具可以运行、何时必须停止执行。我们的 Agent Harness 工程指南讨论了这一更广泛的运行时责任。 模型生成的“已获得授权”不能变成真正的授权。权限应保存在可信应用状态中，而不是放在可编辑笔记里。同样，模型对失败测试的重新描述也不能替换实际测试结果。对有实质影响的动作，需要独立的记录。 编辑上下文不会更新模型权重。 项目的上下文内学习流程可以改进 SKILL.md，同时保持权重和运行框架不变；强化学习是另一条路径。技能演化实现明确区分了这些机制。因此，“策略在权重里”只描述一种可能的训练结果，并不是模型每次编辑文件时都会发生的事。 CLM、上下文压缩、记忆文件与 RAG 有何区别？ 替换决策应一次只针对一层能力。服务端上下文压缩可以自动总结早期轮次，也可以由应用主动请求，不一定只是固定阈值脚本。Anthropic 文档同时介绍了自动压缩与按需压缩。持久记忆是另一层：其记忆工具允许应用实现跨对话存储。记忆工具文档说明了这个独立的持久化约定。 不同机制分别解决什么问题 机制主要职责试点要回答的问题 Context Language Model选择并编辑当前工作上下文中的材料。选择性重写能否保留任务所需事实？ 上下文压缩浓缩对话材料，使工作能够继续。摘要能否以较低运维复杂度保留足够信息？ 持久记忆让选定信息跨会话保留。谁可以写入、检索、更正和使其过期？ 检索 / RAG把相关外部证据引入工作上下文。答案是否仍能追溯到权威来源？ 这些职责可以共存。能编辑上下文的智能体仍可能需要检索和持久存储。不要仅因为模型能够删减工具输出，就替换文档索引。我们的 RAG、微调与长上下文比较负责更广泛的架构选择；OpenViking 评估介绍另一个面向文件系统的记忆系统。 CLM 基准测试能证明什么？ 论文支持针对具体工作负载开展实验，而不是支持“所有模型都能直接升级”的结论。 下列 BrowseComp-Plus 结果由作者报告，并非我们的测量。详见论文实验部分和表 2。 选取的结果，各项实验分别列出 实验作者报告的结果如何理解 Qwen3.6-27B，32K 上下文，最多 100 轮准确率 59.4%；相对最强摘要基线提高 11.4%，前缀复用计算口径下 FLOPs 减少 21.5%。只对应这一模型、工作负载和计算成本口径。 Qwen3.5-9B，训练前CLM 准确率 28.8%；摘要基线 34.7%。在此设置中，未经额外训练的上下文编辑更差。 Qwen3.5-9B，强化学习后CLM 准确率 42.5%；摘要基线 42.1%。训练改变了比较结果，不能把训练后成绩包装成开箱即用效果。 相对百分比提升不是百分点提升。FLOPs 不等于货币成本、端到端延迟或完整生产运维成本。我们的决策标准是，在条件一致时比较成功结果，并计入失败运行和恢复的成本。如果短上下文恰好忘掉决定答案是否正确的关键事实，它就不是有价值的优化。 为什么编辑上下文可能降低前缀缓存复用？ 仅统计 token 数会遗漏重要权衡：修改发生的位置很重要。 例如，OpenAI 文档说明，提示缓存命中需要前缀精确匹配。提示缓存指南解释了前缀匹配要求。 Before: [stable instructions] [old investigation] [useful evidence] After: [stable instructions] [shorter summary] [useful evidence] 末尾的有效证据没有变化，但它前面的上下文变了。采用前缀缓存的实现可能需要再次处理这些保留内容。因此，一种减少可见 token 的策略，未必能降低真实请求成本或延迟。应分别测量缓存输入、未缓存输入和输出，而不是根据文件大小估算节省金额。 Suffix Cache Reuse（SCR） 是独立的 SGLang 补丁，用于在编辑后复用保留下来的缓存状态。其文档报告，在对应 BrowseComp-Plus 比较中，以标准服务 65.0% 的经验前缀复用 FLOPs 达到了相当的表现。核查版本的支持目标为 SGLang 0.5.16 和 Qwen3.6-27B，同时需要额外缓存内存。SCR 文档解释了近似处理方式、支持范围和内存分配。 关键在于，保留的状态可能仍包含旧前缀的信息。我们的推论是：从上下文文件删除文字，不代表它对缓存状态的影响也已被清除。 这不是已经证实的数据泄漏，而是应该针对敏感删除和约束变更进行全新预填充测试的理由。不能把复用旧状态视为与重新构建提示完全等价。日志和保存的快照也需要独立的保留规则。 先用普通推理服务评估上下文策略，再把 SCR 作为单独实验组加入。否则，无法分清变化来自更好的上下文决策，还是推理引擎使用了不同的近似机制。 发布的 CLM 代码可以不受限制地商用吗？ 核查的仓库采用 CC BY-NC 4.0。 它不是 MIT 许可，也不是不限制商业用途的发布。固定版本的 LICENSE 写明 Attribution-NonCommercial 4.0。Creative Commons 在 CC BY-NC 4.0 说明页解释了非商业条件。Open Source Definition 不允许禁止商业用途的领域限制。OSI 定义列出了相应要求。 进行技术采购判断时，应将其标为带有非商业限制、公开可获取的研究代码，而不是简单称为“免费开源”。使用前请确认计划中的评估或部署是否获得许可，或取得相应授权。企业内部实验不会仅因为没有对外销售订阅，就自动变成获准用途。模糊情况应交由合格法律顾问评估。 这里评估的是已核查代码的许可，不是在判断研究思想、独立编写的实现、模型权重或其他依赖的权利范围。 如何试用参考实现？ 确认用途获准后，从隔离的开发环境、有效 Harbor 任务和已配置的模型端点开始。不要挂载生产密钥，也不要授予业务系统写权限。下面的提交固定了研究代码版本，但没有固定所有依赖或模型修订。 git clone https://github.com/facebookresearch/context-language-models.git cd context-language-models git checkout --detach 18dc11115f50f261233c5bba7937834491e307e8 python3.12 -m venv .venv . .venv/bin/activate python -m pip install -e . 请使用真实存在的 Harbor 任务目录。示例假设所示地址已有兼容 OpenAI 接口的端点，以 qwen36-27b 为模型别名，并启用了工具调用。根据环境修改路径和端点。“兼容 OpenAI”描述的是接口，并不说明谁在托管模型。 : \"${TASK_DIR:?Set TASK_DIR to an existing Harbor task directory}\" test -d \"$TASK_DIR\" || exit 1 clm-harbor trial start -p \"$TASK_DIR\" -e docker \\ -a clm-minimal -m openai/qwen36-27b \\ --agent-kwarg api_base=http://localhost:8000/v1 这些命令依据文档中的安装和 Harbor 接口编写，我们没有实际执行 CLM 试验。模型服务器必须能被发起模型调用的进程访问。它的上下文容量需要容纳 context_budget_tokens + max_tokens，而不只是可编辑输入预算。请把依赖版本、模型修订、采样设置和端点配置与结果一起保存。 命令行程序成功启动不构成验收证据。还应检查最终任务结果与保留的产物。参考日志包括 usage.json、trajectory.json 和上下文快照。只编辑上下文的操作可能不占任务步骤额度，但仍消耗模型调用。这些调用必须计入实验的真实成本。 能拒绝错误上下文编辑的试点设计 下面是我们建议的评估设计，不是在声称这些都是发布版本内置功能。先选择一个只读工作流，例如调查支持事件并提出诊断建议。不要从能退款、修改权限或部署代码的智能体开始。 对现有压缩方案与 CLM 方案使用相同的模型检查点、初始指令、工具、证据语料和任务集。在实现允许的情况下，保持上下文预算和总执行预算一致，并记录不可避免的差异。进",
  "articleSection": "智能体工程",
  "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": "论文及提交记录明确了研究内容和日期",
      "url": "https://arxiv.org/abs/2609.37725v1"
    },
    {
      "@type": "WebPage",
      "name": "固定版本的仓库说明列出了已发布组件",
      "url": "https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/README.md"
    },
    {
      "@type": "WebPage",
      "name": "运行框架文档说明了镜像文件、受保护前缀和控制循环",
      "url": "https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/clm/clm_harness/README.md"
    },
    {
      "@type": "WebPage",
      "name": "技能演化实现明确区分了这些机制",
      "url": "https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/clm/clm_icl/README.md"
    },
    {
      "@type": "WebPage",
      "name": "Anthropic 文档同时介绍了自动压缩与按需压缩",
      "url": "https://platform.claude.com/docs/en/build-with-claude/compaction"
    },
    {
      "@type": "WebPage",
      "name": "记忆工具文档说明了这个独立的持久化约定",
      "url": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool"
    },
    {
      "@type": "WebPage",
      "name": "提示缓存指南解释了前缀匹配要求",
      "url": "https://developers.openai.com/api/docs/guides/prompt-caching"
    },
    {
      "@type": "WebPage",
      "name": "SCR 文档解释了近似处理方式、支持范围和内存分配",
      "url": "https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/suffix_cache_reuse/README.md"
    },
    {
      "@type": "WebPage",
      "name": "固定版本的 LICENSE 写明 Attribution-NonCommercial 4.0",
      "url": "https://github.com/facebookresearch/context-language-models/blob/18dc11115f50f261233c5bba7937834491e307e8/LICENSE"
    },
    {
      "@type": "WebPage",
      "name": "CC BY-NC 4.0 说明页",
      "url": "https://creativecommons.org/licenses/by-nc/4.0/"
    },
    {
      "@type": "WebPage",
      "name": "OSI 定义列出了相应要求",
      "url": "https://opensource.org/osd"
    },
    {
      "@type": "WebPage",
      "name": "OpenAI 事件报告给出了观察结果及其适用边界",
      "url": "https://alignment.openai.com/misalignment-reports/self-generated-prompt-injections-in-compaction-summaries/"
    }
  ],
  "dateModified": "2026-10-02",
  "datePublished": "2026-10-02",
  "description": "Context Language Models 让模型编辑当前工作上下文。参考实现仍有运行框架负责保护指令、检查预算并验证修改。编辑上下文不等于持久记忆，也不会自动更新模型权重。核查代码使用 CC BY-NC 4.0，并非不限制商业用途的许可。应使用保留测试任务，把新策略与现有压缩方案进行对照，测量证据保留和总成本。Suffix Cache Reuse 应单独测试：删除可见文字，并不能证明其影响已从缓存状态消失。",
  "headline": "Context Language Models 与上下文压缩：应该如何试点？",
  "image": "https://wavect.io/img/blog/headers/header_context-language-models-vs-compaction.svg",
  "inLanguage": "zh",
  "keywords": "Context Language Models, AI 智能体, 上下文工程",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/zh/blog/context-language-models-vs-compaction/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/zh/blog/context-language-models-vs-compaction/",
  "wordCount": 444
}
```

```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/context-language-models-vs-compaction/",
      "name": "Context Language Models 与上下文压缩：应该如何试点？",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Context Language Model 让模型通过编辑文本形式的实时上下文来管理工作材料，再由运行时把修改读取到后续请求中。它不只是外部笔记本，也不只是更大的上下文窗口。"
      },
      "name": "什么是 Context Language Model？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会。核查的参考运行框架仍固定系统提示和任务、检查 token 预算、验证编辑并处理超限。由模型决定保留哪些信息，不能替代应用授权或恢复机制。"
      },
      "name": "Context Language Models 会取消智能体运行框架吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "参考运行框架支持现有模型和兼容工具调用的端点，不要求新架构。但质量取决于模型和任务，未经额外训练的结果不代表每个模型都一定改进。"
      },
      "name": "现有 LLM 能不经训练就使用 CLM 式上下文编辑吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会。文件编辑改变的是后续请求使用的材料。项目的上下文内技能演化保持权重不变，强化学习则是独立的训练过程。"
      },
      "name": "编辑上下文文件会改变模型权重吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "核查仓库使用 CC BY-NC 4.0，包含非商业条件。它不是 MIT 许可，也不是不限制商业用途的发布。请确认预期用途是否获准，或取得相应授权。"
      },
      "name": "Meta 发布的 Context Language Models 代码是无限制开源吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不是。Context Language Models 关注工作上下文编辑；Wavect 另一篇指南中的 Contrastive Language Model CLM-8B 关注候选动作排序。相同缩写不代表同一个项目。"
      },
      "name": "它与 Contrastive Language Model CLM-8B 是同一个系统吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能这样假设。核查的 Suffix Cache Reuse 设计可能保留受旧前缀影响的缓存状态。敏感删除应与全新预填充进行比较，日志和快照也要单独管理。"
      },
      "name": "删除上下文文字就等于从缓存中清除了吗？"
    }
  ]
}
```
