前言¶
在 DeepSeek Harness(DSH)裏跑長會話時,上下文窗口會被歷史消息、工具調用與 checkpoint 逐步佔滿。官方 Basic compaction 會在接近窗口上限時做摘要與裁剪;默認閾值與輸出預留的計算方式,在模型允許較大 max_tokens 時可能偏早觸發 proactive 壓縮。若你仍想用 Basic 自帶的 summarizer、/compact、溢出恢復與 token 計量,只想改「何時壓、壓哪一段、失敗怎麼退避」,而不換 preset、不另裝一套 compaction 引擎,社區插件 dsh-compaction-policy(維護者 huohua-dev,分類:工作流)提供的是一條全局策略層路徑。
下面介紹它的定位、默認行爲、安裝方式與配置要點。事實以 GitHub 倉庫 README 與 v0.2.2 發佈說明爲準;插件處於 Experimental 階段,README 明確說明未證明原生 Windows / 真實模型 GUI 會話下的摘要質量。
這是什麼¶
dsh-compaction-policy 是面向 DeepSeek Harness 的輕量 全局 compaction 策略插件:在指紋校驗通過的官方 Basic 實現上,替換 proactive 預算、區間選擇與無進展重試守衛;保留 Basic 原生壓力機制、checkpoint、工具配對、token meter、UI 事件協議、原生 /compact 與 overflow recovery。它不註冊 preset、不過濾 preset 註冊表,也不新增自動 compaction 監聽。
安裝後默認 bundle 只增加一個根插件條目 compaction-policy-global(dsh-compaction-policy/global),作用於同一 Cordis runtime 內符合條件的官方 Basic 實例(含普通 preset)。自定義 backend、子類或覆寫方法的實例會被跳過;無 compaction 的 minimal 組合不受影響。「Global」不表示機器上所有 DSH 進程或 profile。
宿主兼容性(README):bundle 聲明加載 DSH ^0.2.1-rc.1(0.2.x 含後續 RC)與 Cordis 4.0.x;僅當五組 Basic 方法指紋與已驗證實現一致時策略纔會激活;無法識別的宿主構建會保持加載但處於 inert 狀態,而不是啓動失敗。
核心功能¶
默認策略:90% 閾值,避免輸出預留被重複扣減¶
相對 stock Basic,插件用 thresholdRatio、outputReserveCap、headroomTokens 等字段重算 proactive 閾值。默認 thresholdRatio: 0.9、outputReserveCap: 0、headroomTokens: 0,即 proactive 閾值爲 floor(W × 0.9),剩餘約 10% 作爲餘量且不會二次扣減。
README 給出的對比算例(算術說明,非性能 benchmark):窗口 262,144 token、輸出上限 131,072 時,stock 閾值約 65,536,策略下約 235,929。
公式要點(與 README 一致):
reservedOutput = min(requestMaxTokens, outputReserveCap)
policy threshold = floor(min(W × thresholdRatio,
W − reservedOutput − headroomTokens))
retentionTarget = floor((W − reservedOutput) × retainRatio)
pruneToolResults: false(默認) 僅作用於新的 proactive-pressure 路徑:該路徑不先 prune 工具結果,舊內容經 Basic 摘要;不關閉原生 pruner,也不改變 stock 模式、手動或 confirmed-overflow 行爲。
README 提醒:輸出 cap 不等於保證可用空間;90% 滿的 prompt 與滿額 completion 在固定窗口內無法共存,適配層/服務端仍需約束剩餘容量;本插件不是 HTTP 輸出預算鉗制。
區間選擇與失敗守衛¶
- 保留近期歷史:軟目標默認
retainRatio: 0.16(相對W − reservedOutput);整段 message 與 tool-call/result 單元保持原子性,最新單元即使大於目標也保留原文。 - 選段邏輯:允許較舊的大消息進入摘要範圍,避免反覆只摘要極小 checkpoint;system 節點受保護,後續 system 節點作爲選段屏障。
- 最小選段: proactive 摘要前,選中範圍內至少 2,048 非 checkpoint token(
minFreshTokens默認 2048)。 - 單步事務:每個壓力步最多 一次摘要事務,不立刻再摘要剛寫入的 checkpoint。
- 失敗退避:失敗後退避 60s、120s、240s… 最長 10 分鐘;到期後在下次壓力檢查允許一次探測,非後臺模型調用;候選 materially 變化可更早重試,無關 tail 追加不會。
- 原生路徑保留:手動與 confirmed-overflow 路徑、重試上限、事務完成與 durable-progress 檢查仍走原生邏輯,繞過 proactive guard。
安裝與啓用¶
分發走 GitHub,非 npm。安裝 v0.2.2 標籤:
github:huohua-dev/dsh-compaction-policy#v0.2.2
Desktop 託管 profile¶
- 在 Desktop 插件管理 UI 中添加或更新上述 GitHub 源。
- 完全退出並重啓 Desktop(刷新頁面或 reload profile 不能替代;README 記錄過舊進程 import 失敗需全量重啓才恢復)。
- 繼續使用原有 preset,無需專用 preset。
- 在會話中執行
/compaction-policy-global status查看覆蓋範圍與生效策略。
Desktop 託管環境下 不要 用 CLI 改插件;README 明確拒絕 --profile desktop 類 CLI 變通。
非 Electron 託管的 web profile¶
僅適用於 不由 Desktop/Electron 管理 的 web profile:
dsh plugin --profile web add github:huohua-dev/dsh-compaction-policy#v0.2.2
然後 reload/restart 對應 host。此 CLI 路徑 不是 Desktop 的替代安裝方式。
安裝不會改變當前默認 provider 與 preset,也不會重寫主請求的 output limit、reasoning effort 或 token 記賬。
典型用法:配置全局條目¶
對用戶 profile 中 compaction-policy-global 做 override,策略字段放在 config.policy 下。行級配置爲整行替換,非 deep-merge;改配置後需 reload profile,並 restate 需保留的自定義項。
除某一精確 route 外其餘走 stock 的示例(來自 README):
- id: compaction-policy-global
config:
policy:
mode: stock
modelPolicies:
- provider: your-local-provider
model: your-model-id
mode: policy
thresholdRatio: 0.9
outputReserveCap: 0
headroomTokens: 0
pruneToolResults: false
provider / model 匹配爲精確、區分大小寫。未配置 modelPolicies 時,默認 mode: policy 應用於所有 eligible Basic 實例。
常用策略字段(默認值與含義見 README 表格):
| Policy field | Default | 含義摘要 |
|---|---|---|
mode |
policy |
policy 用新 proactive 策略;stock 交回 Basic。 |
thresholdRatio |
0.9 |
Proactive 窗口比例,受剩餘容量分支約束。 |
outputReserveCap |
0 |
Proactive 輸出預留上限(非 API output cap)。 |
headroomTokens |
0 |
額外 proactive 扣減;默認 10% 餘量已在 ratio 中。 |
pruneToolResults |
false |
新 proactive 路徑是否先調用原生 tool-result pruner。 |
retainRatio |
0.16 |
近期 tail 軟目標比例。 |
retainTokens |
unset | 絕對 soft target,與 retainRatio 互斥。 |
minFreshTokens |
2048 |
選段最小非 checkpoint token 權重。 |
retryAfterTokens |
4096 |
冷卻未結束前重試所需的候選變化量。 |
retryCooldownMs |
60000 |
摘要失敗初始冷卻。 |
maxRetryCooldownMs |
600000 |
指數退避上限。 |
modelPolicies |
[] |
按 { provider, model, ... } 精確覆蓋。 |
dryRun |
false |
觀測 proactive 路徑但不 prune/摘要;stock、手動與 overflow 仍可用。 |
除 modelPolicies、dryRun 外,其餘字段可在單條 route 上覆蓋。未知鍵與非法值會被拒絕。
適用場景與注意¶
適合誰:已在 DSH 中使用官方 Basic compaction、希望延遲 proactive 觸發(默認 90%)、改善摘要選段與失敗退避,且不願切換 preset 或 fork compaction 引擎的開發者。
實驗性與測試範圍:版本 0.2.2 標註 Experimental;README 說明 synthetic session 與 scripted model response 的 actual-host 測試已通過,但不能等同於 live GUI 或真實模型摘要質量證明;不做無損摘要或更大上下文窗口承諾。
安全與權限:插件在當前 DSH 進程權限下運行,會參與會話 compaction 決策。安裝前請自行審閱 源碼與 MIT 許可證,並確認與本地 DSH / Cordis 版本滿足 engines 與 peer 聲明(如 Node ^22.19.0 || >=24.0.0,DSH ^0.2.1-rc.1)。
生態說明:DSH 採用「一切皆插件」思路;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-compaction-policy 在不動 Basic 核心能力的前提下,用全局策略調整 proactive 閾值(默認 90%)、保留區間與失敗重試守衛,適合長會話工作流調優。安裝源爲 github:huohua-dev/dsh-compaction-policy#v0.2.2;啓用後用 /compaction-policy-global status 覈對生效情況。