前言¶
DeepSeek Harness(DSH)默認的壓縮後端在上下文達到閾值後,需要發起一次額外的模型摘要調用,產生成本並增加延遲。對於需要嚴格控制成本、追求可復現性的場景,這個額外的模型調用並不總是必要。
插件定位¶
dsh-compaction-local-handoff 是 DeepSeek Harness 的一個插件,由維護者 xingzoudefengye 提供。它爲 DSH 提供了一個零模型調用的壓縮後端:當上下文到達壓縮閾值時,用本地、確定性、有界的交接文檔替代一次額外的模型摘要調用。
核心功能¶
本插件將默認後端中的模型摘要步驟替換爲純本地拼裝。壓縮前端的觸發閾值、逐字保留策略、工具結果剪枝、區間選擇、併發鎖等邏輯保持不變,只改變檢查點生成的來源。
與默認後端的差異¶
| 行爲 | 默認後端 | 本插件 |
|—|—|
| 觸發閾值 | 同 | 同 |
| 逐字保留近期尾部 | 同 | 同 |
| 工具結果剪枝 / 圖片卸載 | 是 | 同 |
| 區間選擇(工具配對安全、不遮蔽系統提示詞) | 是 | 同 |
| 日誌事務 / 併發鎖 / 上下文溢出恢復 / /compact | 是 | 同 |
| 檢查點怎麼來 | 一次模型調用 | 本地拼裝,0 次調用 |
| 檢查點內容 | 模型自選措辭的 8 節 Markdown | 固定字段、逐字摘錄、硬字符預算 |
| 上限 | 模型輸出上限 | 6,000 字符,且不超過被遮蔽內容的一半 |
| 成本 / 延遲 | 每次觸發都付費,還要等 | 免費、即時、可復現 |
交接文檔內容¶
<compacted-summary> 內是一段有界文本,包含以下字段:
- guide:不表示任務已完成;最新用戶要求;提示完整原文仍在會話日誌中。
- summary:階段性要求/約束(歷史內 system 更新,保留來源,標註”不作爲新授權”);壓縮區間內涉及的文件(最多 25 個);回合級史書(裝了
dsh-session-recall時出現);最近 4 次工具調用及結果;最近一條助手進展原文摘錄;未解決報錯線索(最多 2 條);上次交接摘錄(非新指令);以及”工具結果只保留預覽”的收尾提示。
各字段有獨立字符預算(用戶要求 1600、進展 900、單條工具 280、約束 300、舊交接 1200),總計硬上限 6,000 字符;實際預算還會被壓到”被遮蔽字符數的一半減 600”(600 是給 DSH 固定 wrapper 留的餘量)。憑據形態的文本(sk-…、Bearer …、api_key=、password/secret/token)會被 redact,<thinking> 塊被剝離。
裝了 dsh-session-recall 後,交接裏會多一段回合級史書(≤2400 字符,且不超過交接預算的 40%):它由會話日誌摺疊而來,所以重複壓縮也不會丟——被上一次交接替換掉的早期回合,其結論仍然在裏面。
安裝與啓用¶
插件需要 Node.js >=22,以及 DSH 的 @deepseek-ai/dsh-compaction-basic >=0.2.0-rc.2。該包由 DSH 自帶,本倉庫不 vendor 它。
安裝命令¶
dsh plugin --profile web add "github:xingzoudefengye/dsh-compaction-local-handoff"
這條命令把包寫進 profile 的 dependencies,並把聲明瞭 dsh.bundle 的它追加進有序的 dsh.profile.bundles 列表。兩者缺一不可:前者讓 Node 能找到模塊,後者讓它作爲補丁層參與啓動。
重啓 host¶
新增模塊根不在 HMR 熱重載範圍內:必須完全退出並重新啓動運行 dsh 的進程(GUI 即重啓應用/後臺服務)。只刷新頁面、只重載配置都不夠。
驗證安裝¶
dsh plugin --profile web why dsh-compaction-local-handoff
預期輸出:
dsh-compaction-local-handoff@0.2.4
└── dsh-profile-web (dependencies)
Found 1 version of dsh-compaction-local-handoff
驗證運行時¶
在一個 agentPreset: "standard" 的 web 會話裏執行 /compact,然後看壓縮記錄/會話日誌:
17:53:57.134 compaction/start
17:53:57.145 compaction/summary provider=local model=local-handoff
shadowedRange 8-61 · 21 nodes · 5713 tokens
llmStreamCall=無 · rawOutput=無 · usage=無 · maxTokens=無
關鍵是 provider=local、model=local-handoff,且摘要事件不帶 llmStreamCall / usage / maxTokens——模型摘要路徑一定會帶這三者。
適用場景與注意¶
適合需要嚴格控制成本、追求可復現輸出、對延遲敏感的場景。插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
本插件通過 cordis.patch.yml 對 DSH 的 preset 進行補丁,意味着這些 preset 清單在 profile 裏被凍結在生成時的那一版。DSH 升級若改動了 shipped preset(新增工具、調整 prompt 段),不會自動拿到。反向也一樣:倉庫裏的快照是在某個具體 harness 版本上生成的,比它舊的 harness 可能不認識快照裏新增的 preset 行。
結尾¶
本插件將模型摘要調用替換爲本地確定性交接文檔,實現零成本、即時壓縮、可復現輸出,適合對成本和可復現性要求較高的 DSH 用戶。
- 目錄頁:https://www.skillhub.cn/plugins/xingzoudefengye/dsh-compaction-local-handoff
- GitHub:https://github.com/xingzoudefengye/dsh-compaction-local-handoff