前言¶
在 DeepSeek Harness(DSH)的开发实践中,管理长对话上下文是一个常见痛点。传统的压缩方案往往依赖 LLM 进行总结,这容易导致细节丢失或上下文失真。dsh-context-rollover 旨在解决这一问题,它提供了一套模型驱动的上下文窗口回滚机制。其核心价值在于:在不使用总结器的情况下,让模型在合适的时间点主动结束当前工作上下文,并在新窗口中恢复持久化的状态(笔记)与原始的近期尾部。
核心功能¶
该插件通过 bundle 的方式集成到 DSH 中,主要承担以下职责:
- 接管压缩引擎:提供活动
ctx.compaction引擎,并自动禁用默认的dsh-compaction-basic。 - 模型工具集:向模型暴露四个核心工具:
new_context(请求边界)、get_context_remaining(查询剩余额度)、notes(持久化笔记)、history(历史记录恢复)。 - 本地持久化:将 markdown 格式的笔记写入
<dsh home>/notes/<session id>/目录,不依赖云服务,所有数据保留在本地机器。 - 原始数据保留:保留原始会话事件和 verbatim(逐字)的最近尾部,确保历史不被 LLM 生成的内容覆盖。
安装¶
通过 npm 安装该插件:
dsh plugin --profile <profile> add dsh-context-rollover
如果需要从 GitHub 安装:
dsh plugin --profile <profile> add github:athif23/dsh-context-rollover
安装后,插件的 cordis.patch.yml 会自动应用,禁用 dsh-compaction-basic 并挂载 context-rollover 引擎。由于插件声明了 dsh.bundle.patch,无需额外配置即可生效。
使用方法¶
使用该插件需要遵循特定的流程和预设配置。
1. 选择预设(Web Profile)¶
对于 Web profile,该插件仅在工作在 standard-rollover 预设时可用。默认的 standard 预设不包含回滚工具。
操作步骤:
1. 打开一个新的会话。
2. 在预设选择器中,选择 “Standard + rollover (experimental)”。
3. 在发送第一条消息之前完成选择;一旦会话的第一轮运行开始,预设即被冻结,无法更改。
2. 手动回滚¶
在空闲状态下,可以使用 /compact 命令手动触发一次独立的笔记和尾部回滚。
3. 自动回滚¶
插件内置了压力检测机制。当上下文压力超过 thresholdRatio 阈值时,引擎会自动执行回滚,保留笔记和 verbatim 尾部。
4. 模型驱动回滚¶
模型可以在阶段边界(如从研究阶段过渡到实现阶段)保存笔记,并调用 new_context 工具发起回滚请求,传递简短的 handoff 指令。
注意事项¶
- 对等包解析:插件的
@deepseek-ai/*对等包依赖项从运行主机的安装闭包中解析,而不是从 npm 解析。这意味着你需要确保本地环境已安装相应的 DSH 依赖。 - 依赖要求:插件需要
@deepseek-ai/*的导入在环境中可用。 - Windows 路径问题:如果在 Windows 上从 Git Bash 安装并遇到运行时导入失败,可能是
pnpm生成了损坏的link:junction。需要使用cmd /c mklink /J重建这些链接(详见 GitHub README)。
总结¶
dsh-context-rollover 是一套专注于上下文管理的工具包,它通过将状态管理权交还给模型,配合本地文件系统,实现了无需总结的上下文扩展。适合需要在本地环境进行长期、高精度对话管理的高级用户。
更多信息请参考:GitHub 仓库。