前言¶
DSH Web 进程在运行时可能会崩溃或意外中断,导致会话中断和服务不可用。手动恢复和检查健康状态既繁琐又容易出错。此插件解决这些问题,提供一个集中的设置存储、Web Supervisor 和恢复机制。
这是什么¶
它是 DSH Web 的核心,包含监控守护进程、设置存储、审批守卫和跨机器同步引擎。它将四个独立的功能合并到一个包中。该插件通过在 dsh web 内部作为主机+客户端运行,并在外部作为系统守护进程运行,来实现自我恢复和状态持久化。
核心功能¶
- DSH Web Supervisor(监控守护进程):系统级监控(systemd),每 3 秒轮询服务状态,保存最后已知良好(LKG)快照,检测崩溃并执行自动回滚,生成包含 Git Diff 和日志的 health report。
- 自动恢复:在 DSH Web 启动 8 秒后,自动查找并恢复在
autoResumeWithin(默认 5 分钟)内中断的会话。 - 自动重载:浏览器端客户端插件,在 Web 服务重启或网络断开时自动重载页面。
- 设置存储:提供全局的
settings.json存储和 Maestro 设置卡片,供其他模块读写。 - 审批守卫:提供规则分类和审批入口,通过
maestro_guard_status查看状态。 - 跨机器同步:提供备份、恢复、保留策略 GC 和双机同步功能。
安装与启用¶
使用官方命令安装插件:
dsh plugin --profile web add @ddtcorex/dsh-maestro-core
若需指定版本,可使用:
dsh plugin --profile web add @ddtcorex/dsh-maestro-core@<version>
安装完成后需重启 dsh web。该包会自带 cordis.patch.yml,请勿手动复制或添加重复的 Row ID。
典型用法¶
通过命令行工具或 Systemd 守护进程进行管理:
# 启动守护进程(前台调试)
node packages/dsh-maestro-core/lib/index.js daemon
# 查看状态
node packages/dsh-maestro-core/lib/index.js status
# 恢复指定时间范围内的中断会话
node packages/dsh-maestro-core/lib/index.js resume --within 5m
启用 Systemd 守护进程以实现系统级监控:
bash packages/dsh-maestro-core/scripts/install-systemd.sh
systemctl --user daemon-reload
systemctl --user enable --now dsh-web-supervisor
systemctl --user status dsh-web-supervisor
适用场景与注意¶
- 环境要求:需要 Node.js
^22.19.0 || >=24.0.0和 pnpm 11+,DSH 版本需为 0.1.x 或 0.2.x。 - 构建要求:
lib/目录被 Git 忽略,源码修改后需执行pnpm build。客户端构建需要build-client.mjs。 - 权限风险:插件以当前 DSH 进程权限运行,若 DSH 进程拥有较高权限,插件同样拥有相应权限。建议在安装前检查源码与许可证。
- 配置:Telegram Bot Token 为可选配置,用于通知。
结尾¶
dsh-maestro-core 通过将监控、存储和同步能力整合到一个包中,降低了 DSH Web 的维护复杂度,提升了系统的健壮性。