前言¶
在 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,已完成的項不會自動回滾。
設置頁能做什麼¶
設置 → 系統快照 支持:
- 立即建快照;
- 編輯註冊表白名單(一行一個鍵,僅接受
HKCU\或HKLM\,不接受通配符與..); - 開關 hosts、用戶環境變量、系統環境變量、服務、防火牆、計劃任務採集;
- 調整保留份數(1–100)、保留天數(1–365)、差異最多列出條數(20–2000);
- 勾選恢復範圍(註冊表 / hosts / 用戶環境變量);
- 查看已有快照、與當前比較、二次確認後恢復。
數據存放與安全邊界¶
默認數據目錄爲:
%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