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

配置同步备份 huihui0927/dsh-config-sync

DeepSeek Harness
huihui092716 天前有提交已提供中文文档扫描:含敏感能力

打包插件与设置,换机预览后批量还原

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add huihui0927/dsh-config-sync
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 16 天前
档位由哪些信号合成

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

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

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

读写/删除本地文件
查看扫描证据(共 28 处,展示前 25 条)
  • 读取本地文件
    lib/index.js:329
    names = await readdir(dir)
  • 读取本地文件
    lib/index.js:336
    const info = await stat(join(dir, n))
  • 读取本地文件
    bin/dsh-config-sync.mjs:215
    names = await readdir(dir)
  • 读取本地文件
    bin/dsh-config-sync.mjs:223
    const info = await stat(join(dir, n))
  • 读取本地文件
    lib/archive.js:129
    const data = await readFile(file.absolute)
  • 读取本地文件
    lib/archive.js:143
    const buffer = data ?? await readFile(absolute)
  • 写入本地文件
    lib/archive.js:190
    await mkdir(dirname(output), { recursive: true })
  • 读取本地文件
    lib/archive.js:192
    const archiveBytes = (await readFile(output)).length
  • 写入本地文件
    lib/archive.js:438
    await mkdir(restorePoint, { recursive: true })
  • 读取本地文件
    lib/archive.js:439
    for (const entry of await readdir(profileDir, { withFileTypes: true })) {
  • 写入本地文件
    lib/archive.js:442
    await copyFile(join(profileDir, entry.name), join(restorePoint, entry.name))
  • 写入本地文件
    lib/archive.js:445
    await writeFile(
  • 写入本地文件
    lib/archive.js:462
    await mkdir(dirname(record.target), { recursive: true })
  • 写入本地文件
    lib/archive.js:463
    await writeFile(record.target, data)
  • 读取本地文件
    lib/archive.js:575
    for (const entry of await readdir(dshHome, { withFileTypes: true }).catch(() => [])) {
  • 读取本地文件
    lib/inventory.js:168
    entries = await readdir(dir, { withFileTypes: true })
  • 读取本地文件
    lib/inventory.js:208
    info = await stat(absolute)
  • 读取本地文件
    lib/inventory.js:246
    raw = await readFile(file, 'utf8')
  • 读取本地文件
    lib/inventory.js:290
    parsed = JSON.parse(await readFile(join(pkgDir, 'package.json'), 'utf8'))
  • 读取本地文件
    lib/inventory.js:350
    entries = await readdir(profileDir, { withFileTypes: true })
  • 读取本地文件
    lib/inventory.js:387
    entries = await readdir(dshHome, { withFileTypes: true })
  • 写入本地文件
    lib/zip.js:119
    const stream = createWriteStream(outPath)
  • 读取本地文件
    lib/zip.js:142
    const info = await stat(entry.path)
  • 读取本地文件
    lib/zip.js:152
    data = await readFile(entry.path)
  • 读取本地文件
    lib/zip.js:275
    const buffer = await readFile(zipPath)
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

README

由 DeepSeek 最新模型翻译生成
dsh-config-sync 把本机 DSH(DeepSeek Harness)的全部插件与设置备份成一个可移植的 .zip,再批量同步到下一台电脑。 📖 日常操作请看 使用说明.md——按「照着做」的口径编写,含换电脑完整流程、回退步骤和常见问题。本文档偏设计与实现。 它解决什么问题 换电脑时,DSH 的环境散落在很多地方:profile 里装了哪些插件、每个插件的版本、cordis.patch.yml 里的配置覆盖、插件自己写的数据、全局工作区设置……手工搬极易漏项,而漏掉一处就可能让新电脑上的 DSH 起不来。 这个插件把这些收拢成一个文件,并保证还原过程可预览、可回退。 核心设计取舍 | 决策 | 原因 | | 不备份 node_modules | 插件本体有几百 MB,且完全可由 package.json + pnpm-lock.yaml 复现。归档只记录版本,还原时重装,新电脑得到的是干净正确的依赖树。 | | 不备份运行时/Electron/日志/缓存 | 这些属于机器而非用户,是可重建的。把 Windows 运行时拷到新装环境正是「还原把好环境弄坏」的典型原因。 | | 凭据默认不含,且永不明文 | .credentials.yaml 和 workbuddy-vault/ 里是 API key 和登录 token。
展开完整文档(README 剩余 1 节)
dsh-config-sync

把本机 DSH(DeepSeek Harness)的全部插件与设置备份成一个可移植的 .zip,再批量同步到下一台电脑。

📖 日常操作请看 使用说明.md——按「照着做」的口径编写,含换电脑完整流程、回退步骤和常见问题。本文档偏设计与实现。

它解决什么问题

换电脑时,DSH 的环境散落在很多地方:profile 里装了哪些插件、每个插件的版本、cordis.patch.yml 里的配置覆盖、插件自己写的数据、全局工作区设置……手工搬极易漏项,而漏掉一处就可能让新电脑上的 DSH 起不来。

这个插件把这些收拢成一个文件,并保证还原过程可预览、可回退。

核心设计取舍

| 决策 | 原因 |
| 不备份 node_modules | 插件本体有几百 MB,且完全可由 package.json + pnpm-lock.yaml 复现。归档只记录版本,还原时重装,新电脑得到的是干净正确的依赖树。 |
| 不备份运行时/Electron/日志/缓存 | 这些属于机器而非用户,是可重建的。把 Windows 运行时拷到新装环境正是「还原把好环境弄坏」的典型原因。 |
| 凭据默认不含,且永不明文 | .credentials.yaml 和 workbuddy-vault/ 里是 API key 和登录 token。归档是会被拷到 U 盘和网盘的文件,默认排除;显式要求时用 AES-256-GCM 加密成独立成员。 |
| 还原默认只预览 | 写入前必须先看到「会改哪些文件、会增删哪些插件」。加 apply: true 才真正执行。 |
| 应用前自动做还原点 | 每次写入前把当前 profile 配置快照到带时间戳的目录,误操作可退回。 |
| 目标有额外插件时拒绝执行 | 避免「同步一次,把本机独有的插件配置弄丢」。需显式 overwritePlugins: true。 |

安装

插件目录:D:\Dsh\Sync\dsh-config-sync

D:\Dsh\resources\runtime\cli\bin\dsh.cmd plugin --profile desktop add D:\Dsh\Sync\dsh-config-sync

装完需要重启 DSH 才会注册工具。

该命令要写 C:\Users\ThinkPad\.dsh\profiles\desktop(在工作区之外),在受限沙箱下会报 EPERM,需要一次完全权限。

用法

在 DSH 会话里(推荐)

装好后直接对 agent 说,例如:

- 「看看我这台电脑现在有哪些插件和设置」→ dsh_config_status
- 「把插件和设置备份出来」→ backup_dsh_config
- 「把这个备份还原到新电脑」→ restore_dsh_config

五个工具:

| 工具 | 作用 |
| dsh_config_status | 看现状:装了哪些插件、各类设置文件数量、备份会包含什么 |
| backup_dsh_config | 生成备份归档(支持 dryRun 预览) |
| restore_dsh_config | 预览/应用还原 |
| verify_dsh_config | 校验归档完整性(逐个成员核对 sha256) |
| list_dsh_backups | 列出已有归档 |

命令行(DSH 起不来时用这个)

$cli = "D:\Dsh\resources\runtime\cli\bin\dsh.cmd" # 仅用于装插件
node D:\Dsh\Sync\dsh-config-sync\bin\dsh-config-sync.mjs <命令>

看现状
node bin\dsh-config-sync.mjs status

备份(默认不含凭据和会话)
node bin\dsh-config-sync.mjs backup --output D:\backup\dsh.zip

备份并加密包含登录凭据
node bin\dsh-config-sync.mjs backup --output D:\backup\dsh.zip
--categories profile-config,home-config,plugin-state,credentials --password 你的口令

校验
node bin\dsh-config-sync.mjs verify --input D:\backup\dsh.zip

还原:默认只预览
node bin\dsh-config-sync.mjs restore --input D:\backup\dsh.zip --profile desktop

确认后真正写入
node bin\dsh-config-sync.mjs restore --input D:\backup\dsh.zip --profile desktop --apply

换电脑的完整流程

旧电脑

node bin\dsh-config-sync.mjs backup --output D:\dsh-backup.zip

新电脑(先装好 DSH 本体)

1. 校验归档,确认传输没损坏
node bin\dsh-config-sync.mjs verify --input D:\dsh-backup.zip

2. 预览:看清楚会写入什么、插件增删情况
node bin\dsh-config-sync.mjs restore --input D:\dsh-backup.zip --profile desktop

3. 应用
node bin\dsh-config-sync.mjs restore --input D:\dsh-backup.zip --profile desktop --apply

4. 安装插件(归档不含 node_modules,第 3 步会打印完整命令)

D:\Dsh\resources\runtime\cli\bin\dsh.cmd plugin --profile desktop add dsh-pet@0.3.7
D:\Dsh\resources\runtime\cli\bin\dsh.cmd plugin --profile desktop add dsh-mnemon@0.5.29
…按第 3 步输出的清单逐个装
5. 重启 DSH。

备份类别

| 类别 | 默认 | 内容 |
| profile-config | ✅ | package.json、pnpm-lock.yaml、cordis.yml、cordis.patch.yml 等 |
| home-config | ✅ | storages/workspace.json、telemetry/ 等全局设置 |
| plugin-state | ✅ | 各插件在 DSH_HOME 下的状态目录 |
| credentials | ❌ | 登录凭据,需 password,AES-256-GCM 加密 |
| sessions | ❌ | 会话记录,体积大 |

安全说明

- 明文凭据从不进入归档。代码里有一条独立防线:任何成员名命中凭据模式都会直接报错中止,而不是默默写进去。
- workbuddy-vault/ 存的是明文 token,它在 plugin-state 里会被自动排除并给出提示——这是实测发现的真实风险点。
- 加密用 scrypt(N=2¹⁵)派生密钥 + AES-256-GCM,口令错误或归档被篡改都会解密失败,不会还原出似是而非的内容。
- 忘记口令 = 凭据无法恢复,需要在新电脑重新登录。

测试 powershell
node --test test/ # 或直接:node test/sync.test.mjs

覆盖 ZIP 往返与损坏检测、加密往返与错误口令、清单排除规则、凭据隔离、预览不落盘、还原点、篡改检测和 CLI。

在受限沙箱里,涉及子进程的 4 个 CLI 用例会因 spawn EPERM 跳过——那是沙箱禁止管道 stdio,不是插件缺陷。

目录结构

dsh-config-sync/
├── bin/dsh-config-sync.mjs # 独立 CLI(DSH 起不来时的救援通道) ├── lib/ │ ├── index.js # 插件入口,注册 5 个工具 │ ├── inventory.js # 决定备份什么(核心策略所在) │ ├── archive.js # 备份 / 预览 / 还原 / 校验 │ ├── crypto.js # 口令加密 │ └── zip.js # 零依赖 ZIP 读写 ├── test/sync.test.mjs └── cordis.patch.yml

零运行时依赖:ZIP 和加密都用 Node 内置模块实现,避免在"正在修环境"的机器上还要先装依赖。
预览分享卡片长什么样 ↓huihui0927/dsh-config-sync
分享 · DeepSeek Harness Hub
huihui0927/dsh-config-sync

打包插件与设置,换机预览后批量还原

回到顶部