突破 LLM 上下文瓶颈:上下文内存虚拟化 CMV 的设计与实践
研究背景
大语言模型(LLM)在处理代码编写、复杂推理等长时工作会话时,会逐步积累大量核心状态——比如代码库的架构映射、技术选型的权衡决策、项目的编码规范等。这些内容构成了 LLM 对任务的完整心智模型,但构建这一模型需要消耗大量的时间和令牌成本。
当会话积累的内容触达 LLM 的上下文窗口上限时,平台的原生压缩功能会对已有内容做大幅精简。例如 Claude Code 的 /compact 指令曾将 132k 令牌的会话内容压缩至 2.3k 令牌,直接丢弃了 98% 的细节信息,让 LLM 失去了耗时构建的精细理解。而新的会话只能从头重建上下文,这造成了根本性的效率浪费。
现有解决方案均存在明显短板:检索增强生成(RAG)仅能补充文档,无法保留会话状态;MemGPT 仅支持单会话的内存分页,不能跨会话复用;记忆插件只保存摘要,丢失对话细节;而 LongLLMLingua 等提示压缩技术,仅在模型/嵌入层修改上下文表示,未处理原始对话日志的结构冗余。
简单来说,当前 LLM 的上下文管理就像没有保存功能的记事本,写满了只能删掉重来,而开发者亟需一种能'保存进度、复用内容、精简冗余'的上下文管理方案,这正是本研究的核心出发点。
核心设计:CMV 与 DAG 模型
这篇发表于 2026 年 2 月的研究提出了上下文内存虚拟化(CMV) 技术,为 LLM 智能体解决长会话中上下文窗口受限、状态易丢失的问题。其核心借鉴了操作系统虚拟内存技术,抽象掉 LLM 上下文窗口的物理令牌限制,支持按需加载保存的状态。
基于 DAG 的状态模型
作者将会话历史建模为有向无环图 (G=(V, E)),实现了类似 Git 的 LLM 上下文工作流:
- 节点 (v):代表不可变快照,是某一时刻会话 JSONL 日志的完整副本,附带名称、时间戳、令牌数等元数据。
- 有向边 ((v_i, v_j)):代表分支,从快照 (v_i) 派生的独立工作会话,最终生成新快照 (v_j),分支会继承原快照的所有上下文理解。
为了配合这个模型,设计了四大核心原语操作:
- Snapshot:将当前会话生成为不可变快照节点,原会话不修改。
- Branch:从快照生成新会话,默认启用修剪,可添加定向消息。
- Trim:组合快照与分支,一步完成当前会话的修剪并启动新会话。
- Tree:可视化 DAG 结构,实现类似
git log --graph的对话谱系展示。
这种设计让用户可将耗时构建的上下文(如 80k 令牌的架构理解)生成为根快照,基于此派生多个并行分支完成不同任务,无需重复构建上下文。
三阶段结构无损修剪算法
这是 CMV 的另一项核心技术,旨在在完整保留用户消息、助手响应、工具调用元数据原文的前提下,剥离原始工具输出、Base64 图片等机械冗余内容,解决令牌冗余问题,同时保证 API 调用正确性。
算法针对 JSONL 格式的对话日志,分三个顺序阶段处理,核心可配置参数为存根阈值 τ(默认 500 字符,最小 50):
- 阶段 1:压缩边界检测 定位最后一次原生压缩的边界,避免重复处理已精简内容。
- 阶段 2:预边界工具 ID 收集 收集压缩边界前的所有工具使用 ID,为处理孤儿工具结果做准备。
- 阶段 3:流式过滤修剪 按规则处理日志,仅将处理后的内容写入新日志。
关键修剪规则包括:跳过预压缩内容、移除文件历史/队列操作元数据、删除 Base64 图片块、移除非可移植的思考块、对超阈值的工具结果/写入工具输入生成存根、剥离孤儿工具结果、删除 API 使用元数据。
这里有个核心难点:孤儿工具结果。原生压缩可能导致工具调用与结果分离,直接使用会触发 API 验证错误。算法通过阶段 2 收集 ID、阶段 3 剥离对应结果,无需用户干预即可保证 API 正确性。
经济评估与实证分析
以 Claude Opus 4.6 为基准,对 76 个真实编码会话开展了单用户案例研究,评估修剪在提示缓存机制下的经济可行性。
评估基础
- 成本模型:考虑缓存命中率 (h),区分缓存写成本(冷启动)与缓存读成本(稳态),计算冷启动惩罚、每轮节省与盈亏平衡轮数。
- 会话筛选:3 个月的 Claude Code 会话,排除子代理会话、短会话(<10 消息/<5000 令牌),最终 76 个有效会话。
- 会话分类:按工具结果字节占比分为混合工具型(≥15%)(12 个)和会话型(<15%)(64 个)。
核心结果
| 会话类型 | 数量 | 平均令牌减少 | 中位数令牌减少 | 平均盈亏平衡轮数 | 平均上下文令牌 |
|---|---|---|---|---|---|
| 混合工具型 (≥15%) | 12 | 39% | 33% | 10 轮 | 97k |
| 会话型 (<15%) | 64 | 17% | - | 40 轮 | 82k |
| 所有会话 | 76 | 20% | 12% | 35 轮 | 84k |
整体来看,76 个会话平均令牌减少20%,中位数 12%,最高86%。平均盈亏平衡轮数 35 轮,混合工具型会话为核心收益场景。
隐性价值
除了可量化的令牌节省,CMV 的核心价值在于避免上下文重建。平均 84k 令牌的累积状态,从头重建需 10-20 轮用户交互、15-30 分钟,且令牌成本呈二次增长;而从快照分支仅需一次提示加载(84k 令牌缓存写成本$0.53,后续缓存读仅$0.04),这一价值在用户体验中占主导。
局限性与未来方向
当然,方案并非完美。修剪的结构无感知性意味着仅按类型剥离冗余,无语义判断,若剥离的内容被后续推理需要,模型可能产生幻觉或需重新读取。此外,评估目前仅基于单个用户的编码会话,泛化性待验证。
未来工作可以集中在量化修剪对 LLM下游推理准确性的影响,开展多用户评估,以及将 CMV 的 DAG 模型整合到 AIOS(LLM 智能体操作系统)的持久化上下文子系统中。
总结
CMV 为 LLM 会话状态提供了原则性的持久化、版本化管理框架,将短暂的会话数据转化为可复用的资源。它突破了现有'单任务单会话'的范式,证明了在工具层即可有效优化 LLM 上下文管理,无需等待模型层突破或无限扩大上下文窗口。对于追求长时、复杂任务落地的开发者而言,这是一个值得关注的架构级解决方案。

