自由压缩
在长时间的 AI 对话中,上下文会不断膨胀,最终触及模型的 token 上限。NarraFork 提供了手动压缩和自动裁剪两套机制,让你在任意时机管理上下文,既不丢失关键信息,也不被 token 限制打断工作节奏。
手动压缩
你可以在任意对话消息处触发压缩 —— 不限位置、不限时机。
每条消息旁都有一个压缩按钮,点击后 NarraFork 会:
- 调用轻量模型对该消息之前的所有对话历史生成摘要
- 摘要内容包括:已做的决策、当前代码状态、待办事项、关键上下文
- 将摘要作为系统消息插入对话流,后续对话从摘要 + 压缩点之后的消息继续
压缩点之前的原始消息不会被删除,仍然保留在数据库中。你也可以随时编辑摘要内容,或者删除压缩标记来撤销压缩。
如果进行了多次压缩,新的摘要会自动链接前一次的摘要内容,避免上下文在多次压缩中逐渐丢失。
自动上下文裁剪
当你专注于编码不想手动管理上下文时,NarraFork 会自动介入,分两个阶段处理:
第一阶段:裁剪(Prune)
当上下文使用量达到 95% 时触发。系统会自动删除历史消息中的工具调用记录(tool calls),保留对话本体。这是一个低成本的操作,通常不会影响对话的连贯性,用户基本无感知。
裁剪的力度会随上下文压力动态调整 —— 越接近上限,删除的比例越大,但始终保留最近的几条消息不被触碰。
第二阶段:自动压缩(Compact)
当上下文使用量达到 99% 且裁剪已经无法有效释放空间时触发。系统会自动执行一次完整的压缩操作 —— 生成摘要、重启会话,为后续对话腾出空间。
前端会实时显示压缩进度,完成后摘要以可折叠卡片的形式展示在对话流中。
设计思路
两层机制的组合是有意为之的:
| 机制 | 成本 | 触发时机 | 效果 |
|---|---|---|---|
| 裁剪(Prune) | 低,直接删除 | 上下文 ≥ 95% | 温和释放空间,保留对话脉络 |
| 压缩(Compact) | 较高,需要 AI 生成摘要 | 上下文 ≥ 99% 或手动触发 | 大幅释放空间,保留关键信息 |
先用廉价的裁剪争取空间,实在不够了再用压缩兜底。手动压缩则把控制权交给你 —— 你比系统更清楚哪些上下文是重要的,在什么时候压缩最合适。