前言¶
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。