长会话的成本是"斜着涨"的
多轮对话里,每一轮都要把历史带上 ✔。于是 token 消耗随轮数超线性增长 ✗:
第 20 轮的输入可能是第 2 轮的十几倍 ✔。
所以长会话必须做"摘要频率 + 预算"的联动控制 ✔,否则成本会在长会话里悄悄失控 ✔。
一、先给会话设预算
- 单会话 token 预算(例如 3 万 token 输入累计 ✔);
- 单会话成本上限 ✔;
- 单轮输入上限(防某一轮把历史全带上 ✔)。
预算按会话累计 ✔(不是单轮 ✔),否则长会话永远超不了单轮上限 ✗。
二、摘要触发策略(三种,按代价)
- 按轮数:每 N 轮摘要一次 ✔(简单,但可能浪费 ✔);
- 按 token 占比:历史占预算 > 50% 就摘要 ✔(推荐 ✔);
- 按话题切换:检测到话题变化就摘要上一话题 ✔(效果最好,实现成本高 ✔)。
推荐组合:预算占比触发(主)+ 轮数兜底(防极端 ✔)。
三、摘要要"只留有用的"
摘要必须保留(见多轮上下文那篇 ✔):
- 用户硬约束(金额、时间、偏好 ✔);
- 已确认的事实(不要重复问 ✔);
- 未完成的待办 ✔。
丢弃:寒暄、重复确认、被推翻的中间方案 ✔。
摘要本身也要纳入预算 ✔(否则摘要越滚越大 ✗)。
四、三个联动规则
- 摘要后必须压缩历史 ✔:把被摘要的多轮从上下文里移除 ✔(常见错误:摘要是"加"上去的,历史还留着 ✗);
- 预算接近上限时降级 ✔:减少检索片段数、缩短输出上限 ✔(见降级那篇 ✔);
- 超预算时明确告知 ✔("本会话较长,接下来只保留要点" ✔),而不是静默丢弃 ✗。
五、该观测的四个指标
- 每轮输入 token 增长曲线(应该阶梯下降,而非线性上升 ✔);
- 摘要触发次数/会话 ✔;
- 单会话平均成本与 P95 ✔(长尾会话往往贡献大部分成本 ✔);
- 摘要后的问题率(用户是否因为"忘了"而重复提问 ✔ —— 升高说明摘要丢了关键信息 ✔)。
六、常见反模式
- 摘要只加不删 ✗(成本反而更高 ✔);
- 全局统一阈值 ✗(短会话被无谓摘要,长会话仍超预算 ✔);
- 不做观测 ✗(成本涨了才查,且查不出是哪类会话 ✔);
- 把图片/附件每轮重复带上 ✗(最容易被忽略的成本源 ✔)。
一条判据
把"输入 token 随轮数"画成曲线 ✔,它是否阶梯式(摘要后下降)而不是线性上升 ✔?
线性上升说明摘要没有真正压缩历史 ✗。