前言¶
在 DSH 裏,上下文窗口占滿到一定比例時會觸發自動壓縮,閾值由 compaction-basic.thresholdRatio 控制,上游默認是 0.8。這套參數寫在每個 Agent 預設自己的 composition 裏:標準、創造、極簡、ptc 各有一份。內置預設是部署自帶的聲明,用戶不能直接改 composition,若希望「所有模式都在 0.4 觸發壓縮」,只能手工複製多份 composition 並分別註冊——維護成本高,也容易漏改某一檔。
下面介紹社區插件 dsh-compact-value(維護者 ycm50):用一張設置卡片統一配置閾值與保留比例,按勾選的內置源模式自動生成帶新閾值的副本預設,並可選擇保存後把默認 Agent 模式切到優先生成的壓縮副本。
這是什麼¶
dsh-compact-value 是 DeepSeek Harness 的 Web 側插件(當前版本 0.4.0,MIT 許可證)。它不改變內置預設本身,而是讀取裝載器裏源模式的 composition,只改寫含 compaction-basic 的那一行的 thresholdRatio(其餘字段原樣保留,源組合不會被就地修改),再 agentPresets.register() 成新預設,id 形如 <源id>-compact-<閾值>(例如 standard + 0.4 → standard-compact-4,命名不允許小數點)。
參考宿主爲 DSH 0.2.0-rc.1,同時通過運行時探測兼容 0.1.5-rc.x 與 0.1.7+ 兩代設置模型。倉庫與安裝標識統一爲 dsh-compact-value(與目錄線索中的別名不同,以 README 與 package.json 爲準)。
核心功能¶
對每個源模式做什麼¶
對設置裏勾選的每個源模式,插件會:
- 從裝載器條目讀取源模式的組合(預設聲明行裏的
config是交給agentPresets.register()的權威來源); - 遞歸定位
compactiongroup 內的compaction-basic,僅替換其中的thresholdRatio; - 註冊新預設並保留
register()返回的註銷函數;閾值或勾選項變化時重新註冊,取消勾選或關閉總開關時通過註銷函數回收舊副本。
默認模式與優先級¶
生成的副本若無人選用意義不大,因此插件可選地在保存後把 新會話默認模式 指向其中一個副本(寫 agent-preset-registry 的 volatile selectedDefault)。多個副本同時存在時,優先級爲:標準 > 創造 > 極簡 > ptc(即 standard > cordis > minimal > ptc;表外自定義源排在四者之後,同檔按 id 穩定排序)。帶顯式閾值的副本會優先於未設置閾值的模式;若不想被改寫默認模式,可在卡片裏關閉「保存後設爲默認模式」(adoptDefault)。
設置項¶
設置入口在宿主 UI 中對應 設置 → 壓縮閾值。可寫字段共五個:
| 字段 | 默認 | 說明 |
|---|---|---|
enabled |
true |
關閉並保存會回收本插件生成的全部副本 |
thresholdRatio |
0.4 |
上下文佔用達到窗口的這個比例即觸發自動壓縮;必須 ∈ (0, 1) |
retainRatio |
0.16 |
壓縮後保留的最近上下文比例;必須小於 thresholdRatio |
sourcePresets |
standard, minimal, ptc, cordis |
要擴展哪些模式 |
adoptDefault |
true |
保存後把默認模式切到生成的壓縮模式 |
不滿足 0 < retainRatio < thresholdRatio 時會拒絕對設置的寫入。profile(cordis.patch.yml)裏與本插件相關的持久寫入通常只有 selectedDefault 這一處指針;副本列表、跳過原因、接管前的默認模式等留在插件進程內存,重啓後「釋放時恢復用戶原選擇」可能退化爲 unset。
明確不做的事¶
- 不劫持內置預設 ID;運行中的會話不會因閾值變更而重讀 composition(僅新建會話生效)。
- 極簡模式 composition 裏沒有
compaction-basic行時會跳過並打日誌,不會硬塞壓縮棧,因此不會生成minimal的壓縮副本。 - 除默認模式指針外,不向 profile 寫入插件狀態。
安裝與啓用¶
在已配置 DSH Web profile 的環境中執行:
dsh plugin --profile web add github:ycm50/dsh-compact-value
安裝完成後需要重啓 dsh web,新增插件纔會加載;然後在 設置 裏打開「壓縮閾值」卡片。宿主 peerDependencies 對 @deepseek-ai/dsh-* 有 semver 預檢,不滿足會拒絕安裝(incompatible-version);本包已聲明支持到 ^0.2.0-rc.1。
典型用法¶
- 安裝並重啓
dsh web後,打開 設置 → 壓縮閾值。 - 保持
enabled爲開啓,按需調整thresholdRatio(默認 0.4)與retainRatio(默認 0.16)。 - 在
sourcePresets中勾選需要擴展的模式(默認包含 standard、minimal、ptc、cordis;無壓縮棧的源會被跳過)。 - 若希望保存後新會話默認使用壓縮副本,保持
adoptDefault爲 true;若需保留手選的默認模式,將其設爲 false 後再保存。 - 保存後,預設選擇器應能見到形如
standard-compact-4的新模式(插件會在 roster 變化時補發相關設置事件,一般無需整頁刷新)。
卸載或禁用插件時,插件會撤銷對 selectedDefault 的接管(寫回接管前的值或 unset),避免指針指向已不存在的副本導致新會話解析失敗。
適用場景與注意¶
適合希望在 不手工複製 composition 的前提下,讓多個 Agent 預設共享同一套壓縮閾值(例如統一從 0.8 降到 0.4)的 DSH Web 用戶。也適合需要壓縮後保留比例與閾值一併校驗、並通過一張卡片管理源模式列表的場景。
使用前請注意:插件以當前 dsh 進程權限 運行,會註冊內存中的 Agent 預設並可能修改用戶層的默認模式指針;安裝前應自行查看 GitHub 倉庫 源碼與 MIT 許可證。DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區收錄站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-compact-value 把「給每個 Agent 模式單獨設 compression 閾值」收成五個設置字段:自動生成 -compact-<閾值> 副本、可選接管默認模式,並在卸載時清理懸空指針。需要進一步瞭解實現細節與兩代宿主差異,可直接閱讀倉庫 README。
- 目錄頁:https://www.skillhub.cn/plugins/ycm50/dsh-compat-val
- GitHub:https://github.com/ycm50/dsh-compact-value