上下文管理

会话上下文的压缩、重置、归档与恢复——让 AI 保持高效响应。

为什么需要上下文管理

LLM 有上下文窗口限制。随着对话进行,历史消息越来越多,会导致:

  • 响应变慢 — 输入 Token 越多,LLM 首字延迟 (TTFT) 越高
  • 成本增加 — 每轮对话都需要发送完整历史,Token 消耗持续增长
  • 信息淹没 — 过多的历史可能让 LLM "迷失",忽略最新的重要信息

OpenVort 提供四种上下文管理操作来解决这些问题。

四种操作

操作效果适用场景
压缩 (Compact)用 LLM 生成旧消息摘要 + 保留最近 10 条对话太长但不想丢失上下文
重置 (Reset)清空活跃上下文,旧消息归档保留切换话题,但保留历史可查
归档浏览分页查看被重置/压缩的历史消息回顾之前的对话内容
恢复 (Restore)把归档消息合并回活跃上下文需要继续之前的话题

压缩 (Compact)

压缩是最常用的操作。它用 LLM 将旧消息总结为一段摘要,保留最近的 10 条消息,大幅减少上下文长度。

手动压缩

在聊天中发送 /compact 命令:

/compact

> 已压缩: 38 条 → 11 条(摘要 + 最近 10 条)

自动压缩

系统会在每轮 LLM 调用前估算上下文 Token 数。当超过约 70000 Token 时,自动触发压缩。

压缩后的上下文结构

压缩前: [msg1, msg2, ..., msg38]
压缩后: [摘要消息, msg29, msg30, ..., msg38]
         ↑ LLM生成的摘要     ↑ 保留最近10条

摘要会保留关键信息:用户需求、重要决策、工具调用结果等。如果 LLM 摘要生成失败,系统会回退到简单文本摘要(截取每条消息的前 200 字)。

重置 (Reset)

重置比压缩更"干净"——直接清空活跃上下文,从零开始。但旧消息不会删除,而是移入归档。

使用方式

  • 在 IM 中发送 /new/reset
  • 在 Web 面板中点击"重置上下文"按钮

重置后的效果

重置前:
  活跃消息: [msg1, msg2, ..., msg25]
  归档消息: []

重置后:
  活跃消息: [](空白开始)
  归档消息: [msg1, msg2, ..., msg25](可查看、可恢复)

归档浏览

重置后的历史消息不会丢失。在 Web 面板中可以分页浏览归档消息,查看之前的对话内容。

多次重置会累积归档——每次重置的消息追加到归档末尾。

恢复 (Restore)

如果需要继续之前被重置的话题,可以将归档消息合并回活跃上下文。

恢复后归档会被清空,所有消息回到活跃状态。

恢复会导致上下文变长。如果归档消息很多,恢复后可能需要执行一次压缩。

消息裁剪

除了压缩和重置,系统还有一个自动裁剪机制:当活跃消息超过 50 条时,自动丢弃最旧的消息。

裁剪时会注意保持工具调用的完整性——不会只保留 tool_use 而丢失对应的 tool_result,避免 LLM 混淆。

最佳实践

场景推荐操作
对话变慢但话题还在继续/compact 压缩
要换一个全新话题/new 重置
想回顾之前聊过什么Web 面板查看归档
需要回到之前的话题恢复上下文
日常短对话不需要任何操作,系统自动管理