Skip to content

缓存命中和压缩设置的问题 #176

@qzx1013

Description

@qzx1013

我用ai读了说明文档问的:

当前问题

Deep Code 目前的长会话压缩(Long Session Compaction)机制会主动破坏 KV Cache 的前缀:

  1. 将旧消息替换为自然语言摘要 → 改变了消息序列的 token 内容 → 前缀变化 → cache miss
  2. 插入一条不可见的系统摘要消息 → 改变了消息序列结构 → cache miss
  3. 每轮发出的消息列表内容都不同 → 缓存无法跨轮复用

结果就是:虽然压缩减少了 prompt token 的绝对数量,但这样的请求都是全新计算(cache miss),在 DeepSeek
的定价下,实际费用反而比保留完整历史并命中缓存更高。

请求改动:

  1. 在 settings.json 的 schema 中增加 cacheStrategy 字段
  2. 在 compaction 触发点检查该配置,为 preserve_prefix 时跳过压缩和摘要插入逻辑
  3. 确保 preserve_prefix 模式下 system prompt 的组装逻辑在每轮调用间保持确定性和一致性

这是ai帮我总结的,当然也清楚表达了我的意思,就是不知道有没有误解你们的机制?如果有,也请原谅,不是很懂agent。

样本: 比如在这个对话中,我没有任何关闭的操作或者切对话,忽然几次把200多k的历史当全新缓存了。不知道是api provider的问题,还是deepcode机制的问题

Image Image

我的不是deepseek的官方api,是opencode的go订阅。当然我用的v4 flash倒还好,但是如果是glm或者v4 pro,就有点肉痛了。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions