长会话上下文笔记 / 01

长会话的第二次机会 / KV Cache 之后

缓存失效,不必继续照搬过去

当长会话闲置到服务商侧 Prompt/KV Cache 大概率失效,可以趁恢复会话重新整理模型输入:完整历史仍然保留,本轮只带上最新、相关、低噪音的内容。

01 CACHE EXPIRY

缓存的经济收益消失。它不自动说明上下文质量已经变差。

02 每轮按规则重组

每轮选择、更新、去重和裁剪;不调用摘要模型,不改写原意。

03 条件触发压缩

上下文过长或噪音过多时才做摘要;这是有损操作,必须保留回查入口。

01 / 策略实验台

同一段历史,三种进入模型的方式

选择策略,观察闲置恢复这一刻的相对输入量、整理流程、缓存状态和工程权衡。图中比例仅用于解释结构,不是 benchmark。

Selected strategy场景:闲置后恢复

闲置后按需整理

活跃期保持稳定前缀;缓存大概率失效且上下文足够大时,压缩并刷新。

相对输入量 / 示意
0完整历史 = 100

55边界压缩后重建稳定前缀

  • 稳定指令
  • 最新记忆
  • 近期原文
  • 旧噪音
请求流 / 当前回合
01完整 Session 记录
02按规则选择、更新和去重
03满足条件时压缩旧内容
04重建稳定 Prompt → Model
取舍 / 非绝对评分
保真
近期原文高;旧历史通过摘要与指针回读
成本
恢复首轮有压缩成本,后续 N 轮可摊销
噪音
在边界清理重复 Recall 与大块工具输出
漂移
只在边界引入;需以约束与 ID 评测

键盘:在三个策略按钮上使用 ← / →、Home、End 切换。触摸:直接点按。

02 / 双层架构

把“记录”与“思考材料”分开

完整 Session 记录是事实底座;本轮模型输入是在每次调用前临时组装的。压缩只改变本轮输入,不抹掉原始记录。

完整 Session 记录

只追加、不覆盖
E01User / Assistant 事件raw
E02Tool call + resultraw
E03Artifact + pointerexact
E04Timestamp + stable IDexact
职责:完整保留,可精确回读与追溯。
每次调用前
重新组装

本轮模型输入

临时组装
C01稳定指令 + 最新 Memoryfront
C02Session State Capsulestate
C03旧史摘要 + 回读指针lossy
C04近期原文 + 当前输入verbatim
职责:控制本轮成本、噪音、注意力与前缀稳定性。
失败回退:如果整理失败,继续使用上一版模型输入;不要生成一个貌似合理、却无法追溯的替代状态。
1

选择

按当前任务取稳定指令、状态、近期原文与可回读旧史。

2

去重

替换旧 Memory 快照,去掉重复 Recall,而非只是移动消息位置。

3

遮罩

Observation Masking 保留调用轨迹,缩减不再需要的观察正文。

4

裁剪

大块、可重读工具输出留 ID 与指针,不必常驻工作输入。

5

边界压缩

只在闲置、超软上限、版本变化、噪音过高或任务切换时摘要。

03 / TTL 不是传感器

缓存命中,只能事后确认

idle gap 与公开 TTL 只能提示“可能已经 cold”。真正是否命中,要看响应 usage;路由变化等因素也可能造成 miss。

T+00 / active

稳定前缀被连续复用,继续保持它。

T+N / active

每轮按规则重组输入,不必每轮做摘要。

Idle gap / unknown

TTL 提供启发式信号,不是精确失效通知。

Resume / boundary

上下文足够大或很脏时,再压缩并刷新。

关键澄清:缓存失效是经济信号,不等于上下文质量已经下降。有损压缩仍要结合上下文大小、噪音和任务连续性。

OpenAI GPT-5.6+

≥ 30 min

公开 API 默认最低 TTL 30 分钟,可能更久;命中通过 cached_tokens 事后观测。

Anthropic

5 min / 1 h

默认 5 分钟,可选 1 小时;缓存覆盖 tools、system、messages 的完整前缀。

Google Gemini

implicit

隐式缓存默认开启;命中由 usage.total_cached_tokens 事后报告,稳定大块内容宜置前。

Verified case study · 2026-09-04

