
DeepSeek API 断网那天,本地模型顶上——但会话上下文超出本地模型上限,云端压缩又用不了。解法:不需要压缩,直接裁剪。
缘起
DSH 的上下文压缩机制依赖大模型来概括精简上下文。云端模型不可用时,压缩机制就瘫了。
关键洞察来自一句提醒:"你需要的不是上下文压缩,而是上下文裁剪。不需要大模型参与,只需要剪掉超出限额的部分。"
插件核心逻辑
不靠大模型,纯脚本操作:
- 保留头部系统提示和工具集
- 从最古老的对话部分开始,成对剪掉(一条用户消息 + 一串模型回复为一对)
- 原则上保留最后一对对话,保证会话可以延续
后续踩出的两个坑
坑一:头部预留(roomhead)吞掉一半上下文。 DSH v0.1.7-rc 为配合云端 API 引入了固定 64K 的头部预留,本地模型的 128K 上下文顿时只有一半能用——上下文还没填到 50% 就触发压缩。插件补了上下文计算调优功能。
坑二:内置 prune 会剪掉最后一组会话。 模型读进一个大文件 → 触发 prune → 刚读的代码被剪掉 → 模型再读同一个文件 → 死循环。插件又补了 prune 调优。
安装
dsh plugin --profile web add dsh-command-context-trim一句话
本地模型跑 agent 时上下文超限?不需要云端模型做压缩,纯脚本裁剪就能解决——还比压缩省 token。