前言¶
在 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、坚果云等同步盘路径),支持双向同步或仅上传/仅恢复。
- 目录页:https://www.skillhub.cn/plugins/ColdRainLab/dsh-workspace-sync
- 源码与说明:https://github.com/ColdRainLab/dsh-workspace-sync
核心功能¶
同步范围与模式¶
- 双向同步:本地上传 → 与远端合并 → 从远端拉取;也可只做「上传到云端」或「从云端恢复」。
- 同步内容:工作区(路径、标题、会话分组)、会话日志、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 与宿主一致场景)。
典型用法¶
- 点击侧栏底部「☁ 云同步」。
- 在「云端目录」填写会被网盘同步的文件夹,例如:
- OneDrive:C:\Users\<你>\OneDrive\DSH-Sync
- 坚果云:C:\Users\<你>\Nutstore\我的坚果云\DSH-Sync
- 本地试跑:C:\Users\<你>\Documents\DSH-Sync - 点「保存」,再点「立即双向同步」。
- 在另一台电脑:安装同一插件 → 将「云端目录」指向同一路径(网盘同步后的等价路径)→ 使用「从云端恢复」。工作区、会话与任务会出现;若本地工作区路径不存在,插件会建空目录,但项目业务文件仍需你用 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 文档所列)
- 删除操作(垃圾桶、永久删除、取消归档/置顶)不跨设备传播;同步侧重并集与较新者胜。
- 工作区绝对路径宜在多机保持一致;目录内业务代码不由此插件同步。
- 同会话并发编辑不合并事件流,仅保留较新副本,旧版在
conflicts/。 - 不同步附件/图片、其它插件与全局设置。
- 首版云端为明文 JSON / zstd,请使用可信网盘;后续可能加入口令加密。
- 单会话文件大于 64 MiB 会跳过并记录。
- 云端
objects/只增不删,长期使用需自行清理或等待后续 GC 策略。 - 隐藏空间/加密工作区排除后,云端旧
objects/不会自动删除。
DSH 生态以「一切皆插件」为理念;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的 ColdRainLab/dsh-workspace-sync。
结尾¶
若你的痛点是「换机器后 DSH 里的工作区列表、聊天会话和定时任务要对齐」,而不是同步整个项目仓库,dsh-workspace-sync 提供了一条可复现路径:自管云端目录 + 面板内双向或单向同步,并对 vault 隐藏/加密工作区做本地优先的排除。