Hermes Agent 已有 opt-in 的闲置压缩边界

本机源码 9514d354 的定向验证:闲置恢复且上下文高于压缩后 floor 时,可在回答前触发 Compaction;默认仍保持关闭。

Switchcompression.idle_compact_after_seconds

默认 0,即关闭;它是明确 opt-in 行为。

On success旧 System Prompt 失效

从磁盘重载 Memory,刷新动态工具定义与插件 Prompt,再重建完整 Prompt。

Local config160K → 20%

threshold 160K、target_ratio 0.2、lean tail、in-place;未开启 idle compaction。

Directed tests9 项通过

test_idle_compaction.pytest_compaction_prompt_rebuild.py

threshold: 160Ktarget_ratio: 0.2tail: leanmode: in-placeidle: off

证据入口:Hermes idle compaction commit。此处为清楚标注的本机代码与测试案例,不外推为所有 agent 的默认行为。

04 / 框架地图

大家都在调用前整理输入,只是做法不同

比较重点不是“有没有摘要”,而是稳定前缀放在哪里、工作视图何时重建、有损压缩由什么触发。

Letta / MemGPT

VIRTUAL

Memory Blocks + virtual context management;通常仅在 compaction/reset 后刷新 System Prompt 以保缓存;支持 sliding、all、self-compaction。

Google ADK

PREFIX

static_instruction 固定在缓存友好前缀;dynamic instruction 每轮重建并放后部;按事件或 token 压缩。

OpenAI Agents SDK

FILTER

动态 instructions 每个用户 Run 求值;model input filter 可在每次模型调用前改写最终输入;Session 支持 trimming/compaction。

LangChain / LangGraph

MIDDLEWARE

dynamic_prompt / wrap_model_call 可逐模型调用组装;SummarizationMiddleware 按阈值持久压缩。

AutoGen

VIEW

Buffered / TokenLimited Context 在读取时做确定性裁剪。

Anthropic

SERVER

Prompt Caching + Context Editing / 服务端 Compaction;通常接近上限才处理。

CrewAI

FALLBACK

主要把摘要视为上下文溢出时的兜底。

05 / 评测记分卡

别只盯输入 token

策略要用任务结果、保真、时延和跨回合摊销一起判断。下面是基于文中取舍的测试假设,不是实测排名。

观察项完整回放闲置后按需整理每轮主动重组
约束 / ID 保真原文保留最多原文尾部 + 回读指针取决于确定性选择规则
长距离事实召回输入可见但受注意力竞争摘要召回 + 精确回读依赖工作视图选取
摘要漂移无摘要则没有仅边界发生,需监测语义摘要不应每轮执行
恢复首轮成本完整冷输入压缩与重建有一次成本持续承担整理成本
后续 N 轮摊销输入继续增长新稳定前缀可复用效果优先于前缀稳定
噪音 / 注意力竞争最高边界清理 + 近期原文每轮可控制

表格是待验证的工程假设;部署前应在自己的任务分布上测量。

  • 正确率
  • 约束 / ID 保真
  • 工具调用成功率
  • 长距离事实召回
  • 摘要漂移
  • TTFT
  • 输入 / 缓存 token
  • 恢复首轮成本
  • 后续 N 轮摊销成本
每轮按规则重新组装输入;只在上下文过长、过脏或闲置恢复时考虑有损压缩
06 / Primary sources

继续核对原始材料

缓存细节会随服务更新;生产决策应回到最新官方文档与可复现实验。

  1. Hermes Agent — idle compaction commit案例行为与实现入口
  2. OpenAI — Prompt Caching缓存命中与 usage
  3. Anthropic — Prompt CachingTTL 与前缀范围
  4. Anthropic — Context Editing上下文编辑与压缩
  5. Google Gemini — Context Caching隐式缓存与 usage
  6. Google ADK — Context Compaction事件与 token 触发压缩
  7. Letta — Compaction虚拟上下文管理
  8. OpenAI Agents SDK — Sessionstrimming 与 compaction
  9. LangChain — Context Engineering动态 prompt 与 middleware
  10. AutoGen — Model ContextBuffered / TokenLimited Context
  11. Lost in the Middle长上下文中的位置效应
  12. RULER长上下文能力评测
  13. MemGPT分层记忆与虚拟上下文