实现可调节压缩级别 | AI生成和翻译

Home 2026.05

现在我已经掌握了全局。以下是代码告诉我们的信息:

当前 /compress 行为:

  1. 已支持焦点主题/compress database schema 会引导摘要生成器保留与该主题相关的信息,同时对其他内容进行更激进的压缩。

  2. 两次运行 /compress 确实有效,但适用于迭代更新,而非更激进的压缩
    • 第一次:将中间轮次压缩成摘要
    • 第二次:在开头找到之前的摘要,然后对第一次压缩后累积的新中间内容进行摘要
    • 如果在两次压缩之间没有新增消息,第二次很可能是空操作(已被压缩)
  3. 代码明确警告重复压缩的风险(第 447-450 行):

    if _cc >= 2:
        agent._vprint(
            f"{agent.log_prefix}⚠️ 会话已压缩 {_cc} 次——"
            f"准确性可能下降。建议使用 /new 重新开始。",
        )
    
  4. 压缩激进程度由以下参数控制(config.yaml):

    compression:
      threshold: 0.50      # 何时自动压缩(上下文达到 50%)
      target_ratio: 0.20   # 需保留的最近尾部内容占阈值的比例
      protect_last_n: 20   # 保留未压缩的最新消息数量下限
      protect_first_n: 3   # 始终保留的非系统头部消息数量
    

那么高/中/低级别会有什么效果?

运行两次 /compress 与高/中/低级别的对比:

运行两次 /compress 并不等同于“高”级别压缩。第二次只是用新内容更新摘要——不会进一步压缩已有摘要。

如果您希望单次压缩更激进,则需要高/中/低级别参数。/compress <focus> 功能已提供对非焦点内容更激进压缩的能力,但它是话题特定的,而非通用激进程度。

建议:

添加 /compress high/compress low 将会非常实用。实现方式很直接——只需在单次压缩调用中临时覆盖压缩器的 target_ratioprotect_last_nprotect_first_n 参数即可。

需要我实现这个功能吗?


Back Donate