Back to home

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 同步」卡片。

使用

  1. 设置 → 插件配置区 → Git 同步
  2. 每个工作区:选模式(仅对话/全部文件)→ 填远程仓库 URL → 保存;如需自定义跨设备镜像目录名,填「逻辑名」(缺省取远程仓库名)
  3. 点「推送」上传本地会话/文件,点「拉取」下载远端内容
  4. 仅对话模式拉取到的新会话需重启 DSH 后出现在侧栏

新设备接入(跨设备续接)

  1. 新设备装好插件并登录 GitHub
  2. 设置 → Git 同步 → 「新设备:克隆工作区」:填本机目标路径(须为空/不存在)+ 选仓库 → 克隆并拉取会话
  3. 重启 DSH → 会话出现在侧栏,可续接

说明:会话文件存于 ~/.dsh/sessions/<projectKey(cwd)>/,DSH 校验文件路径与 header 的 cwd 一致。插件拉取时把镜像里的会话 header cwd 改写为本机路径并放到对应 projectKey 目录,所以不同设备路径不同也能续接。历史对话里已写入的绝对路径引用(如工具调用传的文件路径)仍指向原设备,无法自动改写。

注意事项

  • 私有仓库:对话含敏感内容,远程仓库必须私有
  • 跨设备路径仅对话 模式不受路径影响(镜像按逻辑名存、拉取改写 header);全部文件 模式按 git 相对路径同步,克隆到任意目录即可
  • 并发:同一时刻仅一台设备续接同一工作区,避免会话文件冲突
  • 会话按工作区存于 ~/.dsh/sessions/<projectKey(cwd)>/,DSH 启动自动扫描发现(无需改索引)

设计

详见 docs/design.md