dsh-compact-focus:为 /compact 增加可指定的摘要重点

前言

在 DeepSeek Harness(DSH)里,长会话会触发上下文压缩:较早的历史被替换成一条摘要,以腾出 token 给后续对话。内置 /compact 可以手动触发同类压缩,但不接受参数,摘要器收到的指令也是固定的。结果是:你清楚这次压缩最想留下的是「项目框架」还是「部署与数据库决策」,却无法告诉摘要器优先保留哪一块。

社区插件 dsh-compact-focus(维护者 Shinarin,目录分类为「记忆」)在官方压缩流程不变的前提下,给 /compact 增加可选的「摘要重点」参数。下面介绍它做什么、如何安装,以及使用时的前提与限制。

这是什么

dsh-compact-focus 是面向 DSH standard 预设的 bundle 插件:替换 preset-standard 里 compaction 组的两项——用本包后端覆盖 @deepseek-ai/dsh-compaction-basic 的摘要逻辑,用本包命令覆盖 @deepseek-ai/dsh-command-compact 的 /compact 注册。自动压缩阈值、保留近期尾部、compaction/start→compaction/summary→compaction/end 事务、token 计价与错误码均与官方一致;focus 只作用于你本次带参数触发的摘要,自动压缩不受影响。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行阅读源码与许可证——插件在 当前 DSH 进程权限 下运行。

核心功能

带重点的手动压缩

在输入框执行(示例来自仓库 README):

/compact                             → 与内置命令相同,压缩较早历史
/compact 重点总结项目框架             → 压缩较早历史,摘要优先保留「项目框架」相关内容
/compact 重点保留部署与数据库相关决策  → 同上,摘要重点换成部署与数据库

有重点时,摘要请求会在官方摘要逻辑末尾追加一条 focus 指令;摘要的固定 Markdown 结构不变,focus 只影响结构内的取舍,不新增章节。

摘要模型与官方差异的一点修正

摘要使用你在该会话里 当前选中的模型。官方摘要器会优先复用会话最后一次路由的模型,在切换模型或恢复旧会话时,可能把摘要发到已不再使用的 provider(典型现象:/compact 很快失败并报 Connection error.)。本插件读取会话日志里最新的 model/selection 覆盖该行为;若行配置里显式写了 summarizationProvider,仍以行配置为最高优先级。

界面与失败提示

带重点时,聊天记录里常见两行:第一行是你写的重点说明,第二行是客户端压缩标记(可展开看摘要)。为实现这种拆分,带重点的调用不传 compactNow 的 sourceCommandId,压缩事件里会少一个「由哪个命令触发」的关联字段。裸 /compact 仍为原来的单行合并效果。

失败时提示会回显本次重点(最多 120 字),例如:

未能生成有用的摘要,本次未压缩(Connection error.)。尝试已记录在会话日志中。(本次摘要重点:重点保留接入规则)

安装与启用

需要 Node 与 DSH desktop 0.2.1-rc.x(与 engines.dsh 一致)。因 DSH 的 desktop profile 由 Electron 应用独占管理,dsh plugin 会拒绝该 profile,本仓库通过 install.ps1 建立 junction;其他 profile 可优先使用官方的 plugin_manager install_bundle(见 README)。

在本地取得仓库后,在插件目录执行(命令来自 README):

git clone https://github.com/Shinarin/dsh-compact-focus.git
cd dsh-compact-focus
pwsh -File .\install.ps1

脚本可重复执行,主要步骤包括:在仓库内建 node_modules\@deepseek-ai 指向 %DSH_HOME%\profiles\node_modules\@deepseek-ai;在 desktop profile 下 link 本包;更新 package.json 依赖与 dsh.profile.bundles。README 强调:缺了第 1 步的 junction 可能导致 ERR_MODULE_NOT_FOUND,且 DSH 可能静默跳过整个 bundle,表现为装好后无反应。

安装后自检:

npm run check:install    # 两行 ok 才算装好

然后 完全退出并重新启动 DSH desktop,新建会话再试 /compact 重点…。

卸载:

pwsh -File .\uninstall.ps1

移除 bundle 与 junction 后重启,即恢复内置 /compact。

调试可在启动 DSH 的环境中设置 $env:DSH_COMPACT_FOCUS_DEBUG = '1',注入 focus 时 Host stderr 会打印 [dsh-compact-focus] injecting …。

典型用法

前提:当前会话使用 standard 预设(本插件只覆盖 preset-standard;如 zcode-architect 等自定义预设仍是内置 /compact)。

  1. 直接输入:/compact 重点总结项目框架 回车。
  2. Tab 补全:输入 /com → 候选中选 compact → Tab 补全为 /compact → 输入重点后回车。DSH 候选默认不预先高亮,需先 ↓ 选中再 Tab;补全后不输入内容直接回车等于无参数 /compact,与装插件前一致。
  3. 菜单:输入框 + →「指令」→「compact」,输入重点后回车。

命令仅在 agent 空闲、没有进行中的压缩时可用;压缩期间发送的消息会排队,结束后才继续。

适用场景与注意

适合:在 standard 预设下,长会话需要手动压缩,且希望这一次摘要更偏向某类信息(架构、部署决策、接入规则等),又不想改官方压缩策略或摘要 schema。

务必知晓的限制(摘自 README):

  • 只覆盖 preset-standard。
  • focus 不能指定「压哪一段历史」,压缩范围仍由官方策略选择;不能改变摘要输出 schema。
  • 每次 /compact 的 focus 不持久化,不会成为以后自动压缩的默认值。
  • 压缩不缩小系统提示词、工具定义和 session 前缀;摘要仍是一次额外模型调用,focus 只增加约几十个 token。
  • 若当前选中模型的上下文窗口小于待压缩历史,摘要会失败;可换大窗口模型,或在行配置固定 summarizationProvider / summarizationModel。
  • 移动插件目录后须重跑 install.ps1,否则 profile 里的 junction 仍指向旧路径。

DSH 大版本升级后,若标准预设插件列表变化,可能需要按 README「升级注意」从安装包重新导出 standard.patch.yml 并运行 tools/gen-focus-patch.mjs 再生成 cordis.patch.yml;加载失败时先卸载本插件可恢复内置行为。

结尾

dsh-compact-focus 在不改动官方压缩事务与计价的前提下,为 /compact 增加可选摘要重点,并修正摘要模型与会话当前选型不一致时的路由问题。若你主要在 standard 预设下做长会话开发,值得一试。

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

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

小夜