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 倉庫。

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

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

小夜