Skip to content

自由压缩

在长时间的 AI 对话中,上下文会不断膨胀,最终触及模型的 token 上限。NarraFork 提供了手动压缩和自动裁剪两套机制,让你在任意时机管理上下文,既不丢失关键信息,也不被 token 限制打断工作节奏。

手动压缩

你可以在任意对话消息处触发压缩 —— 不限位置、不限时机。

每条消息旁都有一个压缩按钮,点击后 NarraFork 会:

  1. 调用轻量模型对该消息之前的所有对话历史生成摘要
  2. 摘要内容包括:已做的决策、当前代码状态、待办事项、关键上下文
  3. 将摘要作为系统消息插入对话流,后续对话从摘要 + 压缩点之后的消息继续

压缩点之前的原始消息不会被删除,仍然保留在数据库中。你也可以随时编辑摘要内容,或者删除压缩标记来撤销压缩。

如果进行了多次压缩,新的摘要会自动链接前一次的摘要内容,避免上下文在多次压缩中逐渐丢失。

自动上下文裁剪

当你专注于编码不想手动管理上下文时,NarraFork 会自动介入,分两个阶段处理:

第一阶段:裁剪(Prune)

当上下文使用量达到 95% 时触发。系统会自动删除历史消息中的工具调用记录(tool calls),保留对话本体。这是一个低成本的操作,通常不会影响对话的连贯性,用户基本无感知。

裁剪的力度会随上下文压力动态调整 —— 越接近上限,删除的比例越大,但始终保留最近的几条消息不被触碰。

第二阶段:自动压缩(Compact)

当上下文使用量达到 99% 且裁剪已经无法有效释放空间时触发。系统会自动执行一次完整的压缩操作 —— 生成摘要、重启会话,为后续对话腾出空间。

前端会实时显示压缩进度,完成后摘要以可折叠卡片的形式展示在对话流中。

设计思路

两层机制的组合是有意为之的:

机制成本触发时机效果
裁剪(Prune)低,直接删除上下文 ≥ 95%温和释放空间,保留对话脉络
压缩(Compact)较高,需要 AI 生成摘要上下文 ≥ 99% 或手动触发大幅释放空间,保留关键信息

先用廉价的裁剪争取空间,实在不够了再用压缩兜底。手动压缩则把控制权交给你 —— 你比系统更清楚哪些上下文是重要的,在什么时候压缩最合适。