DeepSeek Harness 本地交接压缩后端

前言

DeepSeek Harness(DSH)默认的压缩后端在上下文达到阈值后,需要发起一次额外的模型摘要调用,产生成本并增加延迟。对于需要严格控制成本、追求可复现性的场景,这个额外的模型调用并不总是必要。

插件定位

dsh-compaction-local-handoff 是 DeepSeek Harness 的一个插件,由维护者 xingzoudefengye 提供。它为 DSH 提供了一个零模型调用的压缩后端:当上下文到达压缩阈值时,用本地、确定性、有界的交接文档替代一次额外的模型摘要调用。

核心功能

本插件将默认后端中的模型摘要步骤替换为纯本地拼装。压缩前端的触发阈值、逐字保留策略、工具结果剪枝、区间选择、并发锁等逻辑保持不变,只改变检查点生成的来源。

与默认后端的差异

| 行为 | 默认后端 | 本插件 |
|—|—|
| 触发阈值 | 同 | 同 |
| 逐字保留近期尾部 | 同 | 同 |
| 工具结果剪枝 / 图片卸载 | 是 | 同 |
| 区间选择(工具配对安全、不遮蔽系统提示词) | 是 | 同 |
| 日志事务 / 并发锁 / 上下文溢出恢复 / /compact | 是 | 同 |
| 检查点怎么来 | 一次模型调用 | 本地拼装,0 次调用 |
| 检查点内容 | 模型自选措辞的 8 节 Markdown | 固定字段、逐字摘录、硬字符预算 |
| 上限 | 模型输出上限 | 6,000 字符,且不超过被遮蔽内容的一半 |
| 成本 / 延迟 | 每次触发都付费,还要等 | 免费、即时、可复现 |

交接文档内容

<compacted-summary> 内是一段有界文本,包含以下字段:

  • guide:不表示任务已完成;最新用户要求;提示完整原文仍在会话日志中。
  • summary:阶段性要求/约束(历史内 system 更新,保留来源,标注”不作为新授权”);压缩区间内涉及的文件(最多 25 个);回合级史书(装了 dsh-session-recall 时出现);最近 4 次工具调用及结果;最近一条助手进展原文摘录;未解决报错线索(最多 2 条);上次交接摘录(非新指令);以及”工具结果只保留预览”的收尾提示。

各字段有独立字符预算(用户要求 1600、进展 900、单条工具 280、约束 300、旧交接 1200),总计硬上限 6,000 字符;实际预算还会被压到”被遮蔽字符数的一半减 600”(600 是给 DSH 固定 wrapper 留的余量)。凭据形态的文本(sk-…、Bearer …、api_key=、password/secret/token)会被 redact,<thinking> 块被剥离。

装了 dsh-session-recall 后,交接里会多一段回合级史书(≤2400 字符,且不超过交接预算的 40%):它由会话日志折叠而来,所以重复压缩也不会丢——被上一次交接替换掉的早期回合,其结论仍然在里面。

安装与启用

插件需要 Node.js >=22,以及 DSH 的 @deepseek-ai/dsh-compaction-basic >=0.2.0-rc.2。该包由 DSH 自带,本仓库不 vendor 它。

安装命令

dsh plugin --profile web add "github:xingzoudefengye/dsh-compaction-local-handoff"

这条命令把包写进 profile 的 dependencies,并把声明了 dsh.bundle 的它追加进有序的 dsh.profile.bundles 列表。两者缺一不可:前者让 Node 能找到模块,后者让它作为补丁层参与启动。

重启 host

新增模块根不在 HMR 热重载范围内:必须完全退出并重新启动运行 dsh 的进程(GUI 即重启应用/后台服务)。只刷新页面、只重载配置都不够。

验证安装

dsh plugin --profile web why dsh-compaction-local-handoff

预期输出:

dsh-compaction-local-handoff@0.2.4
└── dsh-profile-web (dependencies)

Found 1 version of dsh-compaction-local-handoff

验证运行时

在一个 agentPreset: "standard" 的 web 会话里执行 /compact,然后看压缩记录/会话日志:

17:53:57.134  compaction/start
17:53:57.145  compaction/summary   provider=local  model=local-handoff
              shadowedRange 8-61 · 21 nodes · 5713 tokens
              llmStreamCall=无 · rawOutput=无 · usage=无 · maxTokens=无

关键是 provider=local、model=local-handoff,且摘要事件不带 llmStreamCall / usage / maxTokens——模型摘要路径一定会带这三者。

适用场景与注意

适合需要严格控制成本、追求可复现输出、对延迟敏感的场景。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

本插件通过 cordis.patch.yml 对 DSH 的 preset 进行补丁,意味着这些 preset 清单在 profile 里被冻结在生成时的那一版。DSH 升级若改动了 shipped preset(新增工具、调整 prompt 段),不会自动拿到。反向也一样:仓库里的快照是在某个具体 harness 版本上生成的,比它旧的 harness 可能不认识快照里新增的 preset 行。

结尾

本插件将模型摘要调用替换为本地确定性交接文档,实现零成本、即时压缩、可复现输出,适合对成本和可复现性要求较高的 DSH 用户。

  • 目录页:https://www.skillhub.cn/plugins/xingzoudefengye/dsh-compaction-local-handoff
  • GitHub:https://github.com/xingzoudefengye/dsh-compaction-local-handoff
羽毛球分组比赛记分
小程序二维码

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

小夜