dsh-context-handoff:用 Token 计量决定何时「换会话」交接上下文

前言

在 DeepSeek Harness(DSH)里做长会话开发时,上下文窗口会逐渐被历史消息占满。DSH 自带的 /compact 可以在同一会话内用摘要替换较早历史,适合「窗口快满了但还想在当前会话继续」的情况。若会话已经很长,每一轮仍可能重复发送大量 token;有时更划算的做法是生成一份可独立阅读的交接文档,在新会话里只读一次摘要,再接着做。难点在于:写交接太早会浪费摘要成本并丢掉仍需要的细节,写太晚则已经多付了许多「超大轮次」的开销。dsh-context-handoff 面向的就是「何时值得带着高质量交接离开当前会话」这一问题,并用 ctx.tokenMeter 做可度量的继续 vs 切换对比。

这是什么

dsh-context-handoff 是 DSH 的「上下文交接」插件,维护者为 idianzi,在社区插件目录中归类为「记忆」。它会把长会话总结成自包含的 Markdown 文件,结合 token 经济性判断是继续当前会话还是开新会话恢复,并支持侧栏开关按工作区启用自动模式。插件以 MIT 许可证发布,当前 package 版本为 0.3.4,引擎要求 Node >=20.3.0、DSH >=0.2.1-rc.3 <0.3.0(README 中写明已在 DSH Desktop 0.2.1-rc.3 上验证)。

与 /compact 的关系

两者不互斥。/compact 回答:上下文快满时如何在本会话里继续。本插件回答:何时值得用交接文件离开会话。Compaction 的摘要成本会在后续每一轮继续产生;交接文件由新会话读一次即可,旧的大段历史不再重复发送。插件会先复用 /compact 做廉价压缩,仅当压缩后上下文仍超过阈值时才写交接——先便宜后昂贵。模型不可用或失败时,仍有确定性的保守摘要兜底;写入前会对常见 API key、token、私钥等做脱敏。

核心功能

  • /handoff:生成交接文档,并报告继续与切换的对比结论。
  • /handoff plan [turns]:仅分析,不调用模型、不写文件;turns 为预测 horizon,默认取配置中的 horizonTurns。
  • /handoff now [tokens]:立即写入,可指定摘要 token 预算(最少 600)。
  • /handoff status:当前上下文压力与最新交接文件信息。
  • /handoff list:列出输出目录中较新的文件。
  • /handoff stats:汇总本地 JSONL 账本中的累计摘要成本与预估节省。
  • /handoff auto [on|off]:查看或设置当前工作区的自动模式开关。
  • /handoff help:帮助。命令依赖 dsh-commands UI 适配器;自动模式不依赖该适配器也可工作。

侧栏与自动模式:会话标题旁有 chip(例如「上下文 545k」或自动模式下的「自动总结 545k」),点击可展开右侧栏并打开交接面板;也可从右侧栏添加菜单进入「上下文交接 / Context Handoff」。压缩在推荐点会自动执行(与 /compact 同源后端,每会话默认最多 maxCompactionsPerSession 次,释放不足 10% 时提前停止);交接仅在压缩后仍超阈值时执行,由开关控制:关则只压缩,开则写文件并开新会话。开关状态保存在 .dsh/handoff/auto.json。自动模式在每个源会话上最多触发一次自动交接;默认 autoNewSession: true,设为 false 则只写文件不建新会话。

输出与恢复:默认写入 .dsh/handoff/,文件含 YAML frontmatter、可复制的一行恢复提示与正文摘要。同目录下的 ledger.jsonl 记录 token 数、模型、文件名、会话 id(不含对话正文),可通过 ledger: false 关闭。

安装与启用

插件上架 DSH 插件市场后可直接安装;亦可使用 README 中的 CLI:

Web 环境:

dsh plugin --profile web add dsh-context-handoff

Desktop 用户优先在 Plugins 界面安装;若用 CLI,需在 Desktop profile 初始化且完全退出应用后:

dsh plugin --profile desktop add dsh-context-handoff

本地开发链接:

dsh plugin --profile web add link:/absolute/path/to/dsh-context-handoff

安装后执行 /handoff help 验证。DSH 生态采用「一切皆插件」思路;社区目录站点 skillhub.cn 为独立社区索引,与 DeepSeek / 幻方无官方从属关系。

典型用法

手动交接流程(README 推荐):

  1. /handoff plan 10 查看经济性。
  2. 准备离开时执行 /handoff。
  3. 新开会话,粘贴:Read @.dsh/handoff/<file>.md and continue from the "Next steps" section.
  4. 从「Next steps」继续;旧会话可保留作证据。

plan 输出示例(节选,说明插件如何呈现计量结果):

Context: 118k / 128k (92%), 10.0k headroom
Composition: 11.0k fixed prefix + 107k messages
Digest: 3.0k tokens (budget 3.0k)
Per-turn saving: 57.2k tokens (cache factor 0.55) · break-even 1.2 turns
Over 8 turns: saves 388k tokens after paying for the summary

Recommended now: a handoff repays itself in 1.2 turns, and the context is already at 92% of the window.
Recommendation point: 70.4k tokens (55% of window)

计量使用 tokenMeter 测得的 P(当前 prompt 压力)、固定前缀 S、交接文件 token 数 D、对比 horizon H 与缓存因子等;结果为相对 token 成本决策参考,不是跨厂商账单。默认推荐点与窗口相关(例如 128k 窗口下约 70.4k,即 recommendAtRatio 0.55 等约束下的结果)。

配置片段(摘自 README,可按需在 DSH 配置中调整):

- id: context-handoff
  config:
    outputDir: .dsh/handoff
    targetDigestTokens: 3000
    recommendAtRatio: 0.55
    recommendMaxTokens: 256000
    horizonTurns: 8
    auto: false
    autoNewSession: true

适用场景与注意

适合长时间在同一工作区推进任务、会话 token 压力持续上升、需要在「继续本会话」与「开新会话 + 单文件恢复」之间做理性选择的 DSH 用户。若你只需在当前会话内压缩历史,继续使用内置 /compact 即可;两者可配合使用。

插件在 DSH 进程权限下运行,安装前应自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。勿将 plan/stats 中的 token 估算当作精确计费数据,尤其 CJK 与 JSON schema 场景下 meter 为启发式近似。

结尾

dsh-context-handoff 把长会话总结成可交接的 Markdown,用可测量的 token 模型回答「现在换会话是否更划算」,并通过侧栏与自动模式把压缩、写文件、建新会话串成可选工作流。目录页:https://www.skillhub.cn/plugins/idianzi/dsh-context-handoff;源码与完整说明:https://github.com/idianzi/dsh-context-handoff(含 中文 README 与设计文档链接)。

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

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

Xiaoye