前言¶
在 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 创建与首轮续接提示。
- 目录页:https://www.skillhub.cn/plugins/BlueOcean3214/dsh-handoff-session
- 源码与说明:https://github.com/BlueOcean3214/dsh-handoff-session
- npm:
dsh-handoff-session@0.6.1(MIT)
核心功能¶
压力投影与动态提示¶
插件折叠每个会话中的 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¶
调用后会:
- 将目标、现状、已完成、待办、决策、关键文件、验证结果等写入
<cwd>/.dsh/handoffs/handoff-<时间>-<会话>.md(目录默认.dsh/handoffs,可配置handoffDir)。 - 可选生成同目录下的
handoff-<时间>-<会话>.transcript.md,供后续read/grep检索细节;不会整份塞进新 Session 上下文,新 Session 首轮只读摘要。 - 通过
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/ 下对话记录)。
典型用法¶
- 安装并刷新 Web 界面,确认输入框下方出现「会话交接」。
- 在长任务 Session 中正常开发;观察压力文字颜色或展开面板中的轮数 / 步数 / 上下文占用。
- 当系统提示与
<session-pressure>表明处于recommended或urgent时,让模型在可持久化检查点调用session_handoff,填写完整的summary与nextPrompt。 - 也可在面板点击「现在交接」,由 Client 直接发送交接指令。
- 交接完成后在新 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 仓库。