Deep Code CLI上下文窗口完全指南:contextWindow与长会话自动压缩原理
【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手,支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cli
Deep Code CLI是专为 deepseek-v4 模型优化的终端 AI 编码助手。当你和它长时间连续对话时,上下文窗口(contextWindow)和自动压缩(auto-compact)机制决定了 AI 能否"记住"并延续之前的工作。本文将用通俗的方式讲清这两个机制的原理与配置方法,让你的长会话永不失忆。🧠
上下文窗口是什么?为什么长会话需要它
LLM 每次处理请求时,都会把系统提示词、工具定义和历史对话一起"装"进一个有限的容器——这就是上下文窗口,单位是 token。
- 窗口太小:长对话会频繁触顶,AI 表现不稳定;
- 窗口太大:不划算,也可能超出模型实际能力。
Deep Code CLI 针对不同的默认窗口做了智能适配(见 settings.ts):
| 场景 | 默认contextWindow |
|---|---|
| deepseek-v4 系列模型 | 1M(1024 × 1024 tokens) |
| 其他模型 | 256K |
一键配置:contextWindow 与 autoCompactWindow 快速上手
这两个字段都位于settings.json的顶层(配置说明详见 docs/configuration.md):
| 字段 | 作用 | 默认值 |
|---|---|---|
contextWindow | 上下文窗口上限,支持精确 token 数或128K、1M格式 | 按模型自动取值 |
autoCompactWindow | 自动压缩触发阈值 | 上下文窗口的50% |
配置示例(K按 1024、M按 1024² 换算):
{ "contextWindow": "1M", "autoCompactWindow": "512K" }解析优先级为:环境变量CONTEXT_WINDOW→ 项目 settings → 用户 settings → 模型默认值;autoCompactWindow同理(环境变量为AUTO_COMPACT_WINDOW),且最终值不会超过contextWindow(见 settings.ts 解析逻辑)。
自动压缩原理:5 步让长会话"瘦身"
当会话中实际占用的 token 数(activeTokens,来自模型响应的 usage 统计)超过autoCompactWindow阈值时,Deep Code CLI 会在下一次模型调用前自动触发压缩,界面上你会看到一句The conversation is getting long, compacting...(触发点在 session.ts)。
压缩的完整流程如下:
- 筛选消息:取会话中所有"未压缩过"的消息,跳过开头的 system 消息;
- 保留近段:从 2/3 处开始寻找边界,最近约 1/3 的对话保持原文不动,只有更早的 2/3 参与压缩(见 compactSession 实现);
- 生成摘要:把早期对话以 JSONL 格式交给模型,用专门的压缩提示词(getCompactPrompt)让它输出一份关注"用户明确需求 + 此前执行动作"的详细摘要;
- 标记压缩:早期消息打上
compacted标记(技能目录类消息会被跳过保留),并从后续请求中移除; - 插入摘要:在消息序列中插入一条隐藏的系统摘要,内容形如"There are earlier parts of the conversation. Here is a summary: …",模型之后读取的就是这份摘要。
整个压缩会累计到会话用量统计中,activeTokens也会随压缩结果刷新。
压缩之后,会话还能继续吗?
可以,而且几乎无感:
- 最近 1/3 的对话是原文,模型对近期上下文的记忆完整;
- 早期历史由摘要承载,关键需求、决策、已执行操作都被提炼保留;
- 会话文件本身未被删除,配合
/resume命令恢复会话时,压缩状态一并持久化,跨终端重启也有效。
实用建议:如何调整压缩阈值
- 默认值(50%)通常就够了——既留足回答空间,又能尽早瘦身;
- 长文档、多轮重构任务:可适当调低,如
"autoCompactWindow": "384K",让压缩更频繁、每次代价更小; - 短平快的问答:可不调,交给默认策略;
- 调高
contextWindow前,建议确认所用模型的实际窗口能力,避免超出模型上限。
想深入了解会话持久化与恢复,可以继续看 docs/session-persistence.md 与 docs/configuration.md,源码实现集中在 packages/core/src/session.ts 与 packages/core/src/settings.ts。
【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手,支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考