前言¶
在 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 |
在段落邊界截斷 |
典型用法¶
- 安裝並重啓 profile,正常在長任務會話中工作;觀察每輪 footer 色點與佔用率。
- 需要量化時輸入
/context-watch,查看檔位與 headroom,再決定是否交接。 - 窗口進入橙/紅,或任務需換會話時運行
/handoff,然後在 dock 提醒裏點 開新會話,在新會話中讓 agent 按 seed 讀取 handoff 目錄繼續。 - 事後復盤時,對
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/ 爲準。