dsh-compaction-selective:由人指定区间压缩 DSH 对话轮次

前言

在 DeepSeek Harness(DSH)里做长会话时,上下文会随轮次膨胀。内置压缩(compaction)通常只折叠最旧的一段对话,/compact 也不接受参数。实际开发里,更需要删掉的是最近的岔路:调试往返、死胡同问答、一大段工具输出。这些占着可见上下文,却不必逐字保留。

社区插件 dsh-compaction-selective(维护者 DerekZhangbj,分类:记忆)补上这一条路径:你明确说「压哪几轮已结束的对话」,系统在人工确认后,把该区间折成一条摘要,并替换可见界面上的原文;会话日志里原始事件不删,摘要可展开。

下面按定位、能力、安装、用法与限制说明如何使用。

这是什么

dsh-compaction-selective 是面向 DSH 的「人机协同、选择性压缩」插件:对已结束的 turn 区间做折叠,且必须经过确认卡才会执行。它不是 DeepSeek 官方产品,也与 DeepSeek / 幻方无隶属关系;生态上 DSH 提倡「一切皆插件」,目录站 skillhub.cn 等为社区独立站点。

核心功能

与内置压缩的差异

内置逻辑偏向「最旧跨度」;本插件让你指定跨度,例如「最近两轮」或显式范围 34-35。折叠使用 fold 形摘要模板(保留决策、路径、API、未决问题,去掉逐步复述),也可用配置关掉模板、沿用宿主默认样式。

三条入口(Web CLI 与 Electron 桌面端)

入口 Web (CLI) Desktop (Electron)
模型工具 compact_turns + 确认卡 支持 支持
输入区按钮 / 面板(概览、轮次表) 支持 支持
+ 菜单 → 指令 → 选择性压缩 支持 支持(不支持时会隐藏)
面板/菜单在空闲态直接按指定区间压缩 支持(需本地 15 行补丁) 不支持(核心在 app.asar)

第三条「空闲态 + 指定区间」是上游 API 缺口(compactNow 与 compactRegion 能力未组合公开),非插件实现错误。CLI 可用 patches/apply-compaction-patch.ps1 桥接;桌面端无法用补丁时,插件会禁用相关按钮并提示改用对话表单,避免点了才报错。

执行流程(资料中的三步)

  1. 选定已结束 turn 的区间 — 如「最近两轮」或 34-35。
  2. 预览并确认 — 工具路径展示确认卡:精确轮次、节点数、预估释放 token;未点「确认压缩」或超时则不做任何变更。
  3. 折叠并替换可见面 — 区间在界面上由一条摘要替代;日志中原文仍在。

护栏(故意保留,不宜削弱)

  • 折叠前必须人工确认(确认卡;取消/超时不变更会话)。
  • 仅已结束 turn;当前进行中 turn 拒绝压缩。
  • 节点 0(系统提示)永不触碰。
  • 客户端无法判定会话时会请你选择,不猜测会话。
  • 面板操作带两步确认,5 秒无操作自动取消。

安装与启用

安装方式为把包 link 进 DSH profile,并在 bundles 中启用;资料未提供 dsh plugin add github:... 一类命令,以下摘自 README。

1. 在 profile 的 package.json 中声明依赖:

# ~/.dsh/profiles/<profile>/package.json
"dependencies": { "dsh-compaction-selective": "link:<path-to-this-repo>" }

2. 在 profile 配置里加入 bundle:

"dsh": { "profile": { "bundles": [ "...", "dsh-compaction-selective" ] } }

3. 在 profile 的 node_modules 建立链接:

# Windows:
cmd /c mklink /J <profile>\node_modules\dsh-compaction-selective <path-to-this-repo>

# POSIX:
ln -s <path-to-this-repo> <profile>/node_modules/dsh-compaction-selective

重启 DSH。插件出现在 插件 / Plugins 列表,设置在其详情页;浏览器端需刷新以加载客户端 bundle。

环境要求(package.json): Node >=22;DSH 版本需满足 engines.dsh 范围,不满足时可能被安装门禁拦截(上游提供 dsh plugin allow-version 用于精确版本豁免)。

卸载: 从 bundles 与 dependencies 移除包名、删除链接、重启;若跑过本地补丁,按 patcher 写的 *.bak-* 恢复。

插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证。

配置

有效配置 = 内置默认 < bundle 行上的 config: < 设置文件。文件路径:~/.dsh/compaction-selective.json(也可在插件详情页编辑)。

键 默认 含义
enabled true 总开关
minShadowedTokens 3000 选择下限;低于官方「摘要须更小」校验时提前拒绝
maxSurfaceShare 0.6 单次折叠最多覆盖可见面的比例
approvalTimeoutMs 180000 确认卡等待时长,超时视为未确认
maxPerTurn 1 每轮允许折叠次数
foldSummary true 是否使用 fold 形摘要模板

典型用法

对话里用自然语言或区间

在会话中说明要压的区间,例如「压缩最近两轮」或「压缩 34-35 轮」。走模型工具路径时会弹出确认卡,展示精确范围、节点数与预估释放量,点击「确认压缩」后才会折叠。

面板与菜单

  • 输入框左侧 选择性压缩 按钮:打开面板,查看会话概览、最近 1/2/3/5 轮的 token 估计、显式区间与轮次表;操作需两步确认(5 秒无操作自动取消)。
  • + 菜单 → 指令 → 选择性压缩:与其它 DSH 指令同一位置。

界面标签随宿主语言(English / 中文);无语言信息时标签默认中文。

CLI 上启用「空闲态 + 指定区间」(可选)

若要在面板/菜单里直接折指定区间,在 CLI 安装上执行仓库中的补丁脚本(升级 DSH 后建议重跑,脚本在 upstream 形态变化时会响亮失败且不写坏文件):

patches/apply-compaction-patch.ps1

桌面应用因 app.asar 无法打同样补丁,请改用对话 + 确认卡路径。

适用场景与注意

适合: 长会话里需要减掉指定段落(尤其近期调试枝节)而不是只能压最旧内容;希望在压掉可见复述的同时保留决策与路径类信息;接受「每次折叠都要点确认」的节奏。

注意:

  • 只处理已结束 turn;进行中的轮次不能选入区间。
  • 与官方「摘要体积」规则一致:minShadowedTokens 等会在不满足时提前拒绝,避免无效折叠。
  • 依赖 DSH 内部 slot、compactRegion、dsh.bundle.patch、dsh.client 等契约,未 API 冻结;大版本升级后重跑补丁并执行 npm test 更稳妥。
  • 上游关于「空闲态 + 显式区间」公开 API 的讨论:deepseek-ai/deepseek-harness#discussions/12813

仓库自测命令:

npm test

结尾

dsh-compaction-selective 把「压哪几轮」交回给人:指定已结束区间、看清预估、确认后再折成摘要,并尽量不把人带进误操作。若你已在 DSH 0.2.x 上维护长会话,可按上文 link 安装,从对话确认卡或面板两条路径试一轮小段压缩。

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

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

小夜