前言¶
在 DeepSeek Harness(DSH)里做智能体或项目开发,会话一拉长,上下文窗口会被占满,换一个新会话又意味着模型要重新从对话里「摸」一遍背景。常见做法是手动复制粘贴摘要,或在新会话里重复说明目标与进度,既费时也容易漏掉关键约束。
dsh-handitoff 把这一步做成工作流:旧会话里由当前模型按固定模板写出工作区交接文档 HANDOFF.md,新会话通过 /handitoff resume 或会话菜单「交接并继续」只读这份文档接手,减少重复发现上下文的开销。下面介绍插件定位、能力与用法。
这是什么¶
dsh-handitoff 是社区维护的 DSH 插件(维护者 NFdrybattery,GitHub 仓库 NFdrybattery/dsh-handitoff),在 SkillHub 目录中归类为工作流。包名是 dsh-handitoff,斜杠命令仍是 /handitoff。
一句话:从长会话生成交接文档,再在全新会话里恢复工作,而不必让新模型重新梳理整段对话历史。
核心功能¶
已核实的能力如下。
生成交接文档¶
/handitoff:在旧会话后台向当前模型发送带格式要求的指令,按 0–12 共 13 节写出HANDOFF.md。文档要等这一轮模型结束才可用。- 第 0–11 节为可总结的交接内容;第 12 节由插件在模型写完后直接读取会话日志追加(格式为
用户:/回复:),不经过 agent 转录。轮数由recentRounds配置,默认 5;该节不做归纳。 - 辅助命令:
/handitoff status、/handitoff list;/handitoff update与/handitoff同类动作;/handitoff --new新开一条任务线。
一键交接¶
会话列表 ⋯ →「交接并继续」:
- 旧会话模型写
HANDOFF.md(只写 0–11 节); - 等本轮结束(最多 4 分钟),插件追加第 12 节;
- 文档生成后弹出提问卡,默认可选「否,开始交接」,并可填写补充要求;
- 无补充则直接打开新会话;有补充则写入新会话注入信息并标明「交接前用户补充要求」;
- 新会话执行
/handitoff resume --latest --wake,命令结果默认收起;模型读文档并结合项目文件梳理前期工作,给出简要接手总结。
新会话第一轮约定不执行命令、不改文件,确认后再继续。
手动接续¶
/handitoff resume
/handitoff resume --latest
/handitoff resume --latest --wake
/handitoff resume <taskId>
不带 --wake 时只注入摘要,需再发一条消息;带 --wake 时注入后直接唤醒模型(一键交接走这条)。多条 pending 任务用 --latest 或显式 taskId。重复接续同一任务会提示「已接手」;加 --force 可重新注入。
归档与清理¶
/handitoff archive <taskId>
文档保留,但不再出现在 resume 候选中。任务默认在超过 retentionDays(默认 1 天)未更新后自动清理;0 可关闭自动删除。
安装与启用¶
环境要求:DeepSeek Harness 0.2.1-rc.x(package.json 中为 >=0.2.1-rc.1 <0.3.0-0),Node.js ^22.19.0 || >=24.0.0。
推荐在 设置 → 插件 里从本地目录安装 checkout,选中 dsh-handitoff 后重启。CLI 备选(路径换成你的实际目录):
dsh plugin --profile desktop add link:D:\path\to\dsh-handitoff
CLI 只安装包,仍需在 设置 → 插件 里选中 dsh-handitoff(或写入 profile 的 dsh.profile.bundles)再重启;其他 profile 将 desktop 换成对应名称。
卸载:设置 → 插件 移除,或:
dsh plugin --profile desktop remove dsh-handitoff
首次使用新默认目录时,会把旧的 .dsh/dsh-handoff/ 或 .dsh/handoff/ 自动迁到 .dsh/dsh-handitoff/,已有文档随目录保留。
插件以当前 DSH 进程权限运行;安装前应自行查看仓库源码与 MIT 许可证。
典型用法¶
仅生成文档¶
在需要暂停或切换会话前,于当前工作区会话执行:
/handitoff
用 /handitoff status 确认文档是否已生成。文档路径为 <工作区>/.dsh/dsh-handitoff/<taskId>/HANDOFF.md,索引在同级 index.json。
新开会话接手¶
/handitoff resume --latest --wake
或在 UI 走「交接并继续」完整流程。
配置¶
在 profile 的 cordis.patch.yml 里按 id 覆盖:
- id: dsh-handitoff
name: dsh-handitoff
config:
retentionDays: 1
language: zh
| 配置 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
retentionDays |
1 |
未更新任务目录自动删除天数;0 关闭 |
recentRounds |
5 |
第 12 节写入的最近对话轮数;0 关闭该节 |
language |
zh |
zh 或 en |
remindAfterSteps |
1000 |
首次提醒步数 |
remindEverySteps |
200 |
提醒分档间隔 |
安装并启用后,设置 → Handitoff 可编辑提醒阈值、保留天数、最近对话轮数、摘要/唤醒语言;保存走 Host 设置 API,部分项需重新加载插件。enabled 不在设置页,启停请用插件管理或 profile。
不想把交接笔记提交进仓库,可将 .dsh/ 加入 .gitignore;需随项目交付则保留。
适用场景与注意¶
适合谁: 在同一工作区上长时间改代码、调插件或跑多轮排查,需要在不丢上下文的前提下换会话或换「干净」上下文窗口的 DSH 用户。
限制(来自官方 README):
- 文档质量取决于旧会话模型是否按模板写全各节;不允许只写标题,事实须来自当前会话。
- 一键交接需要会话已绑定工作区;空白会话不显示菜单项。
- 缺少 frontmatter
task_id时 resume 会拒绝载入,可重新/handitoff。 index.json用于任务发现与清理,不是交接正文。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍社区插件能力,不构成官方背书。
结尾¶
dsh-handitoff 把「长会话 → 结构化 HANDOFF.md → 新会话 resume」收成可重复的工作流,并区分模型总结的 0–11 节与插件原样转录的第 12 节,便于接手时既看到结论又看到最近几轮原文。
- 目录页:https://www.skillhub.cn/plugins/NFdrybattery/dsh-handitoff
- 源码与文档:https://github.com/NFdrybattery/dsh-handitoff
当前 package 版本为 0.1.1,许可证 MIT。