dsh-fold-context:可恢复的上下文释放与可预测的 DSH 压缩

前言

在 DeepSeek Harness(DSH)里跑长任务时,上下文会不断堆叠:工具输出、附件、多轮调查结论都留在窗口里。官方 compaction 能把较旧历史收成摘要,但「哪一段已经用完、能否单独拿掉又不丢证据」往往不够直观;模型若靠正文手写编号,也容易和真实条目对不上。

dsh-fold-context 把用户文字、助手回复、工具调用与结果、图片、文件分别赋予稳定编号;已用完的工具结果正文和单个附件可在安全步骤边界独立释放为轻量占位,原文仍可按编号恢复。较旧连续历史仍走 DSH 官方摘要事务,释放、排队、摘要覆盖在状态和 Web 工具卡片里分开呈现。下面介绍插件定位、能力与安装启用方式。

这是什么

  • 名称:dsh-fold-context(目录与包名;GitHub 仓库 HumXC/dsh-fold-context)
  • 维护者:HumXC
  • 分类:模型推理(社区目录归类)
  • 当前版本:0.2.3,面向 DSH 0.2.0-rc.2
  • 一句话:Recoverable context release, compression, and native tool cards for DeepSeek Harness——让长任务上下文压缩更可预测,并保留可恢复的编号占位与原生工具卡片展示。

插件以 DSH 官方摘要事务为基础;记忆提炼提供独立适配接口,自动提炼与 Mnemon 集成在 README 中标明尚未实现。真实模型摘要质量、供应商缓存与节费效果需在实际环境中自行评估。

核心功能

编号与内容身份

用户文字、助手文字、工具调用与结果、图片、文件各有稳定编号(如 §U17§、§A18§、§T19§、§I20§、§F21§),模型无需在正文中手工打印编号。条目状态包括 available、queued、released、summarized;原位释放后占位可见为 §T19R§ 等形式,原编号与 R 别名均可用于查询与恢复。

独立原位释放与官方摘要

  • 独立释放:工具结果正文或单个附件在安全步骤边界替换为轻量 R 占位,不调用摘要模型;用户文字、助手回复和工具调用保留。
  • 摘要调度:较旧连续历史仍按官方摘要事务整理;低压力下遵守间隔、预计缩短量与回本门槛等经济调度(由 compaction.auto、scheduling.* 等配置控制)。
  • 动态提醒:候选积累、停留较久或接近压力阈值时提示模型检查;忽略后逐步退避,不会自动代替模型选择释放内容。

恢复与查询

按编号分页展开原文,或先 context_search 再 context_expand;图片、文件在校验后重新传入或提供读取句柄。恢复进入新上下文,不撤销已有压缩。依赖 sessionQuery、附件存储与会话日志/checkpoint 正常保留。

Web 与回放

五个 context_* 工具配有专用 Web 工具卡片(DSH 单色图标与主题,中英切换)。独立释放提交后,聊天中可展示「已释放上下文」,列出本批编号、预览、原因与等待项;token 预估按本批原始与替换消息的差值计算。

提供的工具:

工具 用途
context_release 批量释放已用完的工具结果正文或单个附件
context_compact 请求在后续步骤边界生成摘要
context_status 查看编号、状态、提醒与摘要调度计划
context_search 按片段、角色或工具名查找历史
context_expand 按编号恢复原文或附件

安装与启用

需要 Node.js 24.11.0 或更高,以及 DSH 0.2.0-rc.2。安装插件与启用压缩引擎是两步:安装主要加载 Web 展示;context_*、释放、提醒与摘要须在会话实际使用的 Agent preset 的 compaction 组内挂载引擎。

1. 安装到 profile

从 GitHub 安装到 web profile(其他 profile 将 web 换成对应名称):

dsh plugin --profile web add github:HumXC/dsh-fold-context

