上下文与自动压缩

有效窗口、压缩触发线怎么算,为什么留绝对量而不是百分比,以及默认只有到线这一档。

模型每次请求能装的内容有上限,Klaus 的算法是:

  • 有效窗口 = 模型上下文窗口 − 输出预留(窗口默认按 20 万 token 算,预留默认 2 万,且预留不超过模型允许的单次输出上限)。
  • 压缩触发线 = 有效窗口 − 1.3 万 token 的绝对预留。留绝对量而不是百分比,是因为触发时要腾出的东西(这一轮的回复加摘要请求本身)是固定开销,窗口再大也不会变多;按比例留会让大窗口白白浪费掉几十万 token。
  • 到线:历史被换成摘要,对话继续。

默认就只有「到线」这一档,而这一次是要等的——长会话跑到某个点忽然卡一下再继续,那一下就是它。另外还有两级提前动作,代码里有、但默认关着,界面上也没有开关(只能改引擎配置):

  • 提前轻量清理:到了「触发线 − 有效窗口的 15%」就丢掉早期工具输出的正文。清理后必须降到「触发线 − 有效窗口的 5%」才算够,否则还是升级为完整压缩。
  • 后台预先摘要:到了「触发线 − 有效窗口的 7%」就在后台先把摘要算出来,真到线时不必阻塞等待。

概览面板的用量条对应三档:正常、达到触发线 85% 显示接近上限、到线显示超限。