dsh-session-handoff:轮次可见、到限自动交接的 DSH 工作流插件

前言

在 DSH 里长时间跑同一个会话时,对话轮次会不断累加,上下文也会越来越满。常见做法是手动开新会话、自己整理进度再粘贴过去——步骤多,也容易漏掉关键文件或约束。下面介绍社区插件 dsh-session-handoff(维护者 xiaohui-zhangxh):在输入框下方常驻状态栏,把启动时间、累计工作时间与轮次摆到明面上;达到可配置的上限时,自动写交接文件并把任务接到同一工作区的新会话里继续。

这是什么

dsh-session-handoff 是 DeepSeek Harness(DSH)的第三方插件,分类为工作流。它在 DSH 输入框下方注入状态栏与设置面板,宿主侧负责轮次统计、交接判定与创建接续会话,浏览器侧负责展示与交互。插件以 MIT 许可发布,当前仓库版本为 1.2.0(见 package.json)。社区目录页:skillhub.cn/plugins/xiaohui-zhangxh/dsh-session-handoff;源码:github.com/xiaohui-zhangxh/dsh-session-handoff。该目录为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

常驻状态栏

状态栏从左到右显示:

  • 启动:会话创建时间(createdAt),非当日会话会带日期。
  • 工作时间:各轮从 turn/start 到 turn/end 的时长之和,轮间空闲不计;进行中的轮次每秒刷新。
  • 轮次:轮次 n/上限;接近上限时轮次会变为警示色。还可显示交接阶段文案,例如「正在写交接文件…」「已交接 → …」等。

「启动 · 工作时间」与「轮次 n/上限」各是一个可点击胶囊;悬停有高亮。技术细节见仓库 docs/TECHNICAL.md。

工时与轮次面板

  • 点击 启动 · 工作时间:打开「工时记录」面板,展示启动时间、最后对话结束时间(最近一次 turn/end)与总工作时间。
  • 点击 轮次 n/上限:打开设置窗,可调最大轮次、自动交接、启用监控、立即交接等;两个面板互斥,点窗外或 Esc 关闭。

自动交接

在 turn/end 之后判定:当轮次 ≥ 最大轮次(默认 30)且开启自动交接时,插件会向当前会话注入交接指令,要求模型用 write 写出交接文件(任务目标、进度、未完成事项、关键文件、决策与约束等)。交接轮结束后:

  • 交接文件存在 → 在同一工作区创建新会话(沿用原会话选中的 agent preset),命名为「原会话标题 第N次交接」,并向新会话发送「先读交接文件再继续」的提示;
  • 文件缺失 → 重试一次;仍缺失则用会话日志生成兜底文件再转移。

默认路径为 <会话工作目录>/tmp/handoff/<时间戳>-<会话短id>.md,可通过设置里的 handoffDir 修改相对目录。每个会话最多交接一次;已交接的旧会话可通过设置窗中的「打开接续会话」手动跳转。若当前页面正看着本次转移,交接完成后可自动切到接续会话(同一对旧/新会话只自动跳一次)。

安装与启用

需要 DSH 0.2.x 的 Web 或桌面 profile。安装后务必完整重启 DSH(宿主半边不会热重载 Node 模块)。

方式一:克隆后用 link 安装(推荐,便于后续 git pull 更新)

git clone https://github.com/xiaohui-zhangxh/dsh-session-handoff.git
dsh plugin --profile desktop add "$(pwd)/dsh-session-handoff"

方式二:在 DSH Plugins 页安装

侧栏 → Plugins → Add plugin,填入:

https://github.com/xiaohui-zhangxh/dsh-session-handoff

启用后完整重启 DSH。若新版本改动了依赖,link 安装方式下可在插件目录执行 dsh plugin --profile desktop install 后再重启。

典型用法

1、安装并重启 DSH 后,在任意会话输入框下方应看到状态栏;默认 enabled: true、autoHandoff: true、maxRounds: 30。

2、长任务开发过程中观察 轮次 n/上限;接近上限前可在设置里调高 maxRounds,或提前点击 立即交接 主动转移。

3、到限且自动交接开启时,按提示让模型写完交接文件;接续会话落在原工作区,标题带「第N次交接」,在新会话中继续任务即可。

设置持久化在 profile 目录下的 session-handoff.settings.json(无 DSH_PROFILE_DIR 时用 $DSH_HOME/session-handoff.settings.json)。默认值包括:

{
  "enabled": true,
  "autoHandoff": true,
  "maxRounds": 30,
  "handoffDir": "tmp/handoff"
}

排查或脚本集成时,可访问本机接口 http://127.0.0.1:<端口>/session-handoff/api(GET 读设置与状态,POST 的 action 为 settings 或 handoff)。跨站请求返回 403。完整字段与边界见 TECHNICAL.md。

适用场景与注意

适合谁:在同一工作区里做长链路智能体任务、希望轮次与工时可见、又不想手动复制进度到新会话的 DSH 用户。

使用前请知悉:

  • 插件以当前 dsh 进程权限运行,安装前应阅读源码与 MIT 许可证。
  • 只处理根会话;子代理(origin: subagent)不参与交接。
  • 接续会话继承工作区与 preset,但不会继承会话内 cd 过的子目录(工作目录信息应在交接文件中)。
  • DSH 不会自动更新第三方插件;Plugins 页安装的需卸载重装才能拉新 commit,link 安装则 git pull 后重启即可。

结尾

dsh-session-handoff 把「还有几轮、干了多久、该不该换会话」从凭感觉变成状态栏上的数字,并在到限时用交接文件把上下文负担卸给新会话。需要安装步骤与截图可看 GitHub README;实现与 API 以 docs/TECHNICAL.md 为准。目录页:https://www.skillhub.cn/plugins/xiaohui-zhangxh/dsh-session-handoff。

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

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

Xiaoye