若 pnpm 阻止 Git 依赖构建,按提示批准本仓库对应的依赖键后重新执行。也可从 GitHub Releases 下载已构建包,经 DSH 插件管理安装。

2. 在 preset 中替换压缩引擎

安装会通过 cordis.patch.yml 在 profile 根层挂载 fold-context-ui(uiOnly: true),仅负责卡片与释放过程 UI。要在会话中启用压缩引擎,在所用 preset 的 config.plugins 里找到 id: compaction 组,将 compaction-basic 替换为 fold-context,并保证组 disabled: false,保留 compaction: true 与 toolResultPruner: true。每个 compaction scope 只能有一个压缩引擎,不能同时挂 compaction-basic 与 dsh-fold-context。

替换示例(diff 思路):

-      - id: compaction-basic
-        name: "@deepseek-ai/dsh-compaction-basic"
+      - id: fold-context
+        name: dsh-fold-context

组内还可保留 @deepseek-ai/dsh-command-compact(手动 /compact)与 tool-result-pruner。完整片段与注释见仓库 examples/compaction-group.fragment.yml。

尚未自有 preset 声明时,可先导出配置核对:

dsh --profile web --dump-config > web.config.yml

将实际使用的 preset 整条复制到 profile 覆盖层(默认 ~/.dsh/profiles/web/cordis.patch.yml,或 DSH_HOME 下对应路径),只改其中的 compaction 组。不要把 compaction 组片段直接贴在 profile 补丁顶层,也不要用它替换整份 preset。

3. 验证

安装若返回 restart-required,先重启 DSH 再刷新页面。修改 preset 后请新建选用该 preset 的会话验证;旧会话不会自动切换 revision。

在新会话中让助手调用 context_status:能调用才说明压缩引擎已接入。仅看到专用卡片样式不能证明引擎已启用。

典型用法

模型启用后会收到使用规则与编号声明。释放已用完证据示例(编号须来自当前会话,勿照搬示例):

{ "ids": ["§T19§", "§I20§"], "reason": "调查已完成,结论已经保留" }

先搜索再恢复:

{ "id": "§T19§" }

后者为 context_expand 参数;文本较长时按返回的 nextOffset 继续读取。需要立即整理历史可用官方 /compact;context_compact 走代码调度,不保证下一步即执行。

默认提醒条件(README 摘要):候选约 16000 token、或 4000 token 停留 8 个业务步骤、或总输入达有效压力阈值 80% 且候选至少 4000 token 等;每次最多列 5 个候选。摘要触发包括常规压力、供应商溢出、满足经济门槛的提前整理,以及用户 /compact。

主要配置默认值见 README,例如:

compaction:
    auto: true
    thresholdRatio: 0.8
    retainRatio: 0.16
    headroomTokens: 65536
scheduling:
    enabled: true
    proactive: true
    minIntervalSteps: 8
    minSavingsTokens: 2048

完整项见仓库配置示例与 README「配置」一节。

适用场景与注意

适合需要持续读文件、调工具、多轮调查并跨很多步推进的任务;希望「用完的工具输出/附件先摘掉、需要时再按编号拉回」的团队,比单纯依赖一次性摘要更容易预期窗口变化。

注意事项:

  • 插件在 当前 DSH 进程权限 下运行;安装前请阅读仓库源码与 LICENSE,自行判断是否满足安全与合规要求。
  • 社区目录 skillhub.cn 插件页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式。
  • 记忆适配接口已提供,自动提炼与 Mnemon 集成尚未实现;独立释放、提醒、摘要、恢复等能力在仓库隔离测试中验证,生产环境摘要质量与费用仍须实测。

结尾

dsh-fold-context 在 DSH 0.2.0-rc.2 上提供可编号、可独立释放、可恢复证据的上下文管理,并与官方摘要、pruner、手动 /compact 分工协作。安装命令与 preset 替换步骤以 README 为准;进一步细节与 Releases 见 GitHub 仓库,目录介绍见 SkillHub 页面。

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

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

小夜