前言¶
在 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 倉庫。