前言¶
在 DeepSeek Harness(DSH)裏跑長會話時,上下文遲早會頂到窗口上限。官方自帶的壓縮能力能續命,但「只用官方摘要器」和「偶爾想本地快速摺頁、不想花 token」往往不能在同一條策略裏切換;模型側一旦限流或密鑰失效,自動壓縮也可能卡在單一路徑上。社區插件 dsh-compact-manager(維護者 tony92921,分類:工作流)的定位是接管上下文壓縮:手動與自動兩條路徑都支持模型壓縮和機械摺頁壓縮,並在模型路徑上提供備用模型與救援策略。摺頁算法取自 dsh-ledger-compact,機械路徑不髮網絡請求、不消耗 token。
這是什麼¶
dsh-compact-manager 包裹 live 的 @deepseek-ai/dsh-compaction-basic 引擎實例,在 Host 側統一策略選擇與壓縮事務,在 UI 側提供「壓縮管理」設置頁和兩個手動按鈕。它解決的是:在同一套官方壓縮事務與 surface 語義下,按需選擇「調模型摘要」或「本地摺頁成短卡」,並配置自動觸發閾值、雙模型回退與入境定形等周邊能力。
- 目錄頁:https://www.skillhub.cn/plugins/tony92921/dsh-compact-manager
- 源碼與說明:https://github.com/tony92921/dsh-compact-manager
- 當前 package 版本(資料原文):1.0.1,MIT 許可
兩種壓縮引擎¶
壓縮引擎決定誰來做壓縮;兩個手動按鈕與 /compact 都跟隨它:
| 引擎 | 自動壓力/溢出壓縮 | 手動按鈕、/compact、/fast-compact |
|---|---|---|
| 機械 | 機械摺頁 | 機械摺頁 |
| 模型 | 按壓縮方式 | 備用模型 1,失敗切備用模型 2 |
模型壓縮由配置的壓縮模型產出摘要。支持備用模型兜底(官方摘要器優先、連續失敗後切換),也支持直接使用備用模型,並可再掛備用模型 2 做二重兜底。
機械摺頁壓縮把舊歷史換成短卡,速度以毫秒計。摺頁同樣走官方壓縮事務,日誌裏留下與模型路徑相同的標記三元組與 surface op;原始事件仍以原序號留在只追加的會話日誌裏,按 seq 可回溯。
壓縮方式只在模型引擎下有意義:
- 官方優先,失敗後救援(
rescue)— 先由官方摘要器處理,連續失敗rescueAfterFailures次後才交給備用模型 1。 - 直接使用備用模型(
direct)— 自動壓縮直接走備用模型 1,官方摘要器不參與。
兩條路徑上,備用模型 1 失敗都會自動換成備用模型 2(若已配置)。回退發生在 summarize 回調內部,避免部分提交留下需清理的標記對。路由租約(routes.js)激活時會禁用回退,以免換模型破壞計價鎖定。
命令行的 ledger / saviour 會覆蓋上述一切(包括 replaceDefault),避免配置卡住時沒有出口。
手動操作與命令¶
聊天輸入框上方原生上下文彈層裏有兩個按鈕:
- 手動模型壓縮 — 模型路徑(原有行爲)。
- 手動機械壓縮 — 本地摺頁,不調模型、不花 token;未配置壓縮模型時仍可用。
「手動機械壓縮」默認需點兩次確認(4 秒後自動還原);可在設置裏關閉「摺頁二次確認」改爲單擊執行。圓環上下文按鈕僅用於查看明細;原先的長按直接壓縮手勢已移除,壓縮只能從上述兩個按鈕或命令發起。
常用命令:
/fast-compact # 按 engine 設置折一次
/fast-compact ledger # 強制機械摺頁(不調模型)
/fast-compact saviour # 交給壓縮模型
/fast-compact status # 當前設置與可用性
官方 @deepseek-ai/dsh-compaction 沒有 undo/revert,摺頁後 UI 上不能「展開還原」;但 compaction/summary 的 shadowedSeqs 記錄了被替換的事件序號,原文仍在只追加的會話日誌中,可按 seq 從日誌文件讀取。
設置頁:壓縮管理¶
路徑:設置 → 壓縮管理,四個 tab:
- 模型 — 壓縮方式、救援前失敗次數、備用模型 1 與 2;底部可對兩個備用模型各發一次與真實壓縮同形狀的連通性測試(可選輸入檔位 200 / 2k / 100k / 300k / 900k 字符量級)。
- 自動壓縮 — 引擎、
thresholdOverride、觸發線比例(默認語境下與 compaction-basic 一致)、headroom(默認 65536)、retain;頁面向 Host 查詢算出的實際觸發點,保證與引擎一致。 - 機械 — 工具結果定形閾值、密圖預算與節省比例、摺頁二次確認。
- 診斷 — 模型壓縮 / 非模型壓縮兩組累計計數(本進程內,宿主重啓歸零)及命令提示。
改動無保存按鈕,約 250ms 防抖後自動寫入;Host 拒絕時會顯示紅色「未保存」條。
入境定形只裁當前回合、緊鄰上一步且尚未發送的大 tool_result;已發出去的節點不改寫,以免破壞 provider 緩存前綴。
安裝與啓用¶
安裝命令(須與資料原文一致):
dsh plugin add dsh-compact-manager
從本地源碼鏈接:
dsh plugin --profile <名稱> add link:/path/to/dsh-compact-manager
裝好後在 設置 → 壓縮管理 配置。不要卸載 compaction-basic — 官方事務標記、surface op 與穩定性校驗仍來自該包。
運行環境(package.json):Node >=24;DSH 版本需滿足 >=0.2.0-rc.1 等 peer 約束,並與 @deepseek-ai/dsh-compaction、dsh-agent 等配套包版本區間一致。插件以當前 DSH 進程權限運行,安裝前請自行審閱源碼與 MIT/NOTICE 中的第三方聲明。
適用場景與注意¶
適合需要在同一 Host 裏切換模型摘要與零 token 摺頁、爲自動壓縮配置雙模型回退或 rescue/direct 策略、並在壓測長上下文前用分級連通性測試驗證備用模型的開發者。
注意:
- 引擎選擇會同步寫入
replaceDefault與engine,避免自相矛盾;半套備用模型(有 provider 無 model)在保存時會被拒絕。 - 保留比例若接近觸發線,頁面可能自動下調 retain,否則
selectCompactableRange可能永遠找不到可壓區域。 - SkillHub 目錄爲社區插件索引,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以目錄頁爲準(資料中 GitHub stars:1)。
結尾¶
dsh-compact-manager 把 DSH 上下文壓縮從「單一路徑」擴展爲可配置的模型 + 機械雙引擎,並在日誌語義上與官方 compaction 對齊,便於歷史 UI 與診斷。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub 倉庫。