前言¶
在 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 服務,繞過 DSHapi.settings的官方命名空間白名單。 - 權限與審計:插件以當前
dsh進程權限運行。安裝前應檢查源碼、依賴與MIT許可證;如果預設不啓用compaction-basic,插件無法滿足自動compact前提。
結尾¶
dsh-auto-compact 把上下文壓縮閾值從全局默認變成當前會話可調,適合需要精細控制上下文壓力的 DSH 會話。
GitHub 倉庫:
https://github.com/JohnathonYe/auto-compact