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