OpenCode · 第 9 章 上下文压缩与记忆管理


文档摘要

OpenCode · 第 9 章 上下文压缩与记忆管理 章节摘要:再大的模型窗口也会被一次长对话塞满——工具输出、文件内容、来回讨论,token 只增不减。当请求即将超出窗口时,OpenCode 必须做一件事:把旧的对话压缩成一个隐藏的检查点(hidden checkpoint),腾出空间让对话继续。但这件事远比「截断历史」复杂:你不能简单砍掉一段,因为厂商的原生消息(带签名的助手消息、加密的推理内容)一旦跨越压缩边界就会失效——签名校验失败、推理链断裂。OpenCode 的解法是:把旧对话替换成一个结构化的滚动摘要 + token 受限的近期上下文,并保证原生消息不跨边界;压缩完成后立刻开启一个新的上下文纪元(Epoch)。

OpenCode · 第 9 章 上下文压缩与记忆管理

章节摘要:再大的模型窗口也会被一次长对话塞满——工具输出、文件内容、来回讨论,token 只增不减。当请求即将超出窗口时,OpenCode 必须做一件事:把旧的对话压缩成一个隐藏的检查点(hidden checkpoint),腾出空间让对话继续。但这件事远比「截断历史」复杂:你不能简单砍掉一段,因为厂商的原生消息(带签名的助手消息、加密的推理内容)一旦跨越压缩边界就会失效——签名校验失败、推理链断裂。OpenCode 的解法是:把旧对话替换成一个结构化的滚动摘要 + token 受限的近期上下文,并保证原生消息不跨边界;压缩完成后立刻开启一个新的上下文纪元(Epoch)。本章要讲清压缩何时触发(额度估算公式)、检查点长什么样、跨边界的硬约束有哪些,以及它如何与第 8 章的纪元机制衔接。读完本章,你会理解 Agent 在马拉松式长对话里如何「不忘记重点又不撑爆窗口」——这是 Agent 能持续工作的关键能力。

学习目标

阅读完本章,你应当能够:

  1. 复述压缩触发条件:每一回合前如何估算请求 token,何时判定需要压缩(额度估算公式)。
  2. 描述**隐藏检查点(hidden checkpoint)**的结构:结构化滚动摘要 + token 受限的近期上下文,它替换了什么、保留了什么。
  3. 解释跨压缩边界的硬约束:为什么厂商原生消息(签名助手消息、加密推理)不能跨边界,违反了会怎样。
  4. 讲清压缩与**上下文纪元(Epoch)**的衔接:压缩完成为何开启新纪元,这如何保护模型缓存前缀。
  5. 评价这套压缩机制的取舍:它换来了什么(长对话可持续),代价是什么(信息有损)。

核心概念速览

一句话总结:压缩不是截断,而是「摘要 + 近期保留 + 边界守护」的三步——摘要留住重点,近期保留上下文连续,边界守护保证厂商签名与推理不失效,新纪元保证缓存前缀稳定。

子章节导航

01 触发条件与额度估算

讲压缩的触发逻辑:每一回合前如何估算请求 token(系统上下文 + 历史 + 工具描述 + 用户输入),何时判定需要压缩(估算值 > 模型窗口 - max(输出额度, 压缩缓冲))。给出估算公式,并说明为什么留缓冲。

02 隐藏检查点的滚动摘要

讲检查点的结构:它不是一个简单的「总结」,而是「结构化滚动摘要 + token 受限的近期上下文序列化」。重点解释:为什么是滚动(多次压缩时摘要本身也被摘要)、为什么近期上下文要 token 受限(保证新窗口装得下)。

03 跨压缩边界的约束

本章硬核。讲厂商原生消息不能跨压缩边界的根因:带签名的助手消息跨边界后签名校验失败、加密的推理内容跨边界后无法解密、工具结果跨边界可能引用已不存在的工具。说明 OpenCode 如何在压缩时保证这些消息要么完整保留在近期上下文、要么完全进入摘要,绝不切割。

04 压缩与新纪元的衔接

讲压缩完成后立刻开启新上下文纪元(Epoch)的机制。重点解释:为什么必须新纪元(基准文本变了,旧缓存前缀失效)、新纪元如何让模型重新建立稳定缓存、以及这与第 8 章对话中途系统消息的协作关系。

子章节之间的逻辑关系

本章遵循「何时压缩 → 压成什么 → 守住什么 → 之后如何」的机制拆解路径:

触发条件 (01) ──什么时候该压缩 │ ▼ 检查点 (02) ──压缩成什么 │ ▼ 边界约束 (03) ──压缩时不能破坏什么 │ ▼ 新纪元 (04) ──压缩之后如何重启 │ ▼ 第 10 章:压缩之外,如何接入外部能力

四节构成压缩机制的完整画像:触发是入口,检查点是产物,边界约束是硬规则,新纪元是收尾。理解了这四节,你就懂了 Agent 长对话不崩的秘密。

前置知识与后续延伸

前置知识:

  • 第 7 章会话核心(理解「回合」是压缩判断的时机)
  • 第 8 章上下文纪元(理解「新纪元」是什么、为何压缩要触发它)
  • 第 6 章提示缓存(理解「缓存前缀失效」的代价)
  • 对「token」「模型上下文窗口」的基本概念

本章为后续章节奠定的基础:

  • 压缩机制是评价 OpenCode 长对话能力的核心指标
  • 检查点设计为理解「Agent 记忆」提供了工程视角,与第 11 章 Skill(另一种持久化指引)形成对照
  • 边界约束解释了为什么某些厂商特性在长对话里表现不同

发布者: 作者: 灏天文库 转发
评论区 (0)
U