flush 和 compaction 是两件事,但常被串起来讲:先 flush 落盘做备份,再 compaction 在内存里压缩。下面分开说明,再回到订单 12345 的例子看 messages 数组实际怎么变化。
1. 概念区分
| 操作 | 目的 | 时机 | 对 messages 数组的影响 |
|---|---|---|---|
| flush | 把内存中的对话/事件持久化,断电不丢 | 每轮 turn 结束、SSE close、显式 /save | 不变(只是另存一份) |
| compaction | 释放上下文窗口(token),让对话能继续 | context 用量逼近上限(CC ~80%)、跨 5min 缓存边界、显式 /compact | 大幅缩短:旧 messages → 1 个 summary block |
记住一句:flush 是写硬盘,compaction 是改 messages 本身。
2. 各栈的 flush
| 栈 | flush 写到哪 | 写什么 |
|---|
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/u013630349/article/details/161520096



