在对话历史过长导致裁剪无法满足需求时,还有哪些处理方案?请解释 Compaction 的含义,并描述 OpenClaw 框架中 Compaction 策略的具体实现方式。
考察说明
考查对长对话处理机制的理解,并检验对特定框架 Compaction 策略的掌握。
回答思路
- 【回答框架 1】Compaction 即对话压缩,在历史长度超过限制或裁剪效果不佳时,通过将旧消息总结为摘要、提取关键信息并替换原文,从而在保留上下文核心的同时控制 token 占用。
- 【回答框架 2】除裁剪外,常见方案包括:滑动窗口只保留最近 N 条;摘要法定期生成历史摘要;向量检索将历史向量化并只取相关片段;关键信息抽取将对话转为结构化状态或图谱。
- 【回答框架 3】OpenClaw 的 Compaction 策略是当消息长度达到阈值时触发,系统会将较旧的消息发送到 LLM,让其生成摘要,并用摘要替换这些消息,同时保留较新的消息。其默认阈值和方式受模型上下文窗口限制,实际以最新文档为准。
- 【回答框架 4】Compaction 与简单裁剪区别在于:裁剪是硬截断,可能丢失关键事实;Compaction 通过 LLM 主动摘要,能保留高层语义,但可能引入摘要偏差,需权衡。
- 【关键点 1】Compaction 是用摘要替换旧消息以压缩长度,非简单截断。
- 【关键点 2】主要方案包括滑动窗口、摘要、向量检索和状态提取。
- 【关键点 3】OpenClaw 在超阈值时用 LLM 生成旧消息摘要并替换,实现上下文压缩。
- 【关键点 4】具体参数随版本和模型变化,应查阅官方文档。
- 【易错点 1】不能将 Compaction 等同于无损压缩,摘要可能丢失细节或引入幻觉。
- 【易错点 2】不要认为策略在所有模型上都默认开启,需确认配置。
- 【易错点 3】忽视触发条件会导致理解偏差,不同版本阈值可能不同。