dsh-handoff-session: Long Session Pressure Awareness and Automatic Handoff

前言

在 DeepSeek Harness(DSH)里做复杂任务时,单个 Session 往往会拖很多轮:上下文变满、模型表现下滑,但手头还有未完成的改动和决策。常见做法是人工让模型写交接文档,再新建 Session、粘贴续接提示词——步骤多,也容易漏关键文件或验证结果。

下面介绍社区插件 Session Handoff(会话交接)(npm 包名 dsh-handoff-session),由维护者 BlueOcean3214 发布,分类属于「记忆」类能力:在会话接近寿命上限前,由模型在合适检查点调用工具写出交接文档,并在同一工作目录自动开新 Session 继续执行。

这是什么

dsh-handoff-session 是 DSH 的 Host + Client 插件 bundle。Host 侧负责会话压力投影、运行时提示与 session_handoff 工具;Client 侧在 Web 输入框下方提供「会话交接」入口与压力面板,不占用图标位。

它要替代的手工流程是:写交接文档 → 点「下一步」→ 复制提示词 → 新建会话 → 粘贴。装好后,模型在策略允许时只需调用一次 session_handoff 即可完成文档、转录、新 Session 创建与首轮续接提示。

核心功能

压力投影与动态提示

插件折叠每个会话中的 turn/start、step/start、request/context、assistant/message、tool/call、tool/result 等事件,得到轮数、步数、上下文占用、累计 token、缓存命中率等指标。

每次请求会在运行时上下文注入 <session-pressure>,告知当前压力与 level:low / watch / recommended / urgent。系统提示中另有「会话寿命与交接」规则:仅在 recommended 或 urgent,且处于可持久化检查点时,才应调用交接工具。

默认阈值(可在配置中修改)参考了「约 22 轮 / 677 步 / 24% 上下文」这类状态落在 recommended 的场景——模型会在下一个干净检查点交接,而不是每轮打断。

交接工具 session_handoff

调用后会:

  1. 将目标、现状、已完成、待办、决策、关键文件、验证结果等写入 <cwd>/.dsh/handoffs/handoff-<时间>-<会话>.md(目录默认 .dsh/handoffs,可配置 handoffDir)。
  2. 可选生成同目录下的 handoff-<时间>-<会话>.transcript.md,供后续 read / grep 检索细节;不会整份塞进新 Session 上下文,新 Session 首轮只读摘要。
  3. 通过 sessionController.create() 新建 Session,用 sessionController.prompt() 发送「读交接文档 + 继续指令」,并按配置结束旧回合、自动切到新 Session。

新 Session 看不到旧对话,因此工具参数里的 summary 与 nextPrompt 必须是自包含的。

Client 界面

client.js 在输入框下方右侧显示「会话交接」四字,颜色随压力从次要色变为警告色或品牌色。点击可展开面板,查看三项阈值进度与说明;「现在交接」会把交接指令填入输入框并发送。交接完成后可自动切到新 Session,也可手动「打开新会话」。

安装与启用

从 npm 安装(资料原文命令):

dsh plugin add dsh-handoff-session

该包为 Host + Client bundle,无构建步骤。安装后需在 DSH 桌面窗口刷新 Web 页面(例如 Ctrl+R),或使用 dsh web 打印的带 token 地址;Client 半才会进入页面。直接访问裸的 http://127.0.0.1:<port> 可能返回 401,与插件无关。

也可在 Plugin Manager 中对本地开发目录调用 install_bundle(target 传绝对路径),装好后 list_plugins 中应出现 Session Handoff / 会话交接。

自托管市场索引(可选):在 Plugins → Discover 的 Index sources 中加入
https://raw.githubusercontent.com/BlueOcean3214/dsh-handoff-session/main/market/index.json,刷新后从列表安装。社区目录站点 skillhub.cn 与 DeepSeek / 幻方无官方从属关系,DSH 生态理念是「一切皆插件」。

配置要点

配置位于包内 cordis.patch.yml 的 config。修改后需通过 plugin_manager 的 set_bundle 关闭再打开 bundle,Host 才会重读 patch;仅改 JS 不会热更新 Host 半。

键 默认 含义
turnsWatch / turnsSoft / turnsUrgent 10 / 20 / 30 轮数阈值
stepsWatch / stepsSoft / stepsUrgent 250 / 500 / 900 步数阈值
contextWatch / contextSoft / contextUrgent 0.40 / 0.60 / 0.85 上下文占用比例阈值
handoffDir .dsh/handoffs 交接文档相对 cwd 的目录
language zh 文档与续接提示语言(zh 或 en)
concludeTurn true 交接成功后立即结束旧回合
autoOpenNewSession true Client 自动切到新 Session
transcript true 是否导出可检索转录旁路
transcriptMaxChars 120000 转录字符上限(超出时省略中段)
transcriptReasoning false 是否写入模型 reasoning
transcriptToolOutput true 是否写入工具参数与结果

转录文件可能包含命令输出、文件片段等敏感信息,交接目录应按项目需要清理或加入 .gitignore(仓库 .gitignore 已示例挡住 .dsh/ 下对话记录)。

典型用法

  1. 安装并刷新 Web 界面,确认输入框下方出现「会话交接」。
  2. 在长任务 Session 中正常开发;观察压力文字颜色或展开面板中的轮数 / 步数 / 上下文占用。
  3. 当系统提示与 <session-pressure> 表明处于 recommended 或 urgent 时,让模型在可持久化检查点调用 session_handoff,填写完整的 summary 与 nextPrompt。
  4. 也可在面板点击「现在交接」,由 Client 直接发送交接指令。
  5. 交接完成后在新 Session 中根据 handoff-*.md 继续;若摘要不够,对新 Session 说明「在 .dsh/handoffs/ 下 grep 对应 *.transcript.md」按需补细节。

适用场景与注意

适合:单 Session 内迭代较久的功能开发、调试、重构;需要在不丢决策与文件清单的前提下「换干净上下文」继续同一 cwd 下的工作。

注意:

  • 插件以当前 DSH 进程的权限运行,安装前请阅读源码与 MIT 许可证,确认交接目录与转录内容是否符合团队安全要求。
  • 星标与官方 awesome 目录条目以仓库当前状态为准;维护者 README 记载 npm 与自托管索引已可用,官方目录 PR 需满足仓库创建满 1 天等条件(见仓库 docs/catalog-submission.md)。
  • 不要编造未在文档出现的安装方式;git 来源安装需符合 DSH 市场 format 1 的 git+<url>.git#<commit> 规则,日常推荐上述 npm 命令。

结尾

dsh-handoff-session 把「压力感知 → 结构化交接 → 新 Session 自动续接」收成一次工具调用与一套可检索旁路文件,减少长会话手工换档的成本。进一步了解可访问 skillhub 目录页 与 GitHub 仓库。

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

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

Xiaoye