前言¶
在 DSH 裏改配置、裝插件、跑長任務時,風險不只是“當前頁面崩了”。settings.yaml、profiles/、skills/ 被改壞,sessions/ 會話留檔丟失,崩潰後不知道回退到哪個提交,單機故障後本地狀態無法找回,都會讓排障變成憑記憶重做。
dsh-git-rescue 是針對 DSH 的救援恢復插件,核心思路是把 .dsh 納入 git 版本管理,用 commit 歷史做回退,並用獨立守護進程、遠端備份、救援環境和專項恢復工具做兜底。
這是什麼¶
dsh-git-rescue 是 EIGHTfs 維護的 DSH 插件,定位爲一行:
DSH 救援恢復插件——守護進程 + .dsh git 倉庫管理 + 遠端備份 + 救援環境 + 專項恢復工具。
倉庫地址:
https://github.com/EIGHTfs/dsh-git-rescue
已覈實資料中:
- 許可證:
MIT package.json版本:2.5.0engines要求:dsh >=0.0.1、node >=20.0.0
需要注意,資料中功能說明同時出現 2.0.0、v2.5.0 等口徑,例如 README 功能總覽標註“當前 2.0.0 合併版”,而 package.json 版本爲 2.5.0。使用時建議以倉庫當前文件爲準。
核心能力¶
.dsh 本地版本管理¶
插件將 .dsh 作爲本地 git 倉庫管理,支持自動 commit、心跳、崩潰檢測。
commit 規範爲:
chore(guard): <觸發原因> | <自檢摘要>
這樣每次提交都能帶上觸發原因和自檢摘要,便於回看當時發生了什麼。
入庫邊界¶
已覈實資料給出以下邊界:
- 憑據永不入庫:
.credentials.yaml、.env、.anonymous-user-id、git-rescue/(token/heartbeat/events) - 大文件不入庫:
node_modules/、profiles/*/node_modules/ sessions/storages爲 zstd 壓縮二進制,默認每天一次全量基線 + 常規增量排除
遠端備份¶
遠端備份支持 GitHub token / SSH key 雙方案。
遠端倉庫名默認爲:
.dsh@<dsh版本>.<設備ID>
如果 GitHub 不允許 . 開頭,自動降級爲:
dsh-at-...
token 只存本地,權限爲 600,絕不寫入任何 commit,僅用於 push 認證。
初始化時會檢測系統 git 是否可用;如果本機 git 缺少 git-remote-https,會自動降級爲 GitHub REST API 直連。
守護進程與開機自啓¶
插件使用開機自啓守護進程,啓動命令在 .dsh 目錄這一層,並寫入系統自啓。
guardian 作爲獨立進程,用於探活、git 回退、拉起、自檢、OOM 防護、OOM 故障識別、peak-resume。
拉起 DSH 時帶:
NODE_OPTIONS=--max-old-space-size=4096
崩潰恢復路徑¶
崩潰恢復按以下路徑處理:
故障分類 → 保留現場 → 壞點標記 → reset 到好提交 → 拉起 → 自檢
如果無法通過 git 回退恢復,資料中給出的進一步路徑是喚起救援環境協助。
救援環境¶
救援環境包括:
<dsh版本>@Save-clean
<dsh版本>@Save-test
當無法恢復時,可喚起 Save-clean,由純淨 dsh 加載插件 skills 目錄協助。
專項恢復工具¶
專項恢復工具包括:
plugin_config
boot_symlink
ro_volume
plugin_load
permission
session_repair
plugin-health 做聲明/產物一致性檢查,拉起前自動修復。
另有接管式重啓能力,路徑爲:
TERM → 輪詢恢復 → 驗證
會話恢復與自動續跑¶
崩潰後自動調 session-manager 續跑中斷會話,並受自動續跑全局閘門約束。
自動續跑全局閘門規則爲:
DSH 剛啓動默認關閉續跑;用戶手動開啓,或第一次手動對話後自動放行。
profile 還原點¶
profile 還原點會在 profile/配置變化提交 git 時自動打包 zip。
恢復時手動執行:
unzip -o
覆蓋恢復,不依賴 git。
內置 LLM 自治診斷¶
guardian 可直連 LLM 分析故障並建議動作,校驗後執行。
資料中說明其使用 .credentials.yaml 的 DEEPSEEK_API_KEY 調 deepseek API。
自動更新¶
自動更新支持強制跟隨 GitHub 最新穩定版,並支持大版本換代升級。
目錄結構查看¶
tools/dir-tree.mjs 是獨立工具,零依賴、全平臺兼容 Node.js。
可 CLI 運行或 import 調用,默認只列目錄 2 層:
tools/dir-tree.mjs
插件安裝門禁¶
package.json 描述提及“插件安裝門禁”。
已覈實資料未展開該門禁的具體規則。
Agent 工具¶
資料列出以下 Agent 工具:
git_rescue_status
git_rescue_init
git_rescue_backup
git_rescue_log
git_rescue_rollback
git_rescue_push
git_rescue_restart
git_rescue_repair
git_rescue_rescue_env
git_rescue_boot_autostart
git_rescue_link_recovery
git_rescue_restorepoints
git_rescue_restorepoint_build
git_rescue_restorepoint_restore
安裝與啓用¶
當前已覈實資料未提供安裝命令,因此不在此拼接安裝命令。
啓用前需要先確認環境:
dsh >=0.0.1
node >=20.0.0
插件會以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證:
https://github.com/EIGHTfs/dsh-git-rescue
MIT
涉及 token、SSH key、.credentials.yaml 和系統自啓時,按自身安全要求審查。
適用場景與注意¶
適合以下場景:
- 需要把
.dsh配置、會話、skills 等狀態納入版本管理 - 需要崩潰後自動探活、回退、拉起和自檢
- 需要 GitHub 遠端備份
- 需要純淨救援環境和專項恢復工具協助
- 需要
profile還原點作爲 git 之外的覆蓋恢復手段
注意:
- 已覈實資料未包含安裝命令、星標數、分類、目錄頁 URL。
- 版本號口徑不一致:README 功能總覽出現
2.0.0,package.json爲2.5.0,profile 還原點相關說明出現v2.5.0。 git 還原在package.json描述中表述爲“只還原 profile”,在 README 中表述爲回退到好提交併提交現場;範圍表述不完全一致。- 名稱前綴大小寫在資料中存在差異:GitHub 鏈接爲
EIGHTfs/dsh-git-rescue,package.jsonname 爲dsh-git-rescue。 - DSH 插件目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;本插件不是官方應用商店。
結尾¶
dsh-git-rescue 的價值在於把 DSH 的“配置狀態”和“崩潰恢復”拆成可執行路徑:版本管理交給 git,本機兜底交給 guardian,遠端備份交給 GitHub,極端故障再交給救援環境和純淨 dsh 協助。
GitHub:
https://github.com/EIGHTfs/dsh-git-rescue
已覈實資料未提供目錄頁 URL。