dsh-context-keeper:推理規範、上下文預算與長會話交接

前言

在 DeepSeek Harness(DSH)裏跑智能體,常見兩類問題:一是長任務裏推理容易發散或反覆改計劃;二是上下文窗口被佔滿後,要麼硬續聊丟細節,要麼開新會話又要從頭對齊。社區插件 dsh-context-keeper(維護者 Orliba)把「怎麼思考」寫進持久 system prompt,再用本地會話文件做預算觀測和交接包,並附帶離線 trace 分析 CLI。它不會通過截斷或壓低推理來省 token——README 明確說明測量後放棄了「縮短思考」的原目標。

這是什麼

一句話:主機端插件 + 離線分析器。插件在每次請求裏注入一段可配置的推理規則,註冊 /context-watch、/handoff 等命令,並在 UI 上展示官方 contextPressure 投影;CLI 直接讀磁盤上的 DSH 會話文件,彙總思考量與 trace,不調用模型。

分類屬於 DSH 社區目錄中的「工作流」。倉庫:https://github.com/Orliba/dsh-context-keeper;目錄頁:https://www.skillhub.cn/plugins/Orliba/dsh-context-keeper。SkillHub 爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

兼容性與依賴

資料中的聲明如下:

  • DeepSeek Harness:>= 0.2.0-rc.1(見 package.json 的 dsh.engines.dsh)
  • Node.js:>= 22(使用內置 zlib.zstdDecompressSync)
  • 已驗證環境:DSH Desktop 44.7.0(Windows)——回合 footer 的 context 徽標可掛載,/context-watch 與 /handoff 可針對本地會話文件運行

插件依賴公開 API:systemPrompt.section、commands.register、conversation.chat.turnTail / conversation.composer.dock 座位,以及 contextPressure 投影。若未來版本 API 變化,主機端會警告一次並停止註冊,避免拖垮 profile;客戶端在投影不可用時僅不渲染。

核心功能

推理規則(主機端 system prompt)

插件註冊名爲 context-keeper:how-to-reason 的 section,默認 order 650(在 deployment persona 之後、工具目錄之前)。規則共五行,每條對應可觀察行爲,例如:行動前先定目標與驗收方式;無新證據不改結論;推理卡住時去查證據而非空轉;風險與推理深度匹配;明確未知項。完整條文見倉庫 plugin/rule.mjs 與 docs/rule-text.md。

設計選擇是 prompt section 而非流式攔截。README 記錄了對「循環 trace、重複推導、早承諾長尾巴」等假設的實測,均未支撐自動降檔或停輪;且 llm/stream、agent/turn-stopping 等掛載點在本樹中不穩定。section 一次聲明、每輪可見,不依賴事後檢測。

另有一條靜態上下文預算說明寫入 system prompt,故意不寫數字,避免每輪變化破壞 provider 的 prefix cache。

上下文觀測與交接(v0.3 起)

兩個用戶命令,均只讀 DSH 已寫入的會話文件,零次模型調用:

  • /context-watch:佔用率、綠/黃/橙/紅檔位、剩餘空間、每輪增長、最近一次 compaction 回收量
  • /handoff:在 <workspace>/.context-keeper/handoff/ 寫入可攜帶的交接包與完整歸檔;複用 DSH 的 compaction/summary 檢查點作爲早期上下文,近期尾部原文引用

設計說明見倉庫 docs/distill-design-v3.md。

UI:context 徽標與提醒(v0.4 起)

  • 回合 footer(conversation.chat.turnTail 座位):讀取 contextPressure,按佔用率着色——綠 (<50%)、黃 (50–65%)、橙 (65–80%)、紅 (≥80%),並顯示百分比;橙/紅起顯示「建議交接」/「該交接了」類提示,懸停可見完整句子
  • 輸入框下方 dock(conversation.composer.dock):僅在橙/紅時出現,提供 開新會話 按鈕;通過 client Remote 調用 session.create + session.prompt,在新會話中 seed 提示去讀 .context-keeper/handoff 下最新交接包。按鈕不會內聯交接內容(避免再耗 token)。創建後無法自動跳轉到新會話,需從側欄打開——面板中會說明

上述 UI 與提醒不會自動進入模型輸入;除點擊開新會話外不消耗 token。

客戶端實現在 plugin/client.js(package.json 的 dsh.client);無需單獨配置路徑。

離線 CLI:讀「它實際想了什麼」

在已具備本包的前提下,可用 Node 22+ 運行 bin/cli.mjs(無構建步驟、無額外依賴)。README 示例:

# 掃描 DSH home 下所有會話,按思考量排序
node bin/cli.mjs scan "$DSH_HOME/sessions"

# 單會話彙總
node bin/cli.mjs report path/to/session.v4.jsonl.zstd

# 最長 trace
node bin/cli.mjs traces path/to/session.v4.jsonl.zstd --limit 20

安裝與啓用

作爲 DSH 插件安裝(命令來自 README):

dsh plugin --profile <your-profile> add dsh-context-keeper

安裝後重啓該 profile。關閉而不卸載可設配置 enabled: false,或在 patch 中增加:

- id: context-keeper
  disabled: true

配置項(資料原文表格):

Option Default Meaning
enabled true false 時不註冊任何內容
text built-in rule 完全替換規則正文
order 650 section 在組裝 prompt 中的位置
maxChars 2000 在段落邊界截斷

典型用法

  1. 安裝並重啓 profile,正常在長任務會話中工作;觀察每輪 footer 色點與佔用率。
  2. 需要量化時輸入 /context-watch,查看檔位與 headroom,再決定是否交接。
  3. 窗口進入橙/紅,或任務需換會話時運行 /handoff,然後在 dock 提醒裏點 開新會話,在新會話中讓 agent 按 seed 讀取 handoff 目錄繼續。
  4. 事後復盤時,對 session.v4.jsonl.zstd 跑 node bin/cli.mjs report 或 traces,對照插件注入的規則與實際 trace。

DSH 第三方命令名須匹配 ^[a-z][a-z0-9_-]*$,菜單顯示爲命令名本身;可讀性寫在中文單行描述裏,因此菜單中是 /handoff、/context-watch 而非自定義英文標題。

適用場景與注意

適合:需要穩定推理習慣、長會話上下文管理、以及離線審計思考 trace 的 DSH 用戶與插件開發者。

注意:

  • 插件以當前 DSH 進程權限運行;安裝前請自行查看源碼與許可證(資料中爲 MIT,package.json 版本 1.0.0)。
  • 不承諾縮短模型思考;交接與觀測均基於本地會話與官方投影,不替代你們自己的安全與合規審查。
  • systemPrompt.section 缺失時插件 warn 一次並空註冊,其餘 profile 不受影響——開發中曾覆蓋「未聲明服務拋錯」「聲明但未提供的服務永久 pending」等失敗模式並有測試。

結尾

dsh-context-keeper 把推理規範、上下文預算可視化、handoff 與離線分析放在同一倉庫:主機端輕量、可關;客戶端純展示加一個明確的開新會話動作;CLI 補觀測閉環。進一步細節以 README 與 docs/ 爲準。

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

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

小夜