P1-双消息体上下文压缩系统

文档发表:2026-07-07 · 阅读:56 · 更新:2026-08-05

学术论文 · 四川的梦科技有限公司 · 2026-07-27


摘要

大语言模型(LLM)的上下文窗口受限于固定容量,多轮对话中历史消息线性增长将迅速耗尽窗口。现有滑动窗口方案丢失早期关键信息,LLM 摘要方案费用高昂且不可复现,单一系统消息方案破坏前缀缓存。本文提出一种双消息体上下文压缩系统,通过"机械筛"(纯本地确定性转换)将对话历史压缩为两类独立消息体:biscuit(饼干消息,原地追加,保证前缀缓存高命中率)与 fx Grid(事实网格,AI 提取的不可变知识)。系统内置五种工具结果的"温柔/绝对"分类包装盒机制、三按钮渐进压缩控制器、以及自限收敛的 facts 提取流程。在 qqq-shell-v2 IDE 的 12 个月自举开发中,该系统将上下文总 token 数控制在 30K-60K 区间,月均 AI 费用降低 62%,前缀缓存命中率维持 85-90%。


1. 引言

大语言模型驱动的编程助手面临的核心挑战之一是上下文管理。一个典型的 AI 编程会话可能持续数小时、跨越数百轮对话,累积消息量远超模型上下文窗口(如 128K tokens)。若不做压缩,不仅费用线性增长,模型还会因上下文过长而出现"遗忘"现象。

现有方案存在以下不足:

方案核心缺陷
滑动窗口丢弃窗口外的关键信息(文件路径、架构决策)
LLM 摘要额外 API 调用费用,摘要不可复现,两次压缩可能产生不同结果
单一系统消息频繁修改系统消息破坏 LLM 前缀缓存,费用暴增
向量检索需要额外 embedding 模型,检索精度依赖语义匹配质量

本文提出的双消息体上下文压缩系统(biscuit + fx Grid)在以下方面做出创新:

  1. 机械筛:纯本地确定性转换,零网络费用,零模型调用,结果 100% 可复现
  2. 双消息体分离:biscuit(高频追加,低频修改)与 fx Grid(低频追加,永不修改)物理分离,日常压缩不触碰 fx
  3. 五类绝对/十五类温柔包装盒:根据工具结果是否可复现,差异化处理
  4. 三按钮渐进压缩:absolut(纯本地)→ edit only(纯本地)→ only facts(AI 辅助),递进式降级
  5. 自限收敛:120K → 60K → 30K 拒绝,避免过度压缩致信息丢失

2. 系统架构

2.1 消息体模型

系统在 LLM 的 messages 数组中维护两条特殊的系统消息:

  • _biscuit(饼干消息):role='system',存储经机械筛压缩的楼层摘要。对象永不变,仅原地追加内容。每层楼格式:=== F{n} timestamp UTC+8 === → Q 摘要 → 工具包装盒 → A 摘要。
  • _facts(事实网格):role='system',存储经 AI 提取的不可变知识事实。位于 biscuit 之后、当前楼层之前。仅在用户主动触发"only facts"压缩时追加内容。

二者的物理分离带来关键优势:日常自动压缩(每层楼完结触发)只修改 biscuit,fx 不受影响 → LLM 前缀缓存在 fx 之后的段落不受影响。

2.2 机械筛

机械筛(Mechanical Sieve)是系统的核心组件,执行纯本地确定性转换:

  • 输入:conversation[] 消息数组
  • 处理:
  1. 遍历每条消息,按角色分类为 Q(user)、A(assistant)、工具调用
  2. 对 15 种"温柔"工具(read/search/find/list/diag/edit/write/create/delete/revert/timeline_versions/diff_versions/fetch_webpage/search_web),仅保留一行头摘要
  3. 对 5 种"绝对"工具(run_command/generate_image/remove_background/analyze_image/get_vision_context),保留 ╔K...╚ 包裹的完整输出,但在 absolut 压缩时可剥离体部仅留头行
  4. 生成格式:Q: user message (h=N) / 📦 run_command: pwd / A: assistant reply (h=N)
  • 输出:纯文本 biscuit 行

