前言¶
恢復一個長會話時,需要把歷史消息重新發送給模型。如果歷史消息的 token 數量超過某個閾值,直接發送會消耗大量資源,甚至觸發上下文溢出。DeepSeek Harness(DSH)本身提供 dsh-compaction 機制,但默認只在運行過程中處理,恢復會話時並不會自動壓縮。dsh-resume-budget 插件在會話恢復的第一個請求發出前,對預計輸入進行估算;若超過閾值,就先通過 harness 的官方壓縮路徑壓縮歷史,再發請求。
這是什麼¶
dsh-resume-budget 是一個 DeepSeek Harness 插件,由 xingzoudefengye 維護。它的職責是在會話恢復時,根據配置的 thresholdTokens 閾值,決定是否在發送第一個請求前先壓縮歷史。它不存儲任何數據,不進行後臺工作,也不調用模型接口,只做一次決策和一次壓縮動作。插件使用 MIT 許可證,要求 Node.js >= 22。
核心功能¶
- 會話恢復前檢查:在恢復會話的第一個請求發出前,檢查預計輸入是否超過閾值。
- 配置化閾值:通過
thresholdTokens控制,默認爲 100000。 - 使用官方壓縮路徑:觸發壓縮時調用
ctx.compaction.compactIfNeeded(),複用 harness 的 compaction 機制。 - 按進程按會話判斷:每個會話只判斷一次,本進程內恢復的會話才觸發,新建會話不觸發。
- 無存儲、無後臺工作:插件本身不保存任何狀態,不進行異步任務。
安裝與啓用¶
- 確認工具鏈:
node --version # 需要 v22 或更高
dsh --version
- 裝進你要用的 profile(默認是
web):
dsh plugin --profile web add github:xingzoudefengye/dsh-resume-budget
這條命令把插件包裝進 $DSH_HOME/profiles/web,並加進該 profile 的 dsh.profile.bundles。首次安裝需要能訪問 GitHub(pnpm 拉取 github: 依賴)。
- 重啓宿主進程:
dsh web
插件是在宿主啓動時被 import 的,裝完不會熱加載。
配置與驗證¶
插件只有一個配置鍵 thresholdTokens,類型爲整數,最小 0,默認 100000。若預計輸入達到或超過該值,就會觸發壓縮;若爲 0 則關閉檢查。
修改閾值¶
在 profile 的 cordis.patch.yml 裏按 id 覆蓋:
# $DSH_HOME/profiles/web/cordis.patch.yml
- id: resume-budget
config:
thresholdTokens: 150000
id 必須是 resume-budget,寫錯了宿主啓動時會打印 patch: entry "..." not found,組合樹裏仍是默認值。
驗證安裝¶
在倉庫 checkout 裏運行:
node scripts/check.mjs
或在已安裝的 profile 裏運行:
# PowerShell
node "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-resume-budget\scripts\check.mjs"
# zsh
node ~/.dsh/profiles/web/node_modules/dsh-resume-budget/scripts/check.mjs
正常輸出應爲:
ok: resume-budget is in the composed tree
ok: thresholdTokens is 100000
若在 patch 裏改了閾值,把期望值作爲第二個參數傳進去:
node scripts/check.mjs web 150000
典型用法¶
恢復一個歷史很長的會話,插件會在第一個請求前自動檢查並壓縮。如果壓縮成功,會話裏會多出壓縮後的檢查點(<compacted-summary> 塊)。如果歷史太短,後端返回 null,則什麼也不會發生。
可以臨時把 thresholdTokens 設成 1 並重啓,恢復一箇舊會話。看到檢查點就說明“閘門開了”。
適用場景與注意¶
- 適合誰:需要頻繁恢復長會話的開發者,希望避免一次性發送大量歷史導致上下文溢出或資源浪費。
- 權限說明:插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。
- 兼容性:插件依賴 DSH 提供的
agent/pre-step事件、ctx.tokenMeter.measure()和ctx.compaction.compactIfNeeded()。若宿主缺少compaction或tokenMeter服務,插件會掛載不上,不會報錯。 - 版本要求:Node.js >= 22;DSH 版本建議 0.2.x(實測 0.2.1-rc.2)。
短結尾¶
dsh-resume-budget 通過在會話恢復前控制輸入預算,減少一次性發送大量歷史的資源消耗。它不依賴第三方庫,只使用 Node.js 內置模塊,與 DSH 的 compaction 機制緊密集成,適合需要穩定處理長會話的開發者。更多細節可在目錄頁查看,或直接訪問 GitHub 倉庫。