dsh-session-migrator:DeepSeek Harness 可视化跨设备会话迁移插件

在 DeepSeek Harness 中,会话数据通常与特定的工作区目录绑定。要在另一台设备上恢复完整的对话历史、子代理会话以及关联的附件,手动复制文件容易出错且难以维护。下面介绍 dsh-session-migrator,这是一个提供可视化工作流的插件,支持通过拖拽 ZIP、JSONL 或文件夹导入,实现跨设备的会话迁移。

核心功能

该插件提供了以下能力:

  1. 可视化工作流:通过侧边栏操作完成导入,无需记忆命令。
  2. 拖拽导入:支持将 Harness 会话 ZIP、session.jsonl 或完整的导出文件夹拖入页面。
  3. 跨设备工作区映射:自动重写导入会话的 cwd 字段,适配目标设备的目录结构。
  4. 完整会话树:导入根会话及其所有 subagents/<id>/session.jsonl 后代会话。
  5. 安全重复导入:如果目标工作区中已存在同名会话,插件会克隆整个导入树,生成新的 UUID 并重映射血缘关系,绝不覆盖现有数据。
  6. 附件迁移:恢复引用的 PNG、JPEG、WebP 和 GIF 附件,并验证其内容寻址 ID。
  7. Harness 原生验证:使用 decodeStorageRecord() 解码存储行,并通过 Session.create() 验证重构日志,确保写入 Harness 的数据格式正确。
  8. 即时原始标题:导入时预热 Harness 的投影缓存,使工作区列表在会话打开前就能显示会话标题。
  9. 多语言支持:UI 自动跟随 Harness 当前语言(支持英文和中文)。
  10. CLI 回退:保留 /session-import 命令,满足脚本化或本地工作流需求。

安装与启用

在运行 DeepSeek Harness 的机器上执行以下步骤:

git clone https://github.com/Suixin04/dsh-session-migrator.git
cd dsh-session-migrator
npm install
npm run build:client

安装到 Web 配置文件中:

dsh plugin --profile web add /absolute/path/to/dsh-session-migrator

安装完成后,重启现有的 dsh web 进程。侧边栏底部会出现 Import sessions 操作按钮。

典型用法

可视化导入

  1. 点击侧边栏的 Import sessions。
  2. 选择 ZIP/JSONL 文件、完整的导出文件夹,或直接将文件拖拽到 Harness 页面上。
  3. 选择或拖拽到目标工作区卡片上。
  4. 等待验证和持久化完成。
  5. 点击 Open imported session。

命令行导入

使用当前会话所在的工作区:

/session-import "/absolute/path/dsh-session-xxx.zip"

指定另一个已存在的工作区:

/session-import "/absolute/path/dsh-session-xxx.zip" --workspace "/absolute/path/to/project"

支持解压后的导出目录或单个 JSONL 文件:

/session-import "/path/to/unpacked-export" --workspace "/path/to/project"
/session-import "/path/to/session.jsonl" --workspace "/path/to/project"

适用场景与注意事项

适用场景:
- 需要在不同物理设备间迁移 DeepSeek Harness 的完整会话历史。
- 需要备份会话数据并恢复到新环境。
- 需要在保持血缘关系的前提下,在目标工作区中创建与源环境结构一致的会话副本。

注意事项:
- 版本要求:DeepSeek Harness 版本需为 0.1.1-rc.2 或兼容构建。
- 目录要求:目标工作区目录必须在目标主机上已存在。
- 文件范围:会话导出不包含项目文件(如 Git 仓库文件),需通过 Git 或其他同步方法单独迁移项目。
- 敏感数据:会话导出可能包含完整的提示词、响应、系统上下文、工具调用、绝对路径和图片。请将其视为敏感数据处理。
- 限制检查:插件强制执行归档、JSONL 和条目计数限制,拒绝不安全路径、重复条目、格式错误日志、重复 ID 和循环血缘。
- 持久化机制:Harness 持久化是仅追加模式。如果插件在写入过程中失败,可能会留下已成功提交的前缀。部分写入后再次导入会创建一个全新的克隆树。
- 迁移范围:该插件仅迁移会话状态和引用的图片,不迁移仓库文件、凭据、模型提供商设置或外部服务配置。


插件目录:SkillHub
源码仓库:GitHub

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

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

小夜