dsh-rollover:上下文快滿時存接續前情,換段後注入一次

前言

在 DeepSeek Harness(DSH)裏做長對話或複雜任務時,上下文窗口遲早會頂滿。常見出路只有兩條:讓系統壓縮舊內容,細節被摘要抹平,模型像「換了個人」;或者開新會話,下一段完全不知道剛纔聊到哪。社區插件 dsh-rollover(維護者 ZyxQl-Ala,分類:記憶)在這兩條路之間補了一環:在窗口快滿前把「上一段發生了什麼」寫成《接續前情》,換到新的一段會話時再注入一次,讓同一條任務線能接下去。

這是什麼

dsh-rollover 是 DSH 的上下文滾段插件。它監聽本地會話投影裏的佔用壓力(contextPressure),在可配置的閾值處提醒或自動存檔,並把 handoff 存到本地狀態目錄;當檢測到活躍會話切換到新的 session 時,把上一段的《接續前情》只注入一次,避免重複刷屏。

當前版本 0.2.0(MIT 許可證),要求 DSH >=0.2.1-rc.1 <0.3.0-0、Node >=20。純本地運行,無網絡、無遙測;會話識別依賴 DSH 自帶的投影緩存(storages/session_projcache/sessions),不申請額外權限。

它解決什麼問題

README 裏把滿窗後的兩種糟糕結局寫得很直白:壓縮丟細節,或新會話斷片。本插件的流程可以概括爲三步:

  1. 盯佔用:超過 warnAt(默認 45%)在系統提示裏提醒「順手寫進記憶」;超過 threshold(默認 60%)提醒「該滾段了」。
  2. 存接續前情:工具 rollover_handoff 把最近 keepTurns 輪對話提煉成《接續前情》,寫入 <state>/rollover/handoffs/<sessionId>.md。
  3. 接住下一段:若同時安裝 dsh-decay-memory,可一併寫入 📌 永久記憶;換 session 後由插件把 handoff 自動注入一次。

從 0.2.0 起還支持自動存檔:佔用達到 autoAt(默認 60%)時插件自行生成 handoff(不依賴模型調工具),同一會話有 10 分鐘冷卻(autoCooldownMs)。

核心工具與配置

插件向 Harness 暴露兩個工具:

工具 作用
rollover_status 當前佔用比例、是否該滾段(fine / getting-full / should-roll)
rollover_handoff 生成並保存《接續前情》,可附一句留給下一段的話

默認配置如下(可在設置頁或 API 修改):

{
  "warnAt": 0.45,
  "threshold": 0.6,
  "keepTurns": 12,
  "maxChars": 5000,
  "injectIntoMemory": true,
  "stateDir": ""
}

stateDir 爲空時使用 $DSH_HOME/rollover。相關文件:

$DSH_HOME/rollover/handoffs/<sessionId>.md   接續前情正文
$DSH_HOME/rollover/state.json                已注入記錄
$DSH_HOME/decay-memory/memory.json           可選:與 dsh-decay-memory 聯用時

與 dsh-decay-memory 的配合

  • 單獨使用:提醒、生成 handoff 文件;新段注入依賴插件自己的 prompt section。
  • 與 dsh-decay-memory 聯用:handoff 同時進入 📌 永久記憶,換段後與既有記憶一起注入,銜接更穩。

設置頁與 HTTP 接口(0.2.0+)

插件自帶設置 UI:

  • DSH 設置面板左側新增「上下文滾段」一節(client 通過 iframe 嵌 host 頁面)。
  • 獨立頁:<你的 DSH 地址>/rollover。

頁面上可查看當前會話佔用、handoff 存檔(自動/手動、已注入/待注入),調整閾值與冷卻,或點擊「立即生成接續前情」。

同源 API(需 DSH 登錄態):

GET  /rollover/api/state
POST /rollover/api/config   { warnAt, threshold, autoAt, autoCooldownMs, keepTurns, maxChars, autoHandoff, injectIntoMemory }
POST /rollover/api/action   { op: "handoff" | "reset-injected" | "delete-handoff", ... }

安裝與啓用

SkillHub 目錄頁給出的安裝說明是交給 DSH 的自然語言指令,而非單獨的 shell 一行命令。在 Harness 中可按頁面「發送給 DeepSeek Harness 安裝」區塊複製:

請安裝 DSH 插件 ZyxQl-Ala/dsh-rollover。

安裝前請確認本機 DSH 與 Node 版本滿足 package.json 中的 engines;插件以當前 DSH 進程權限讀寫 $DSH_HOME 下的 rollover(及可選的 decay-memory)數據,安裝前應自行查看 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

典型用法

  1. 安裝並啓用插件後,長對話過程中可定期調用 rollover_status,確認處於 fine、getting-full 還是 should-roll。
  2. 在系統提示出現滾段提醒,或佔用達到閾值時,調用 rollover_handoff(或依賴 0.2.0 的自動存檔),生成《接續前情》;需要時可寫一句給「下一段的自己」。
  3. 上下文滿窗後開啓新 session(或 DSH 切換到新段),插件檢測到 session 變化,將上一段 handoff 注入一次;若需重新注入,可通過設置頁或 POST /rollover/api/action 的 reset-injected 等操作管理狀態。

適用場景與注意

適合需要多段銜接的長任務:代碼重構分多次聊、調研筆記跨會話、或不想完全依賴壓縮摘要時,用本地 handoff 保留「接哪裏、剩什麼」。

注意:handoff 質量取決於提煉邏輯與 keepTurns / maxChars;自動存檔有冷卻,避免同一會話內反覆寫盤。與 decay-memory 聯用時,📌 條目會長期佔用記憶槽,可按需關閉 injectIntoMemory 或只保留文件 handoff。

結尾

dsh-rollover 把「快滿窗 → 存接續前情 → 新段注入一次」做成可配置、可可視化的本地流程,減輕壓縮與新會話之間的斷層。目錄與版本信息見 SkillHub:dsh-rollover,源碼與完整 README 見 GitHub:ZyxQl-Ala/dsh-rollover。

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

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

小夜