dsh-session-porter:把 DSH 对话导出到同步目录并在另一台机器导回

前言

在 DeepSeek Harness(DSH)里长期跑智能体时,会话日志留在本机 sessions/ 下。换电脑、重装系统或想在办公室与家里共用同一批对话时,若只靠手工拷贝目录,容易漏文件、版本对不上,也不方便只迁其中几段会话。社区插件 dsh-session-porter(维护者 LZ-jun,分类:记忆)面向这类需求:在 Web UI 侧边栏用 导出 / 导入 两个入口,把选中的会话写到你自己指定的文件夹(例如 OneDrive),在另一台装了 DSH 的机器上再读同一目录导回来。全程本地读写,不发起外部网络请求。

这是什么

dsh-session-porter 是 DSH 的会话搬运插件:一键导出到自选目录,换机一键导入;支持按会话勾选、覆盖开关和操作前确认弹窗。仓库:https://github.com/LZ-jun/dsh-session-porter;社区目录页:https://www.skillhub.cn/plugins/LZ-jun/dsh-session-porter。许可证 MIT,当前 package 版本 1.0.0。

客户端与宿主通过本机 loopback 路由 /dsh-session-porter/* 通信,带同源校验与自定义请求头;无遥测、无第三方服务。

核心功能

导出

  1. 点击侧边栏左下角(余额信息上方)的 导出。
  2. 在弹窗里勾选要导出的会话(默认全选「有内容」的会话)、确认目录,再通过确认弹窗防误触。
  3. 每个会话落在 <导出目录>/sessions/session-<id>/,典型文件如下:
文件 说明
session.v4.jsonl.zstd 原始会话日志(版本号随 DSH 格式变化;未压缩时没有 .zstd 后缀)
meta.json 标题、工作目录、创建时间、preset、字节数、导出时间
attachments/ 该会话引用的附件(存在时才写入)

导出结束后会清理导出目录里已变成空壳的旧会话目录,避免同步盘堆积无效目录。目录根还会写入 dsh-session-porter.json(标记为 DSH 同步目录)以及可选的 plugins.json(见下文)。

空会话(从头到尾没有 user / assistant 消息)不参与扫描与导出。

导入

  1. 点击 导入,默认读取与导出相同的目录(也可在设置里单独指定 importCwd)。
  2. 界面会列出对端目录中的会话,以及本机是否已有同名会话。
  3. 覆盖 为开关:关闭时跳过已存在的同名会话;开启时才替换。
  4. 正在本机运行的会话会被拒绝导入。

插件清单(仅导出)

设置项 导出插件列表 默认勾选。勾选时会在导出目录生成 plugins.json,逐条记录已安装插件的 name、title、version、description、author、license、homepage、repository、keywords、kind、installPath、installSource、profile、enabled 等元数据,供新机器对照安装;只导出,不自动导入。

安装与启用

在插件市场(dshmarket)中搜索 dsh-session-porter 安装,然后重启 DSH:

在 dshmarket 搜索 dsh-session-porter → 安装 → 重启 DeepSeek Harness

也可将仓库作为本地 bundle 装进某个 profile(dsh.bundle.patch 指向仓库根的 cordis.patch.yml)。

环境要求:DSH 需带 Web UI;Node ≥ 22(宿主侧使用 zlib.zstdDecompressSync 解压会话日志)。

配置

配置文件位于 <dsh home>/session-porter.json(与 sessions/ 同级),也可在插件设置面板修改。示例:

{
  "schema": "dsh-session-porter/v1",
  "exportDir": "C:\\Users\\<you>\\OneDrive\\DSH-Sessions",
  "importCwd": "",
  "includePlugins": true,
  "lastExportedAt": 1793383216210,
  "lastImportedAt": null
}

importCwd 留空则与 exportDir 一致。从旧版 session-sync.json 升级时,旧配置会以只读方式沿用。

界面入口挂在 sidebar.footer.action 槽位(order: -10),位于余额插件上方;按钮为 1px 描边、跟随宿主深色主题变量。

典型用法

下面是一条可复现的跨机同步路径。

  1. 在机器 A 的 DSH 设置里把 exportDir 指到 OneDrive(或其它同步盘)下的文件夹,例如 DSH-Sessions。
  2. 点 导出,保留默认「有内容会话全选」或按需取消勾选,确认后等待完成。
  3. 等待同步盘把 sessions/、dsh-session-porter.json 以及可选的 plugins.json 同步到机器 B。
  4. 在机器 B 安装同一插件,将导入目录指向同一文件夹(或留空 importCwd 与 exportDir 一致)。
  5. 点 导入,根据需要打开或关闭 覆盖,确认后完成导入。
  6. 若需要在新机还原插件环境,对照导出目录中的 plugins.json 在 dshmarket 或本地 bundle 方式自行安装;插件不会替你执行导入清单。

适用场景与注意

适合:需要在多台电脑间共享 DSH 对话、用 OneDrive / 网络共享 / U 盘等「宿主可写」目录做会话备份、迁移时只带走部分会话。

隐私:只读本机会话与插件元数据,只写入你选定的目录;plugins.json 不含密钥或 token。

边界(README 已说明):

  • 导入会重建会话日志,不会修改工作区里的项目文件;工作区路径不一致时,历史消息仍在,新消息会落在当前工作区。
  • 同名会话 id 以 覆盖 开关决定是否替换。
  • 插件清单仅导出,不导入。

安全与信任:插件以当前 DSH 进程权限读写本机会话与导出目录。安装前建议在 GitHub 查看源码与 MIT 许可证,确认导出路径不会指向不可信共享。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装路径以 dshmarket 搜索为准。

结尾

dsh-session-porter 把「挑会话 → 写进同步目录 → 另一台机器导回」收成侧边栏两次确认操作,适合把 DSH 对话当作可携带资产来管理。进一步了解可访问社区目录 https://www.skillhub.cn/plugins/LZ-jun/dsh-session-porter 与仓库 https://github.com/LZ-jun/dsh-session-porter。

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

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

小夜