dsh-git-rescue:DSH 救援恢复插件

前言

在 DSH 里改配置、装插件、跑长任务时,风险不只是“当前页面崩了”。settings.yamlprofiles/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.0
  • engines 要求:dsh >=0.0.1node >=20.0.0

需要注意,资料中功能说明同时出现 2.0.0v2.5.0 等口径,例如 README 功能总览标注“当前 2.0.0 合并版”,而 package.json 版本为 2.5.0。使用时建议以仓库当前文件为准。

核心能力

.dsh 本地版本管理

插件将 .dsh 作为本地 git 仓库管理,支持自动 commit、心跳、崩溃检测。

commit 规范为:

chore(guard): <触发原因> | <自检摘要>

这样每次提交都能带上触发原因和自检摘要,便于回看当时发生了什么。

入库边界

已核实资料给出以下边界:

  • 凭据永不入库:.credentials.yaml.env.anonymous-user-idgit-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.yamlDEEPSEEK_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

涉及 tokenSSH key.credentials.yaml 和系统自启时,按自身安全要求审查。

适用场景与注意

适合以下场景:

  • 需要把 .dsh 配置、会话、skills 等状态纳入版本管理
  • 需要崩溃后自动探活、回退、拉起和自检
  • 需要 GitHub 远端备份
  • 需要纯净救援环境和专项恢复工具协助
  • 需要 profile 还原点作为 git 之外的覆盖恢复手段

注意:

  • 已核实资料未包含安装命令、星标数、分类、目录页 URL。
  • 版本号口径不一致:README 功能总览出现 2.0.0package.json2.5.0,profile 还原点相关说明出现 v2.5.0
  • git 还原package.json 描述中表述为“只还原 profile”,在 README 中表述为回退到好提交并提交现场;范围表述不完全一致。
  • 名称前缀大小写在资料中存在差异:GitHub 链接为 EIGHTfs/dsh-git-rescuepackage.json name 为 dsh-git-rescue
  • DSH 插件目录是独立站点,与 DeepSeek / 幻方无官方从属关系;本插件不是官方应用商店。

结尾

dsh-git-rescue 的价值在于把 DSH 的“配置状态”和“崩溃恢复”拆成可执行路径:版本管理交给 git,本机兜底交给 guardian,远端备份交给 GitHub,极端故障再交给救援环境和纯净 dsh 协助。

GitHub:

https://github.com/EIGHTfs/dsh-git-rescue

已核实资料未提供目录页 URL。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye