一句话定义:上下文折叠(Context Folding)是一类免训练(training-free)的长时智能体上下文管理机制——把久远或冗长的历史压成一个简短的"句柄",需要时再把它完整展开还原。压缩和还原都发生在推理时,不用改模型参数、不用重训。
为什么需要它
一个跑长任务的智能体(agent),每一轮的工具调用、返回结果、中间推理都会往上下文(context)里堆。很快就会出现两个问题:一是撑爆AI 词典:上下文窗口">上下文窗口,二是 token 越多成本越高、模型的注意力也越容易被无关细节稀释。常见的应对是截断(truncation)或者摘要压缩(summarization / compaction),但这两者都是不可逆的:扔掉的历史回不来,摘要写的细节以后再也查不到。任务做到第 50 步突然需要第 3 步某个文件的原始内容时,就只能重做。
打个比方
它很像编辑器里的代码折叠。几千行代码折起来只占一屏,内容还在文件里,点一下展开就又完整回来了。ReFold 这类工作就是把"折叠"搬到对话历史上:一段历史被折成一个带标签的小占位符,比如"第 3—8 轮:检索了 API 文档并修复鉴权 bug",原始逐字内容存在模型之外(文件、日志、外部存储都行);当模型判断"我需要看细节",就主动发起一次展开,把原文取回上下文。
所以它通常包含三件事:切分边界(按轮次或按工具调用分段)、外部留存原文(句柄指向它)、可调用的展开动作(模型自己决定何时展开、展开哪一段)。
和相邻概念的区别
| 机制 | 可逆 | 信息损失 | 谁来决定 | 典型用途 |
|---|---|---|---|---|
| 截断 / 滑动窗口 | 否 | 直接丢弃 | 系统 | 兜底防溢出 |
| 摘要压缩 | 否 | 有损,误差会累积 | 系统或模型 | 长对话 |
| 检索(RAG) | 取回片段 | 取决于切块粒度 | 模型 | 外部知识 |
| 上下文折叠 | 是 | 展开后可达无损 | 模型主动 | 长时智能体 |
关键差别在最后两列:折叠不是"把东西丢掉换成概括",而是"把东西收进抽屉、留个抽屉标签",细节随时可取证。这让它天然适合需要回溯、审计、复现的长链路任务。
对从业者和普通人的意义
做智能体的人:折叠给了你一个成本与保真度之间的旋钮——平时只挂句柄省 token,关键时刻再展开保正确率;同时因为原文被保留,出问题时还能复盘"它当时到底看到了什么"。
普通职场人:你未必关心机制,但会感受到变化——那种"帮你订完机票又接着改行程、还能记得你三天前说过不要红眼航班"的助手,靠的正是这类让长任务不遗忘、不爆窗的上下文管理。具体实现细节和效果以官方页面或论文为准。
