跳到主要内容

压缩 (Compaction)

当会话变得太长而无法适应模型的上下文窗口时,Clawdbot 会执行 压缩 (Compaction)。这涉及将旧的消息总结为一段简洁的摘要,以腾出空间进行新的交互。

它是如何工作的?

  1. Token 计数:网关持续估计当前会话中的 Token 数量。
  2. 触发阈值:当 Token 数超过限制(减去预留空间)时,就会触发压缩。
  3. 摘要生成:Clawdbot 要求模型总结会话中最旧的部分。
  4. 上下文替换:总结后的旧消息被删除,并由新的“摘要”块替换。

触发模式

1. 自动压缩 (Auto-Compaction)

这是默认模式。当会话接近上下文限制时,网关会自动运行摘要任务。

2. 手动压缩 (Manual Compaction)

您可以随时通过命令手动触发压缩:

/compact 关注决策和待办问题

您可以提供可选的说明来引导摘要过程。

配置

您可以在 agents.defaults.compaction 下微调压缩行为:

{
agents: {
defaults: {
compaction: {
reserveTokensFloor: 20000, // 为回复预留的最小 Token 数
summarizeWindowTokens: 10000, // 每次压缩要总结的 Token 数
strategy: "summary" // 策略:总结旧消息
}
}
}
}

摘要策略

  • 总结 (Summary):这是最常用的策略。它保留了对话的整体脉络,但丢弃了具体的语气和多余的细节。
  • 丢弃 (Drop):对于某些非关键任务,您可以配置为直接丢弃最旧的消息而不进行总结(通过 strategy: "drop")。

记忆冲刷 (Memory Flush)

在压缩发生 之前,Clawdbot 可以提醒智能体将任何重要的事实保存到其长期记忆中。这确保了即使消息被总结或丢弃,关键信息也不会丢失。

详情请参阅:记忆

注意事项

  • 压缩是不可逆的:一旦消息被总结,原始的逐字记录就会从活跃上下文中移除(虽然它仍保留在网关的会话日志文件中)。
  • 摘要开销:生成摘要本身也会消耗 Token。Clawdbot 使用高效的提示词来最小化此成本。
  • 长短期记忆:压缩处理的是 短期会话上下文。对于跨会话的长期事实,请使用 记忆 (Memory)