🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

配置同步 lordqyxz/dsh-config-sync

DeepSeek 客户端
lordqyxz78 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

一键把 DSH 配置与技能镜像备份到 iCloud

28.2/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/lordqyxz/dsh-config-sync.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 78 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 23 处,展示前 17 条)
  • 读取本地文件
    lib/index.js:150
    const parsed = JSON.parse(await readFile(path.join(root, MANIFEST), 'utf8'))
  • 写入本地文件
    lib/index.js:163
    await mkdir(destRoot, { recursive: true })
  • 写入本地文件
    lib/index.js:164
    await writeFile(
  • 读取本地文件
    lib/index.js:197
    entries = await readdir(dir, { withFileTypes: true })
  • 读取本地文件
    lib/index.js:214
    symlinks.set(rel, await realpath(abs).catch(() => abs))
  • 读取本地文件
    lib/index.js:223
    target = await realpath(abs)
  • 读取本地文件
    lib/index.js:228
    const tstat = await stat(target).catch(() => null)
  • 写入本地文件
    lib/index.js:273
    await mkdir(path.dirname(dst), { recursive: true })
  • 读取本地文件
    lib/index.js:283
    const st = await lstat(abs).catch(() => null)
  • 删除本地文件
    lib/index.js:285
    if (st.isSymbolicLink() || st.isFile()) await unlink(abs)
  • 删除本地文件递归
    lib/index.js:286
    else await rm(abs, { recursive: true, force: true })
  • 删除本地文件
    lib/index.js:383
    await unlink(ancestor.dangling)
  • 写入本地文件
    lib/index.js:458
    await mkdir(path.dirname(localAbs), { recursive: true })
  • 删除本地文件
    lib/index.js:473
    await rm(path.join(destRoot, MANIFEST), { force: true }).catch(() => {})
  • 发起网络请求
    lib/client.js:97
    fetch(STATUS_PATH, { cache: "no-store" }).then((r) => r.json()).then((json) => setStatus(json && json.ok ? json : null)).catch((e) => setError2(messag
  • 发起网络请求
    lib/client.js:107
    const r = await fetch(RUN_PATH, {
  • 发起网络请求
    lib/client.js:127
    const r = await fetch(CONFIG_PATH, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 同步技能目录
  • 后端可插拔

DSH 配置同步插件:在设置页一键把 ~/.dsh 和 ~/.agents/skills 镜像到 iCloud(或任意本地目录)。后端可插拔——本地已内置,MinIO/OSS 预留。

README

由 DeepSeek 最新模型翻译生成
dsh-config-sync dsh-config-sync logo 把 DSH 配置目录(默认 ~/.dsh 与 ~/.agents/skills)镜像同步到 iCloud(或任意本地目录),设置页「配置同步」按钮一键触发。MinIO / OSS 作为预留存储后端,已在配置 schema 与后端注册表中留位。 快速开始 1. link 安装进 web profile(已做则跳过)在 ~/.dsh/profiles/web/package.json 的 dependencies 加: "dsh-config-sync": "link:/Users/apple/dev/dsh-config-sync" 然后 cd ~/.dsh/profiles/web && pnpm install 2. cordis.patch.yml 注册(见 cordis.patch.yml.example) 3. 重启 DSH(服务端插件需重启加载) 4. 打开 设置 → 配置同步 → 点「立即同步」 功能 - 一键同步:设置页「配置同步」Tab 的按钮 → POST /dsh-sync/run,后台按源目录逐个镜像。 - 双向同步:支持 export(本机→备份,默认)与 import(备份→本机,恢复)。
展开完整文档(README 剩余 1 节)
dsh-config-sync

dsh-config-sync logo

把 DSH 配置目录(默认 ~/.dsh 与 ~/.agents/skills)镜像同步到 iCloud(或任意本地目录),设置页「配置同步」按钮一键触发。MinIO / OSS 作为预留存储后端,已在配置 schema 与后端注册表中留位。

快速开始

1. link 安装进 web profile(已做则跳过)在 ~/.dsh/profiles/web/package.json 的 dependencies 加: "dsh-config-sync": "link:/Users/apple/dev/dsh-config-sync"
然后 cd ~/.dsh/profiles/web && pnpm install

2. cordis.patch.yml 注册(见 cordis.patch.yml.example)
3. 重启 DSH(服务端插件需重启加载)
4. 打开 设置 → 配置同步 → 点「立即同步」

功能

- 一键同步:设置页「配置同步」Tab 的按钮 → POST /dsh-sync/run,后台按源目录逐个镜像。
- 双向同步:支持 export(本机→备份,默认)与 import(备份→本机,恢复)。
- 导入是破坏性操作:UI 强制「预演导入(dry-run,不改动)→ 执行导入(二次确认)」两步;
- 引擎护栏:源==目标、导入目标落在备份根目录内 → 拒绝执行。
- 镜像语义(rsync 式):
- 大小或 mtime 不同的文件才复制(2ms 容差);
- 目标里源已不存在的文件删除、空目录修剪(rsync --delete);
- 排除项按路径段精确名匹配(node_modules、.git)或根锚前缀(pnpm-lock.yaml);
- 符号链接默认跟随(followSymlinks: true):指向文件的链接复制为普通文件,指向目录的链接递归拷贝其内容——镜像跨机器可移植(如 dws/find-skills 指向 ~/.tokentracker/... 的场景)。
- 符号链接自动还原:导出时把链接目标记录进备份根的 .dsh-sync-manifest.json;导入时——
- 同机(原链接目标仍存在)→ 重建符号链接,保住 tokentracker 等活链接;
- 新机 / 目标已迁移 → 自动降级为文件副本,技能照常可用(结果里提示)。
- 配置热生效:settings namespace dsh-sync(settings.yaml 用户层)覆盖 patch base,UI 或改文件均免重启。

存储后端扩展(MinIO / OSS 预留)

后端注册表在 lib/index.js 顶部(registerBackend / getBackend / listBackends):

registerBackend({
id: 'minio', // 配置 backend: minio 即可路由到这里 label: 'MinIO 对象存储',
describe(cfg) { return { kind: 'object-store', ... } },
async mirror({ source, dest, excludes, followSymlinks }, emit) {
// dest 在此语义为对象键前缀;用 minio SDK 逐个 put / delete }, })

核心引擎不做任何存储假设——只调 backend.mirror(opts, emit)。本地 backend 已实现; minio/oss 配置块已 schema 化(Config.minio / Config.oss),UI 会显示为「预留」并允许选中(选中后运行会给出明确的「后端未实现」错误)。

HTTP 路由(同源)

| 路由 | 方法 | 说明 |
| /dsh-sync/status | GET | 生效配置 + 可用/预留后端 + 上次同步结果 |
| /dsh-sync/run | POST | 立即同步;body { direction: 'export'\|'import', dryRun: bool }(重入保护,忙时 409) |
| /dsh-sync/config | POST | 写入用户层配置(白名单键:backend/localRoot/excludes/followSymlinks) |

预演导入(不改动任何文件,列出将发生的变化)
curl -X POST http://127.0.0.1:3080/dsh-sync/run \
-H 'content-type: application/json' -d '{"direction":"import","dryRun":true}'

目录结构

lib/index.js 宿主半区:schema / 后端注册表 / 同步引擎 / webServer 路由 / settings ns src/client/index.tsx 客户端源码(TSX → esbuild 打包) scripts/build.mjs 客户端打包脚本(esbuild,产物提交到 lib/client.js) assets/logo.svg 插件 logo(双向同步双箭头 + 中心配置点) cordis.patch.yml.example 注册示例

开发

pnpm install
node scripts/build.mjs # 重新打包 lib/client.js(改客户端后执行)

已知行为

- 活跃会话的 sessions//session.jsonl.zstd 与 storages/ 持续写入,每次同步都会重拷——属预期。
- 首次改宿主代码后需重启 DSH 才生效;客户端 bundle 改动刷新页面即可(带 rev 参数)。
- 导入仅在「已用新版本导出过一次」(备份根里存在 .dsh-sync-manifest.json)后才会还原链接;旧备份可直接导入,只是没有链接元数据、按纯文件恢复。

License

MIT
预览分享卡片长什么样 ↓lordqyxz/dsh-config-sync
分享 · DeepSeek Harness Hub
lordqyxz/dsh-config-sync

一键把 DSH 配置与技能镜像备份到 iCloud

回到顶部