dsh-context-control:DSH 上下文用量环与可恢复压缩

前言

在 DeepSeek Harness(DSH)里做长会话开发时,上下文会随工具输出、文件 diff 和对话轮次快速堆积。窗口接近上限后,要么中断当前任务换会话,要么依赖宿主或第三方插件做压缩——但压缩若不可回查原文、或触发条件不透明,排查问题和恢复用户原意都会变难。

下面介绍社区插件 dsh-context-control(维护者 sxwer001,SkillHub 分类为「记忆」):在模型选择器旁显示上下文用量环,按可配置的字符阈值自动或手动压缩,并保留可分页回查的原始会话事件。首版面向 DSH 0.2.0-rc.2,复用该版本原生的 Session、TokenMeter、StorageDomain 与压缩事务,而非独立 Node 程序。

这是什么

dsh-context-control 是 DSH 的上下文压缩与用量可视化插件。一句话定位:在输入区右侧(conversation.input.right 插槽)加载用量环与紧凑面板,用 Unicode 码点计量有效字符(含当前消息与工具定义可见文本,不含图片字节),窗口比例来自 DSH token 投影/估算,与字符触发线分开显示;压缩走官方持久化事务,摘要后仍可查原文。

插件当前发布版本为 v0.1.2(MIT),GitHub 星标为 0。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

用量与阈值

  • 模型选择器旁显示上下文用量环;点击展开紧凑卡片,可看到窗口占用、有效字符、窗口容量、最近压缩等信息。窗口计量采用「已用 53k,共 1M」一类简洁数字;未知模型容量时不显示虚假百分比。
  • 默认在有效上下文达到 400,000 字符时自动压缩;阈值可在 10,000–5,000,000 范围内配置,支持关闭自动压缩,并区分「当前会话设置」与「全局默认」。
  • 接近模型窗口上限时会提前触发安全压缩;关闭自动压缩时,该提前触发一并关闭。上下文溢出恢复由宿主侧的 overflowRecoveryEnabled 控制(非本插件单独开关)。

压缩行为与原文保留

  • 支持手动「立即压缩」;任务进行中会排队到安全边界执行,可取消待执行请求。
  • 保留最新用户消息和近期工作;被替换的真实用户要求原文写入检查点,历史修正按时间排序。
  • 结构化摘要覆盖任务、约束、决策、文件变化、验证证据、失败与待办。
  • 使用官方持久化压缩事务,保留工具调用配对;失败、取消、输出截断或并发历史变化时不替换原上下文。
  • 原始会话事件保留,可通过界面或 context_control 工具分页回查;成功的 shell 输出仅折叠连续完全重复的长日志,先保存原文,保存失败则保留输出。
  • 原始用户要求超过 64,000 字符时拒绝替换,避免保护性内容反而撑大摘要。

界面与集成

  • 中英文及 DSH 原生主题;面板通过原生认证 RPC 静默操作,不在聊天里留下命令记录;旧版面板留下的 context-control 行会隐藏显示,原始数据仍保留。
  • 技术实现上复用 @deepseek-ai/dsh-compaction-basic 的选择/事务实现(上游版本与哈希见包内 vendor/upstream.json);摘要默认调用会话最近请求的模型,可在 Host 配置中成对指定 summarizationProvider 与 summarizationModel。摘要会产生常规模型 API 费用。

安装与启用

安装前请确认宿主为 DSH 0.2.0-rc.2。包内声明的 peer 依赖由匹配版本的 DSH 提供,不会在插件里再装一套 Harness;不要在独立 Node 程序中直接运行本插件。插件以当前 DSH 进程权限运行,安装前应自行查看 GitHub 源码 与许可证。

从 GitHub Releases 下载预构建 .tgz,或使用固定版本安装:

dsh plugin --profile web add https://github.com/sxwer001/dsh-context-control/releases/download/v0.1.2/dsh-context-control-0.1.2.tgz
dsh --profile web

本地包路径示例(PowerShell,路径按实际修改):

dsh plugin --profile web add 'D:\path\dsh-context-control-0.1.2.tgz'
dsh --profile web

桌面 profile 可由 Electron 内插件管理器安装,或在完全退出应用后,通过安装目录内官方 CLI 入口安装,例如:

resources/runtime/cli/bin/dsh.cmd plugin --profile desktop add <包路径>

不要手动改写桌面应用的依赖与配置。包内 cordis.patch.yml 注册插件;重载后,在已有会话且模型选择器可见时,输入区模型旁会出现用量环。模型未配置时可以保存设置,但执行摘要需要有效模型路由。

若已安装 billion-context 或其他压缩插件,建议先在独立 profile 验证再决定保留哪套自动压缩策略。本包不替换原生 compaction 服务;多种自动策略同时启用时的顺序与收益需实测。

典型用法

界面

  1. 点击用量环,查看紧凑用量卡片,可直接选择「立即压缩」。
  2. 展开「设置与详情」,修改字符阈值后点「应用」保存到当前会话;「设为全局默认」供未单独覆盖的会话使用。
  3. 关闭自动压缩后仍可手动压缩。正在运行的任务会提示「在安全边界压缩」;无安全旧历史时保留原上下文并给出提示。

命令与工具

命令与模型工具共用同一 Host 操作,例如:

/context-control status
/context-control compact
/context-control {"action":"configure","scope":"session","settings":{"triggerChars":600000,"autoEnabled":true}}
/context-control {"action":"cancel"}
/context-control {"action":"history"}

工具 context_control 接受同样的 JSON;大段原文响应含 next 字段,按它继续分页请求。只回查当前会话的原文;原文属于历史资料,应结合当前要求理解。

适用场景与注意

适合谁: 在 DSH 0.2.0-rc.2 上跑长任务、需要一眼看到窗口占用与字符量、并希望按字符线可控自动压缩、且压缩后仍能翻原文的开发者。

务必知晓的限制:

  • 摘要是有损压缩,原文可回查并在提示中明确要求保留可降低丢失风险,不能保证模型后续工作完全不受影响;上下文变短也不等于账单必然下降,费用取决于缓存命中、摘要调用与后续轮数。
  • 仅验证目标 DSH 版本;其他版本需重新验证,勿默认全版本兼容。
  • 与同类压缩插件并存时,自行在隔离 profile 测策略,避免多套自动压缩互相干扰。

维护者在 2026-10-12 的说明中记录了本地与 web/desktop profile 的界面与 RPC 验证(含手动/自动压缩字符变化与原文回查),未对真实工作任务质量或账单节省比例作普遍性结论;细节见仓库 README「开发与验证」一节。

结尾

dsh-context-control 把上下文占用可视化、字符阈值与手动压缩收到模型选择器旁,并依托 DSH 0.2.0-rc.2 原生压缩事务保留可恢复的原文与结构化摘要,适合需要可控、可审计的长会话场景。

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

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

小夜