dsh-context-rollover:模型驱动的上下文窗口回滚方案

前言

在 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 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