DeepSeek Harness 本地交接壓縮後端

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