|
在长上下文处理的实践中,上下文压缩常面临丢失关键信息的挑战。Manus公司的联合创始人Peak Ji分享了他们的最新实践,提出了一套关于“可逆”与“不可逆”的精妙平衡策略,为上下文管理提供了新的视角。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">01 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">可逆压缩 vs. 不可逆摘要首先,需要更新一个认知:不能笼统地将所有“减小上下文”的操作都称为“压缩”。为了精细化管理,Manus将其严格划分为两种操作。 第一种是压缩 (Compaction),其核心是一种可逆的、无损的外部化。它的原理不是丢弃信息,而是去除上下文中任何可以从外部(如文件系统)重建的信息,用一个轻量级的“指针”来代替。例如,当Agent执行写入文件操作后,可安全地丢弃文件内容,仅保留文件路径作为“指针”,因为内容已存在于文件系统中,随时可以无损恢复。同样,Agent浏览网页后,可在上下文中只保留URL。 第二种是摘要 (Summarization),这是一种有损、不可逆的操作。它只在“压缩”的收益很小时,才作为最后手段启用。为了对冲“不可逆”的风险,Manus提出一个重要实践,即“先卸载,再摘要”。在执行摘要前,系统会先将即将被总结的完整上下文历史写入日志文件,为“不可逆”操作提供了一份“保险”,确保原始信息永远可以回溯。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">02 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">自动化管理策略:警报与分步执行为了自动化管理这两种操作,Manus给出了一套清晰的策略。 首先,需要定义一个触发器。这个触发器基于“上下文腐烂 (Context Rot)”的概念,即模型在上下文超过一定长度后,性能会显著下降。工程上的应对方法是定义一个“前腐烂阈值 (Pre-rot threshold)”。 这个阈值并非模型的物理上限,而是通过测试找到的模型性能开始出现拐点的临界点,通常在128K到200K Tokens之间。它将作为触发所有上下文缩减操作的“警报线”。 当上下文长度触及“警报线”时,系统将分步执行: 1.优先压缩:系统会优先且反复地使用风险最低的“压缩 (Compaction)”操作。上下文会暂时减小,然后继续增长,再次触线,再次压缩。 2.启用摘要:直到上下文历史中大部分内容都已被压缩,新的压缩操作收益甚微时,系统才会启用“摘要 (Summarization)”这个“大招”,一次性总结大段历史,释放大量空间。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">03 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">执行细节一:保留Few-shot示例一个关键原则是,压缩永远不要压缩全部的历史记录,正确的做法是只对最旧的50%历史进行操作。因为上下文历史不仅是“记忆”,更是模型学习如何行动的“范例”。 必须保留最新的、几个工具调用的完整格式。这相当于在不断地“校准”模型的行为,通过新鲜、高质量的Few-shot示例教它如何正确使用工具。 如果将所有历史都压缩了,模型看到的上下文中就全是缺少`content`字段的“残缺”范例。由于模型是强大的模仿者,它可能会错误地认为这种“残缺”格式是正确的,从而在新的工具调用中也只输出这种紧凑格式,导致Agent系统混乱。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">04 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);">执行细节二:确保摘要质量与平滑过渡在执行“摘要”这个有损操作时,有两个关键原则必须遵守。 原则一:摘要必须基于完整版本的数据进行提炼,而不是基于已经被压缩过的数据。如果让模型去总结一堆只剩下“指针”的信息(如文件路径),它无法提炼出有价值的内容。必须找到被压缩前的原始数据,在那个完整版本上进行摘要,才能保证摘要的质量。 原则二:永远要保留最后几个工具调用的完整细节,而不是全部总结掉。对于Agent而言,这最后几个完整的“行动-观察”对是其保持任务连续性的“锚点”,能让模型清晰地知道中断点和当前目标,从而平滑地继续任务。如果将所有内容都总结掉,模型可能会“失忆”,导致行为和对话出现突然的转变。 |