前言¶
在 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。