wicm84266964
dsh-minimal-mode-compaction
为 DeepSeek Harness 极简模式增加自动上下文压缩、/compact、/context 和模型主动压缩,解决极简模式长任务无法持续工作的问题。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 17, 2026
- Updated
- Aug 17, 2026
Introduction
dsh-minimal-mode-compaction
为 DeepSeek Harness 的极简风格 agent 增加长会话所需的三种压缩路径:
compaction-basic的 token 压力自动压缩和上下文溢出恢复;- 人工
/compact; - 模型在任务中调用
compact_now,由插件排队到当前回合结束后执行。
本项目不复制官方压缩引擎。它只提供一个用户 preset 和一个调度工具,底层复用 DSH 自带的 dsh-compaction-basic、dsh-command-compact 和 dsh-compaction-tool-result-pruner。
它还注册一个 /context 命令:直接输入 /context 显示当前有效上下文窗口,输入 /context 256k、/context 1m 或纯 token 数值时写入 DeepSeek 模型设置。命令写入的是 DSH 原生 llm-deepseek 设置,后续请求实时使用新容量;自动压缩仍按 preset 的阈值比例计算。
和现有项目的区别
公开生态里已经有相近项目:
wangxiang0605qvq/dsh-auto-compact只有模型主动调度工具,要求 preset 已经挂载compaction-basic;songoao25/dsh-auto-compact只给已有压缩引擎调整阈值,并跳过出厂minimal;KitDoesIt/dsh-compaction-instant是另一个无模型压缩引擎,也需要用户把压缩能力挂进 preset。
本项目的目标是把官方 minimal 的工具组合原样保留,只增加一个可选择的 minimal-compaction 用户 preset,因此不修改 DSH 出厂文件,也不替换摘要引擎。
安装
发布到 GitHub 后,可以直接从仓库安装:
dsh plugin --profile web add https://github.com/wicm84266964/dsh-minimal-mode-compaction.git
在 WSL 中从仓库路径安装到当前 DSH profile:
dsh plugin --profile web add /mnt/c/saveproject/LBJ-workspace/open-source/dsh-minimal-mode-compaction
node /mnt/c/saveproject/LBJ-workspace/open-source/dsh-minimal-mode-compaction/scripts/install-preset.mjs
如果 WSL 使用了独立的 DSH_HOME,显式指定它:
node /mnt/c/saveproject/LBJ-workspace/open-source/dsh-minimal-mode-compaction/scripts/install-preset.mjs \
--dsh-home "$DSH_HOME"
然后重启 DSH,在 agent preset 选择 minimal-compaction(显示名:DeepSeek Harness 极简模式长会话)。已有会话不会自动换 preset,新会话选择该 preset 即可。
安装器默认不会覆盖同名 preset;确认要替换时才使用 --force。先预览路径可以使用:
node scripts/install-preset.mjs --dry-run
发布渠道
DeepSeek Harness 当前没有独立的官方插件市场或审核提交入口。官方插件机制以 GitHub/npm 包为分发来源,用户通过 dsh plugin add 安装;本项目优先使用 GitHub 发布,后续如有需要再同步发布 npm 包。
上下文窗口设置
插件不会把模型上下文强行设成 1M,也不会覆盖用户的模型设置。compaction-basic 使用 DSH 最终解析的模型容量:
llm-deepseek.models[]中该模型的contextWindow;- 没有精确模型条目时使用
llm-deepseek.defaultContextWindow; - 两者都省略时才使用 DeepSeek 适配器默认的 1,000,000。
Web UI 中的位置是:设置 → 模型 → DeepSeek → 编辑模型 → 容量/高级 → 上下文窗口。
也可以直接参考 settings.example.yaml,例如把 V4 Pro 的有效窗口设为 256K:
llm-deepseek:
defaultContextWindow: 262144
models:
- id: deepseek-v4-pro
contextWindow: 262144
maxTokens: 65536
注意:models 是模型目录配置;如果原设置中还有其他模型,编辑时要保留它们。精确模型的 contextWindow 优先于默认值,随后自动压缩按这个容量计算。
contextWindow 是输入和输出的合计预算;如果把它降到 256K,建议同时把 maxTokens 调到一个和任务相容的值,避免输出上限本身占满预算。插件不会擅自修改这两个模型设置。
压缩默认值
生成的 preset 默认配置为:
| 设置 | 默认值 |
|---|---|
| 自动压缩阈值 | 有效上下文窗口的 75% |
| 原文保留尾部 | 有效上下文窗口的 20% |
| 摘要输出上限 | 8192 tokens |
| 上下文溢出恢复 | 最多重试 1 次 |
这些值位于用户 preset 的 agent.cordis.yml,可以按需调整。工具结果剪枝默认保留 4096 字符头部和 1024 字符尾部。
开发检查
npm test
npm run check
当前包只要求 DSH 运行时提供官方 peer dependencies;不要在本项目内复制官方 compaction-basic 源码。