dsh-config-vault:为 DSH 配置做快照、对比与安全回滚

前言

DeepSeek Harness(DSH)的配置并不集中在单一文件里:各 profile 的 cordis.patch.yml 承载模型路由、主题、插件参数、MCP 服务器与智能体预设;package.json 管插件清单与 bundle 顺序;~/.agents 下有技能与规则;storages/workspace.json 记录工作区列表;.credentials.yaml 存放登录凭据。改错一行往往只能自己在目录里堆 .bak-*,很难系统对比「现在和昨天差在哪」。

dsh-config-vault(配置保险箱)由维护者 klT45 开发,归类为工作流类 DSH 插件。它把快照、行级 diff、带预演的回滚和可导出的备份包做成统一能力,并在回滚前自动留安全快照;凭据默认不进快照,需要时导出须口令加密。下文介绍安装方式与三种入口的用法。

这是什么

一句话:为 DSH 配置建立可对比、可回滚、可带走的底。

实现上是零构建、零运行时依赖的纯 ESM JavaScript 包,通过 dsh.plugin 的 bundle patch 与 web client 挂进宿主。快照落在 $DSH_HOME/config-vault/snapshots/<id>/,每个文件带 sha256;对比支持快照对当前磁盘、快照对快照,密钥值在 diff 中打码;恢复前先预演,执行前自动创建安全快照,且不会删除快照里不存在的当前文件。

核心功能

快照与作用域

新建快照时可按作用域勾选要纳入的内容:

id 内容 默认勾选 恢复后生效方式
settings $DSH_HOME/cordis.patch.yml、profiles/*/cordis.patch.yml、settings.yaml 是 重载
plugins profiles/*/package.json、pnpm-workspace.yaml、compatibility.json、patches/**、plugins/*/config.* 是 重载
deps profiles/*/pnpm-lock.yaml 否 需重启
skills $DSH_HOME/skills/**、~/.agents/skills/**、AGENTS.md、CLAUDE.md(跳过 venv/node_modules/权重) 是 需重启
workspaces storages/workspace.json 是 需重启
credentials .credentials.yaml 否 需重启

MCP 与智能体预设写在 cordis.patch.yml 里,由 settings 作用域覆盖,没有单独文件。

对比与回滚

  • 对比:行级 diff、按文件分组;JSON 变更路径;敏感值打码。
  • 回滚:先 plan 预演(新增/覆盖/未变/仅当前存在),再执行;失败可依赖执行前的安全快照回退。
  • 导出/导入:标准 JSON 包,换机或团队共享后 import 再预演、恢复;含凭据的导出强制 AES-256-GCM + scrypt 口令加密。

安全相关设计(README 已写明)

路径穿越经逻辑路径与 safeJoin 限制在配置根内;HTTP 路由仅信任本机回环;凭据默认不备份;写入走临时文件再 rename;快照在 .tmp-<id> 组装成功后才落成正式目录。

安装与启用

前置:DSH 版本 >= 0.2.1-rc.2。npm 包当前为 0.1.3,许可证 MIT。

推荐从 npm 安装:

dsh plugin --profile desktop add dsh-config-vault

也可从 GitHub 源码安装(无需构建):

dsh plugin --profile desktop add github:klT45/dsh-config-vault

本地开发可用 link: 指向仓库目录。装完后重启 DSH,或在 设置 → 插件 启用并按提示重载,再打开 设置 → 配置保险箱。

卸载:

dsh plugin --profile desktop remove dsh-config-vault

说明:desktop profile 由 Desktop 壳的插件管理器管理,GUI 运行时 CLI 可能改不动它,此时应在 设置 → 插件 里安装或卸载。若要隔离验证,可把 $env:DSH_HOME 指到空目录,用独立 profile 安装后再启动隔离实例(README 中有完整示例)。

典型用法

插件提供三种入口,行为一致:设置页 UI、对话工具 config_vault、独立 CLI。

1. 设置页

路径:设置 → 配置保险箱。可新建快照(勾选作用域)、列快照、与当前对比、恢复预演与执行、导出/导入、删除。恢复需二次确认;含凭据的导出会要求口令。

2. 对话工具 config_vault

action 支持:status、list、snapshot、diff、plan、restore、remove、export、import、prune。例如:先 snapshot 留底,改配置后用 diff 看差异,回滚时先 plan 再经用户确认 restore。大体积导出写到 $DSH_HOME/config-vault/exports/(或指定 file),避免塞进上下文。

3. CLI

在插件目录下(或通过 dsh-config-vault bin):

node src/cli.js status
node src/cli.js scopes
node src/cli.js snapshot --name "装插件前"
node src/cli.js diff <id>
node src/cli.js restore <id>            # 只预演
node src/cli.js restore <id> --apply    # 执行(自动安全快照)
node src/cli.js export <id> --out backup.json [--passphrase ...]
node src/cli.js import --file backup.json [--passphrase ...]

全局参数包括 --home、--agents-home、--profile、--json。核心层也可当库使用:import { createVault } from 'dsh-config-vault/core'。

适用场景与注意

适合谁:经常改 profile 补丁、试插件组合、同步技能/规则或工作区列表,又希望在改坏时能对比和回滚的 DSH 用户。

运行与权限:插件以当前 DSH 进程权限读写 $DSH_HOME 与 agents 目录;安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,自行判断是否满足环境要求。

已知限制(README):

  • 宿主运行中恢复可能触发多次配置 HMR;最稳是停掉 DSH 再恢复,或恢复后重启。
  • workspaces 在运行中可能被宿主整体重写,预演会警告,宜在停止时恢复。
  • 技能目录可能很大:单文件 4 MiB、单快照 32 MiB 上限,超出会跳过并 warning。
  • 维护者注明目前主要在 Windows 上实机验证,POSIX 未实机跑过。

社区目录页分类为工作流;GitHub 星标为 0(以目录页信息为准)。插件已发布 npm,并出现在社区精选列表相关 PR 流程中,与 DeepSeek / 幻方无官方从属关系。

结尾

经过上面的步骤,你可以在改 DSH 配置前先快照、用 diff 看清差异、用预演 + 安全快照降低回滚风险,并用加密导出在机器之间迁移(凭据默认不随包走)。详情与截图见仓库 README。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