dHR-P
dsh-git-sync
Git-based multi-device sync for the DSH web GUI: workspace conversation/file sync plus preset/plugin manifests
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-git-sync
利用 git 实现 DSH 多端同步:工作区对话与文件双向同步(仅对话 / 全部文件 两种模式),并为预设/插件清单同步预留中央仓库绑定。
功能
- 设置卡片(设置 → 插件配置区 → Git 同步):绑定中央仓库、逐工作区配置同步方案(模式/远程/分支/逻辑名)、推送/拉取/状态
- 仅对话模式:只同步
~/.dsh/sessions/<工作区>/的会话日志到仓库.dsh-sync/<逻辑名>/,不碰工作区文件(适合本机强依赖工作区,他机只读查看) - 全部文件模式:
git add -A整仓同步(适合纯开发工作区跨设备续接) - 跨设备路径无关(仅对话模式):镜像目录用逻辑工作区名(配置
name,缺省取远程仓库名),不依赖本地绝对路径;新设备拉取时自动把每个会话 header 的cwd改写为本机路径,DSH 重新识别后即可续接 - 新设备一键接入:登录 GitHub 后,「新设备:克隆工作区」输入本机路径 + 选择仓库 → 克隆、注册工作区、拉取并改写会话路径
- 凭据安全:复用系统 git 凭据(SSH key / 凭据管理器 / PAT),插件不存储任何密钥;配置
~/.dsh/.git-sync.yaml不含敏感信息
安装
# 本地开发(link 安装到 web profile)
dsh plugin --profile web add "link:./dsh-git-sync" # 或在 ~/.dsh/profiles/web/package.json 手动加
# 或从 GitHub 安装(发布后)
dsh plugin --profile web add "github:dHR-P/dsh-git-sync"
重启 dsh web,设置页插件区出现「Git 同步」卡片。
使用
- 设置 → 插件配置区 → Git 同步
- 每个工作区:选模式(仅对话/全部文件)→ 填远程仓库 URL → 保存;如需自定义跨设备镜像目录名,填「逻辑名」(缺省取远程仓库名)
- 点「推送」上传本地会话/文件,点「拉取」下载远端内容
- 仅对话模式拉取到的新会话需重启 DSH 后出现在侧栏
新设备接入(跨设备续接)
- 新设备装好插件并登录 GitHub
- 设置 → Git 同步 → 「新设备:克隆工作区」:填本机目标路径(须为空/不存在)+ 选仓库 → 克隆并拉取会话
- 重启 DSH → 会话出现在侧栏,可续接
说明:会话文件存于
~/.dsh/sessions/<projectKey(cwd)>/,DSH 校验文件路径与 header 的cwd一致。插件拉取时把镜像里的会话 headercwd改写为本机路径并放到对应projectKey目录,所以不同设备路径不同也能续接。历史对话里已写入的绝对路径引用(如工具调用传的文件路径)仍指向原设备,无法自动改写。
注意事项
- 私有仓库:对话含敏感内容,远程仓库必须私有
- 跨设备路径:
仅对话模式不受路径影响(镜像按逻辑名存、拉取改写 header);全部文件模式按 git 相对路径同步,克隆到任意目录即可 - 并发:同一时刻仅一台设备续接同一工作区,避免会话文件冲突
- 会话按工作区存于
~/.dsh/sessions/<projectKey(cwd)>/,DSH 启动自动扫描发现(无需改索引)
设计
详见 docs/design.md。