我用ai读了说明文档问的:
当前问题
Deep Code 目前的长会话压缩(Long Session Compaction)机制会主动破坏 KV Cache 的前缀:
- 将旧消息替换为自然语言摘要 → 改变了消息序列的 token 内容 → 前缀变化 → cache miss
- 插入一条不可见的系统摘要消息 → 改变了消息序列结构 → cache miss
- 每轮发出的消息列表内容都不同 → 缓存无法跨轮复用
结果就是:虽然压缩减少了 prompt token 的绝对数量,但这样的请求都是全新计算(cache miss),在 DeepSeek
的定价下,实际费用反而比保留完整历史并命中缓存更高。
请求改动:
- 在 settings.json 的 schema 中增加 cacheStrategy 字段
- 在 compaction 触发点检查该配置,为 preserve_prefix 时跳过压缩和摘要插入逻辑
- 确保 preserve_prefix 模式下 system prompt 的组装逻辑在每轮调用间保持确定性和一致性
这是ai帮我总结的,当然也清楚表达了我的意思,就是不知道有没有误解你们的机制?如果有,也请原谅,不是很懂agent。
样本: 比如在这个对话中,我没有任何关闭的操作或者切对话,忽然几次把200多k的历史当全新缓存了。不知道是api provider的问题,还是deepcode机制的问题
我的不是deepseek的官方api,是opencode的go订阅。当然我用的v4 flash倒还好,但是如果是glm或者v4 pro,就有点肉痛了。
我用ai读了说明文档问的:
当前问题
Deep Code 目前的长会话压缩(Long Session Compaction)机制会主动破坏 KV Cache 的前缀:
结果就是:虽然压缩减少了 prompt token 的绝对数量,但这样的请求都是全新计算(cache miss),在 DeepSeek
的定价下,实际费用反而比保留完整历史并命中缓存更高。
请求改动:
这是ai帮我总结的,当然也清楚表达了我的意思,就是不知道有没有误解你们的机制?如果有,也请原谅,不是很懂agent。
样本: 比如在这个对话中,我没有任何关闭的操作或者切对话,忽然几次把200多k的历史当全新缓存了。不知道是api provider的问题,还是deepcode机制的问题
我的不是deepseek的官方api,是opencode的go订阅。当然我用的v4 flash倒还好,但是如果是glm或者v4 pro,就有点肉痛了。