机械筛的确定性保证同一对话无论何时压缩,产生的结果完全一致。

2.3 三按钮压缩控制器

按钮操作费用收益
absolut剥离 ╔K...╚ 体部,保留头行零(纯本地)~40-60% 体积缩减
edit onlyabsolut 基础上仅保留 5 写工具头行零(纯本地)~70-85% 体积缩减
only facts前两步 → 按 F 切半 → h 原料 <32K 拒绝 → 建 _compressFloor → AI 提取 facts → 注入 fx Grid~¥0.30-1.50/次120K → 60K → 30K 自限收敛

2.4 自限收敛机制

only facts 压缩必须满足自限条件:当前 biscuit 上半部分(h 原料)< 32K token 才允许进行。压缩后总 token 数下降至 ~60K。若再次压缩仍 >30K → 拒绝,防止过度压缩导致信息不可用。


3. 包装盒分类器

系统将 20 种工具按结果可复现性分为两类:

类别成员判断依据处理方式
温柔盒 (15种)read/search/find/list/diag/edit/write/create/delete/revert/timeline_versions/diff_versions/fetch_webpage/search_web结果可从磁盘重读、参数重跑或 sha256 引用复现biscuit 仅一行头,原文不进背包
绝对盒 (5种)run_command/generate_image/remove_background/analyze_image/get_vision_context结果不可精确复现(终端输出/模型随机/云端处理)╔K...╚ 包裹完整输出,16K 硬帽

绝对盒的剥离正则:/\n╔K\n[\s\S]*?\n╚(?=\n|$)/g。前瞻 (?=\n|$) 不吞共享 \n,防止相邻盒子 9.5% 漏网。


4. 前缀缓存策略

biscuit 消息对象的不可变性是缓存策略的核心。由于 biscuit 仅追加新行到 content 尾部,LLM 提供商的前缀缓存(prefix cache)机制可以复用 biscuit 之前所有 token 的计算结果。实测数据显示:

  • 常见路径(新楼层追加):前缀缓存命中率 ~85-90%
  • 罕见路径(旧楼层插入导致重排):命中率下降但仍 >50%

相比之下,若将压缩结果直接替换系统消息,每次都会破坏缓存 → 命中率 ~0%。


5. 实验评估

5.1 费用分析

在 qqq-shell-v2 的 12 个月自举开发中:

指标无压缩仅 absolutabsolut + only facts
月均 AI 费用¥850¥420 (-51%)¥320 (-62%)
平均上下文 token85K45K35K
前缀缓存命中率N/A88%85%
信息丢失事件002 (因自限收敛拒绝)

5.2 压缩质量

随机抽取 50 个楼层人工评估:

  • absolut 压缩后,95% 的楼层关键信息(文件路径、变量名、架构决策)完整保留
  • only facts 压缩后,88% 的楼层关键信息可恢复
  • 信息丢失主要集中在"绝对盒"体部被剥离的场景(如长时间 run_command 输出中的关键错误日志)

6. 结论

双消息体上下文压缩系统通过机械筛 + 双消息体分离 + 三按钮渐进压缩,在 LLM 编程助手场景中实现了低费用、可复现、高缓存命中的上下文管理。系统的确定性压缩保证可审计性,自限收敛机制防止过度压缩。未来工作方向包括:基于重要度排序的智能压缩策略、跨楼层语义去重、以及与 embedding 检索的混合方案。


参考文献

[1] Brown, T. et al. "Language Models are Few-Shot Learners." NeurIPS 2020. [2] Touvron, H. et al. "LLaMA: Open and Efficient Foundation Language Models." 2023. [3] Beltagy, I. et al. "Longformer: The Long-Document Transformer." 2020. [4] qqq-shell-v2 架构文档 §56 上下文压缩, 2026.