dsh-auto-compact:DSH 會話級自動上下文壓縮插件

前言

在 DSH 的長會話中,上下文壓力會隨輪次增加。DSH 內置 compaction-basic,默認壓力閾值是 80%;如果你只想針對當前會話設置更低或更高的壓縮點,dsh-auto-compact 提供會話級閾值。超過閾值後自動執行 compact,摘要注入上下文後會話自然繼續。

這是什麼

dsh-auto-compact 是 DeepSeek Harness(DSH)的會話級自動上下文壓縮插件,由 JohnathonYe 維護,許可證爲 MIT。它監聽當前會話的上下文用量,在超過會話閾值時自動執行 compact,不發送任何「繼續」消息。

核心功能

  • 會話級閾值:每個會話獨立設置,按 sessionId 持久化。
  • 即時用量:顯示當前會話上下文用量,與自帶 ContextMeter 同源,讀取 useProjection("contextPressure")。
  • 閾值調節:支持 1%–90%,步進 1%;未設置時默認 50%。
  • 自動檢測:在回合中每步前與回合結束時檢測,超閾值自動執行 compact。
  • 會話繼續:壓縮摘要注入上下文後會話自然繼續,不發送任何「繼續」消息。
  • 閾值持久化:保存在 settings.yaml 的 dsh-auto-compact 命名空間,重啓不丟。
  • 與內置機制並存:DSH 內置 compaction-basic(默認 80% 壓力閾值)保留,互不干擾。

安裝與啓用

先確認前置條件:已裝好 DSH,dsh web 能正常運行;Node.js ≥ 20、pnpm ≥ 10。同時需要 DSH 的 compaction-basic(@deepseek-ai/dsh-compaction-basic)處於啓用狀態;默認預設 standard / code / cordis 均已內置,minimal 預設除外。

如果之前安裝過舊包名 auto-compact,先卸載舊包,再安裝新包名 dsh-auto-compact,避免雙掛載:

npx -y --package @deepseek-ai/dsh dsh plugin --profile web remove auto-compact

推薦運行以下一鍵安裝命令:

curl -fsSL https://raw.githubusercontent.com/JohnathonYe/auto-compact/main/scripts/install.sh | bash

安裝或更新後,重啓 DSH,並強刷瀏覽器:macOS 使用 Cmd+Shift+R,Windows / Linux 使用 Ctrl+Shift+R。更新時重跑一鍵安裝命令,裝完同樣重啓 DSH 並強刷瀏覽器。

卸載使用以下命令:

npx -y --package @deepseek-ai/dsh dsh plugin --profile web remove dsh-auto-compact

典型用法

1、點擊輸入區右側的圓環,打開面板。

2、面板顯示當前會話的即時上下文用量(百分比)。

3、拖動滑桿設置閾值(1%–90%,會話級獨立;未拖動過的新會話默認 50%,僅當前會話生效)。

4、之後每當用量超過閾值(回合中某一步之前,或回合結束時),插件自動執行 compact 並繼續。

實現細節與注意

  • 檢查點:所有檢查都在 agent/pre-step(waterfall 中間件)與 agent/turn-stopping(串行事件)中執行,全程 try/catch,絕不拋出。
  • 閾值存儲:閾值保存在 settings.yaml 的 dsh-auto-compact 命名空間。
  • 設置通道:插件使用自定義 webServer 路由 /dsh-auto-compact/api,host 側直寫 settings 服務,繞過 DSH api.settings 的官方命名空間白名單。
  • 權限與審計:插件以當前 dsh 進程權限運行。安裝前應檢查源碼、依賴與 MIT 許可證;如果預設不啓用 compaction-basic,插件無法滿足自動 compact 前提。

結尾

dsh-auto-compact 把上下文壓縮閾值從全局默認變成當前會話可調,適合需要精細控制上下文壓力的 DSH 會話。

GitHub 倉庫:

https://github.com/JohnathonYe/auto-compact
羽毛球分组比赛记分
小程序二维码

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

小夜