dsh-resume-budget:DeepSeek Harness 會話恢復前的輸入預算控制

前言

恢復一個長會話時,需要把歷史消息重新發送給模型。如果歷史消息的 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 機制。
  • 按進程按會話判斷:每個會話只判斷一次,本進程內恢復的會話才觸發,新建會話不觸發。
  • 無存儲、無後臺工作:插件本身不保存任何狀態,不進行異步任務。

安裝與啓用

  1. 確認工具鏈:
node --version    # 需要 v22 或更高
dsh --version
  1. 裝進你要用的 profile(默認是 web):
dsh plugin --profile web add github:xingzoudefengye/dsh-resume-budget

這條命令把插件包裝進 $DSH_HOME/profiles/web,並加進該 profile 的 dsh.profile.bundles。首次安裝需要能訪問 GitHub(pnpm 拉取 github: 依賴)。

  1. 重啓宿主進程:
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 倉庫。

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

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

小夜