dsh-compact-manager: Dual-Engine Management for DSH Context Compaction

前言

在 DeepSeek Harness(DSH)里跑长会话时,上下文迟早会顶到窗口上限。官方自带的压缩能力能续命,但「只用官方摘要器」和「偶尔想本地快速折页、不想花 token」往往不能在同一条策略里切换;模型侧一旦限流或密钥失效,自动压缩也可能卡在单一路径上。社区插件 dsh-compact-manager(维护者 tony92921,分类:工作流)的定位是接管上下文压缩:手动与自动两条路径都支持模型压缩和机械折页压缩,并在模型路径上提供备用模型与救援策略。折页算法取自 dsh-ledger-compact,机械路径不发网络请求、不消耗 token。

这是什么

dsh-compact-manager 包裹 live 的 @deepseek-ai/dsh-compaction-basic 引擎实例,在 Host 侧统一策略选择与压缩事务,在 UI 侧提供「压缩管理」设置页和两个手动按钮。它解决的是:在同一套官方压缩事务与 surface 语义下,按需选择「调模型摘要」或「本地折页成短卡」,并配置自动触发阈值、双模型回退与入境定形等周边能力。

  • 目录页:https://www.skillhub.cn/plugins/tony92921/dsh-compact-manager
  • 源码与说明:https://github.com/tony92921/dsh-compact-manager
  • 当前 package 版本(资料原文):1.0.1,MIT 许可

两种压缩引擎

压缩引擎决定谁来做压缩;两个手动按钮与 /compact 都跟随它:

引擎 自动压力/溢出压缩 手动按钮、/compact、/fast-compact
机械 机械折页 机械折页
模型 按压缩方式 备用模型 1,失败切备用模型 2

模型压缩由配置的压缩模型产出摘要。支持备用模型兜底(官方摘要器优先、连续失败后切换),也支持直接使用备用模型,并可再挂备用模型 2 做二重兜底。

机械折页压缩把旧历史换成短卡,速度以毫秒计。折页同样走官方压缩事务,日志里留下与模型路径相同的标记三元组与 surface op;原始事件仍以原序号留在只追加的会话日志里,按 seq 可回溯。

压缩方式只在模型引擎下有意义:

  • 官方优先,失败后救援(rescue)— 先由官方摘要器处理,连续失败 rescueAfterFailures 次后才交给备用模型 1。
  • 直接使用备用模型(direct)— 自动压缩直接走备用模型 1,官方摘要器不参与。

两条路径上,备用模型 1 失败都会自动换成备用模型 2(若已配置)。回退发生在 summarize 回调内部,避免部分提交留下需清理的标记对。路由租约(routes.js)激活时会禁用回退,以免换模型破坏计价锁定。

命令行的 ledger / saviour 会覆盖上述一切(包括 replaceDefault),避免配置卡住时没有出口。

手动操作与命令

聊天输入框上方原生上下文弹层里有两个按钮:

  • 手动模型压缩 — 模型路径(原有行为)。
  • 手动机械压缩 — 本地折页,不调模型、不花 token;未配置压缩模型时仍可用。

「手动机械压缩」默认需点两次确认(4 秒后自动还原);可在设置里关闭「折页二次确认」改为单击执行。圆环上下文按钮仅用于查看明细;原先的长按直接压缩手势已移除,压缩只能从上述两个按钮或命令发起。

常用命令:

/fast-compact              # 按 engine 设置折一次
/fast-compact ledger       # 强制机械折页(不调模型)
/fast-compact saviour      # 交给压缩模型
/fast-compact status       # 当前设置与可用性

官方 @deepseek-ai/dsh-compaction 没有 undo/revert,折页后 UI 上不能「展开还原」;但 compaction/summary 的 shadowedSeqs 记录了被替换的事件序号,原文仍在只追加的会话日志中,可按 seq 从日志文件读取。

设置页:压缩管理

路径:设置 → 压缩管理,四个 tab:

  1. 模型 — 压缩方式、救援前失败次数、备用模型 1 与 2;底部可对两个备用模型各发一次与真实压缩同形状的连通性测试(可选输入档位 200 / 2k / 100k / 300k / 900k 字符量级)。
  2. 自动压缩 — 引擎、thresholdOverride、触发线比例(默认语境下与 compaction-basic 一致)、headroom(默认 65536)、retain;页面向 Host 查询算出的实际触发点,保证与引擎一致。
  3. 机械 — 工具结果定形阈值、密图预算与节省比例、折页二次确认。
  4. 诊断 — 模型压缩 / 非模型压缩两组累计计数(本进程内,宿主重启归零)及命令提示。

改动无保存按钮,约 250ms 防抖后自动写入;Host 拒绝时会显示红色「未保存」条。

入境定形只裁当前回合、紧邻上一步且尚未发送的大 tool_result;已发出去的节点不改写,以免破坏 provider 缓存前缀。

安装与启用

安装命令(须与资料原文一致):

dsh plugin add dsh-compact-manager

从本地源码链接:

dsh plugin --profile <名称> add link:/path/to/dsh-compact-manager

装好后在 设置 → 压缩管理 配置。不要卸载 compaction-basic — 官方事务标记、surface op 与稳定性校验仍来自该包。

运行环境(package.json):Node >=24;DSH 版本需满足 >=0.2.0-rc.1 等 peer 约束,并与 @deepseek-ai/dsh-compaction、dsh-agent 等配套包版本区间一致。插件以当前 DSH 进程权限运行,安装前请自行审阅源码与 MIT/NOTICE 中的第三方声明。

适用场景与注意

适合需要在同一 Host 里切换模型摘要与零 token 折页、为自动压缩配置双模型回退或 rescue/direct 策略、并在压测长上下文前用分级连通性测试验证备用模型的开发者。

注意:

  • 引擎选择会同步写入 replaceDefault 与 engine,避免自相矛盾;半套备用模型(有 provider 无 model)在保存时会被拒绝。
  • 保留比例若接近触发线,页面可能自动下调 retain,否则 selectCompactableRange 可能永远找不到可压区域。
  • SkillHub 目录为社区插件索引,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录页为准(资料中 GitHub stars:1)。

结尾

dsh-compact-manager 把 DSH 上下文压缩从「单一路径」扩展为可配置的模型 + 机械双引擎,并在日志语义上与官方 compaction 对齐,便于历史 UI 与诊断。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye