dsh-workspace-sync:把工作区、会话与定时任务同步到你自己的云端目录

前言

在 DeepSeek Harness(DSH)里长期开发时,工作区列表、各工作区的会话记录,以及 schedule 定时任务往往都落在本机。换电脑、重装系统或在家与公司两台机器之间切换时,如果没有统一的「状态出口」,只能手工拷贝目录或指望网盘误同步到错误路径。

DSH 的 DeepSeek 账号登录主要承担身份、余额与推理鉴权;官方并未向第三方开放可存可取的用户数据云空间(Files API 亦不能用于拉取这类数据)。因此「登录即自动同步」在客户端侧无法实现。社区插件 dsh-workspace-sync(维护者 ColdRainLab,分类:记忆)的做法是:把需要延续的工作状态同步到你自己指定、且可被网盘客户端同步的文件夹,新机器安装同一插件并指向同一目录,拉取后即可接上原来的工作区与会话。

下面按定位、功能、安装、用法、数据布局与限制说明该插件。

这是什么

dsh-workspace-sync 是 DSH 桌面端插件(engines.dsh 要求 >=0.2.1-rc.2 <0.3.0),当前包版本 0.1.2,许可证 MIT。

一句话:把工作区元数据、会话日志(session.v4.jsonl.zstd)与自动化任务同步到用户自管的「云端目录」(首版为文件夹后端,可指向 OneDrive、坚果云等同步盘路径),支持双向同步或仅上传/仅恢复。

核心功能

同步范围与模式

  • 双向同步:本地上传 → 与远端合并 → 从远端拉取;也可只做「上传到云端」或「从云端恢复」。
  • 同步内容:工作区(路径、标题、会话分组)、会话日志、schedule 任务行(含运行记录)。
  • 自动同步:启动约 15 秒后跑一次,并可按间隔每 N 分钟重复(可在面板关闭或改间隔)。

本地豁免(不同步)

与 dsh-workspace-vault 配合时,下列内容不上传,云端已有也不会写回本地:

  • 隐藏空间:路径在 <DSH_HOME>/hidden-space 下的工作区。
  • 加密工作区:workspace-vault/state.json 中 hiddenWorkspaceIds、encryptedWorkspaceIds 记录的工作区。

判定依赖本机 ~/.dsh/workspace-vault/state.json(缺失、损坏或字段类型错误时按「无排除」处理,只记告警,不中断同步)。hidden-space 路径前缀规则不依赖该状态文件。

冲突与后端

  • 同一会话在两台机器都有修改时,较新者胜;旧版本备份在云端 conflicts/,避免静默丢数据。
  • 首版后端为文件夹:指向任意被网盘同步的目录;lib/backends/ 已为 WebDAV 等预留扩展位。
  • 面板:侧栏底部「☁ 云同步」→ 配置目录、查看状态、手动同步、查看冲突与错误。与垃圾箱插件(dsh-session-delete)在 footer 合并为一行显示。

安装与启用

资料中的安装示例来自作者本机 link: 开发路径与打包分发路径;一般用户若从 SkillHub / 发行包获取插件,应按所获渠道的安装说明操作。README 给出的桌面版命令如下(路径需按你的 DSH 安装位置与插件目录替换)。

开发 / 本机 link 安装示例:

& "D:\Program Files\Deepseek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add "link:C:/Users/ROG-STRIX/Documents/deepseek-harness/DSH新增功能/dsh-workspace-sync"

稳定版 tgz 示例路径(作者环境):

C:\Users\ROG-STRIX\.dsh\plugin-archives\dsh-workspace-sync\v0.1.0\dsh-workspace-sync-0.1.0.tgz

卸载:

& "D:\Program Files\Deepseek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop remove dsh-workspace-sync

安装前建议阅读仓库源码与 MIT 许可证。插件以当前 DSH 进程权限读写本地数据与你所配置的云端目录,仅安装你信任的版本。

启用后可通过宿主接口检查健康状态,例如 GET /api/workspace-sync/health 返回 { ok, version, dshVersion }(资料中验证版本为 0.1.0 与宿主一致场景)。

典型用法

  1. 点击侧栏底部「☁ 云同步」。
  2. 在「云端目录」填写会被网盘同步的文件夹,例如:
    - OneDrive:C:\Users\<你>\OneDrive\DSH-Sync
    - 坚果云:C:\Users\<你>\Nutstore\我的坚果云\DSH-Sync
    - 本地试跑:C:\Users\<你>\Documents\DSH-Sync
  3. 点「保存」,再点「立即双向同步」。
  4. 在另一台电脑:安装同一插件 → 将「云端目录」指向同一路径(网盘同步后的等价路径)→ 使用「从云端恢复」。工作区、会话与任务会出现;若本地工作区路径不存在,插件会建空目录,但项目业务文件仍需你用 git 或网盘自行同步项目目录。

命名空间:登录 DeepSeek 账号时按账号 id 派生(acct-<hash16>),未登录则为 default。

数据放在哪里

项 位置
插件配置、设备 id、同步状态 <DSH_HOME>/workspace-sync/(默认 ~/.dsh/workspace-sync/)
vault 排除依据 <DSH_HOME>/workspace-vault/state.json
隐藏空间工作区 <DSH_HOME>/hidden-space/
面板默认云端目录 ~/Documents/DSH-Sync(可在面板修改)
云端布局 <云端目录>/<命名空间>/manifest.json、objects/、devices/、conflicts/

objects/ 以内容寻址存放会话原文件;manifest.json 为工作区、任务与会话哈希的权威清单。写入采用临时文件再 rename,减少网盘同步到半文件的风险。

主要 HTTP 接口(JSON,失败时 { ok:false, error:{ code, message } })包括:/api/workspace-sync/config、/status、/diff、POST /sync(mode: two-way | push | pull)、/log 等,完整表见仓库 README。

适用场景与注意

适合谁

  • 多台 Windows(资料验证环境为 DSH 0.2.1-rc.3)之间延续 DSH 工作区与会话。
  • 已有 OneDrive、坚果云等「同步文件夹」、希望数据在自己网盘而非第三方不可控存储的用户。

使用前需知晓的限制(v0.1 文档所列)

  1. 删除操作(垃圾桶、永久删除、取消归档/置顶)不跨设备传播;同步侧重并集与较新者胜。
  2. 工作区绝对路径宜在多机保持一致;目录内业务代码不由此插件同步。
  3. 同会话并发编辑不合并事件流,仅保留较新副本,旧版在 conflicts/。
  4. 不同步附件/图片、其它插件与全局设置。
  5. 首版云端为明文 JSON / zstd,请使用可信网盘;后续可能加入口令加密。
  6. 单会话文件大于 64 MiB 会跳过并记录。
  7. 云端 objects/ 只增不删,长期使用需自行清理或等待后续 GC 策略。
  8. 隐藏空间/加密工作区排除后,云端旧 objects/ 不会自动删除。

DSH 生态以「一切皆插件」为理念;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的 ColdRainLab/dsh-workspace-sync。

结尾

若你的痛点是「换机器后 DSH 里的工作区列表、聊天会话和定时任务要对齐」,而不是同步整个项目仓库,dsh-workspace-sync 提供了一条可复现路径:自管云端目录 + 面板内双向或单向同步,并对 vault 隐藏/加密工作区做本地优先的排除。

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

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

小夜