dsh-system-snapshot:改系统设置前的白名单快照与可恢复对比

前言

在 Windows 上通过 DSH 或智能体改代理、hosts、注册表或用户环境变量时,一旦动错键或写坏 hosts,往往要手工对照备份或翻系统还原点。手工记「改前是什么」又容易漏项。下面介绍的 dsh-system-snapshot 是挂在 DSH 上的系统快照插件:按白名单采集一批系统状态,改动前后可对比新增、删除与改动;在明确确认的前提下,可把注册表白名单、hosts、用户环境变量恢复回去。服务、防火墙、计划任务和系统环境变量只做只读记录,不参与恢复。

这是什么

dsh-system-snapshot(GitHub:Yyhy110421/dsh-system-snapshot)由维护者 Yyhy110421 发布,在 SkillHub 社区目录中归类为 admin-security。它面向「动系统前先留底、动完能 diff、必要时能回滚一部分配置」的场景,而不是整机镜像或文件级备份。

能采集什么、能恢复什么

插件只快照白名单范围内的内容,不碰整个注册表。README 中能力对比如下:

类别 采集内容 可恢复
注册表 指定键下的值(名称、类型、值) 是
hosts 全文、SHA-256、路径 是
用户环境变量 名称和值 是
系统环境变量 名称和值 否,只读
服务 名称、显示名、状态、启动类型 否,只读
防火墙规则 名称、显示名、方向、动作、启用状态、配置文件 否,只读
计划任务 路径、名称、状态 否,只读

全量采集(含服务、防火墙、计划任务)在同一台机器上大约需要 10–15 秒;仅采注册表白名单时更快。

安装与启用

在 DSH 中打开 设置 → 插件管理器,使用资料中的安装标识(不要自行拼接其他命令):

github:Yyhy110421/dsh-system-snapshot

本地开发可从目录安装(示例路径来自 README,按你的实际目录替换):

file:E:\DSH\projects\dsh-system-snapshot

file: 安装为实体拷贝;修改源码后需卸载再装。插件管理器的「更新」仅对 npm 注册表插件生效,本插件不发布 npm。安装完成后重启 DSH,再在 设置 → 系统快照 中配置白名单与采集项。

package.json 标明当前包版本为 0.1.0,许可证 MIT,运行环境要求 Node ^22.19.0 || >=24.0.0;插件逻辑在 Windows 上依赖 PowerShell 5.1。

三个工具接口

宿主侧通过工具名调用;参数写法与 README 一致。

system_snapshot

用于创建快照或列出已有快照。

system_snapshot action=create label=改代理前
system_snapshot action=list

label 便于在列表里区分用途。

system_diff

将某份快照与当前状态(默认)或另一份快照比较;只输出变化项名称与摘要,不输出环境变量的具体值。

system_diff id=snap-20261106-120000-abcd
system_diff id=snap-20261106-120000-abcd compareTo=current maxItems=100

system_restore

恢复注册表白名单、hosts、用户环境变量。必须显式传入 confirm:true,且只应在用户明确要求恢复时调用。

system_restore id=snap-20261106-120000-abcd confirm=true
system_restore id=snap-20261106-120000-abcd confirm=true categories=["registry","hosts"]

恢复前插件会自动:再建一份「恢复前自动备份」快照;若存在 hosts 则先复制为 hosts.bak-日期-时间;再写入目标内容。categories 里即便写上服务、防火墙等,也只会跳过并报告,不会修改。恢复不是事务:中途失败会返回 partial:true 与 errors,已完成的项不会自动回滚。

设置页能做什么

设置 → 系统快照 支持:

  1. 立即建快照;
  2. 编辑注册表白名单(一行一个键,仅接受 HKCU\ 或 HKLM\,不接受通配符与 ..);
  3. 开关 hosts、用户环境变量、系统环境变量、服务、防火墙、计划任务采集;
  4. 调整保留份数(1–100)、保留天数(1–365)、差异最多列出条数(20–2000);
  5. 勾选恢复范围(注册表 / hosts / 用户环境变量);
  6. 查看已有快照、与当前比较、二次确认后恢复。

数据存放与安全边界

默认数据目录为:

%DSH_HOME%\data\system-snapshot\
  snapshots\snap-*.json
  settings.json
  tmp\

未设置 DSH_HOME 时,为 %USERPROFILE%\.dsh。快照仅存本机,不上传、不联网。快照内含环境变量值、hosts 内容与注册表值,应按敏感文件对待,且未加密。

安全相关约定(摘自 README):

  • 注册表只读写白名单键下的值,不递归子键;
  • 恢复需 confirm:true,设置页恢复需点两次确认;
  • 写 hosts 可能需要管理员权限,无权限时会在 errors 中报告;
  • 用户环境变量恢复只影响之后新启动的进程,已运行进程不变。

限制与适用谁

  • 仅 Windows;不备份文件、驱动、已安装程序、浏览器数据。
  • 不递归注册表子键,只记录白名单键本身的值。
  • 服务 / 防火墙 / 计划任务只记录状态,不能据此还原。

适合在 DSH 里做系统调参、代理或 hosts 实验的开发者:先 create 快照,改完 system_diff,确认无误再决定是否 system_restore。安装任何 DSH 插件前,插件以当前 DSH 进程权限运行,建议自行查看仓库源码与 MIT 许可证。

DSH 生态理念是「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系,本文档描述的是社区插件行为,以仓库 README 为准。

参考链接

  • 社区目录:https://www.skillhub.cn/plugins/Yyhy110421/dsh-system-snapshot
  • 源码与文档:https://github.com/Yyhy110421/dsh-system-snapshot
羽毛球分组比赛记分
小程序二维码

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

Xiaoye