前言¶
在 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 只作用于你本次带参数触发的摘要,自动压缩不受影响。
- 目录页:skillhub.cn/plugins/Shinarin/dsh-compact-focus
- 源码与说明:github.com/Shinarin/dsh-compact-focus
- 许可证:MIT(见仓库
package.json) - 当前包版本:0.1.0;
engines.dsh为>=0.2.1-rc.1 <0.3.0-0
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)。
- 直接输入:
/compact 重点总结项目框架回车。 - Tab 补全:输入
/com→ 候选中选compact→Tab补全为/compact→ 输入重点后回车。DSH 候选默认不预先高亮,需先↓选中再Tab;补全后不输入内容直接回车等于无参数/compact,与装插件前一致。 - 菜单:输入框
+→「指令」→「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 预设下做长会话开发,值得一试。