在构建Agent时,历史对话超出大语言模型(LLM)的Max Tokens是一个非常经典的工程挑战。即使现在的模型支持长上下文(如128K甚至1M),无限制地输入完整历史依然会导致API成本剧增、响应变慢,以及“迷失在中间(Lost in the middle)”(模型忽略长文本中间的信息)的问题。 为了解决这个问题,我会采取一种多层级、混合式的记忆折叠与压缩策略。以下是具体的实施方案,从简单到高级分为五类: 1. 滚动摘要(Rolling Summarization)—— 核心折叠策略 这是最直接的“记忆折叠”方法,将过去的原始对话转化为高信息密度的摘要。 基础滚动摘要: 当对话Token达到设定的阈值(如Max Tokens的80%)时,触发摘要机制。 保留系统设定(System Prompt)和最近的 $N$ 轮对话(保证短期上下文的连贯性)。 将更早的对话交给LLM生成一段摘要。 新的上下文结构: 。 递归/分层摘要(Hierarchical Summarization): 随着时间推移,“摘要的摘要”也会变长。可以采用分级机制:将10轮对话压缩成“段落摘要”,将10个“...