dsh-restart:DSH Web 一键重启插件

前言

DeepSeek Harness(DSH)采用“一切皆插件”的架构。开发者在安装或更新插件后,通常需要重启 dsh web 服务才能使新插件生效。在命令行中手动执行重启操作会中断当前工作流。dsh-restart 插件旨在解决这一痛点,将重启操作封装为设置页中的一个入口,实现无需命令行的界面化重启。

插件概览

这是一个由 zhouchengke2046 维护的独立插件,隶属于 admin-security 分类。它不包含任何余额或用量管理功能,仅负责在设置页提供“重启 dsh”的入口。该插件遵循 MIT 许可证,支持单独安装与卸载。

核心功能

  1. 零依赖与安全性:插件本身零依赖、零耦合,安装后可单独卸载。它不读取任何密钥或敏感信息,仅作为系统管理工具运行。
  2. 原生 UI 适配:插件原生适配 DSH 的设计令牌(--dsw-alias-*),在深浅主题下均可正常显示。
  3. 可靠重启机制:
    • 首先尝试使用 launchctl kickstart 触发服务重启。
    • 若触发失败,提供兜底方案(具体逻辑见配置)。
    • 利用 launchd 的 KeepAlive 机制确保服务被拉起。
  4. 自动恢复:用户确认重启后,插件会轮询服务状态,一旦服务恢复,页面自动刷新。
  5. 可观测性:重启操作的执行痕迹记录在 /tmp/dsh-restart.log,便于排查问题。

安装与配置

安装

在终端执行以下命令,将插件添加到 Web 配置文件中:

dsh plugin --profile web add github:zhouchengke2046/dsh-restart

若需从本地路径安装,可使用:

dsh plugin --profile web add /path/to/dsh-restart

安装完成后,需重启 dsh web 进程。

配置项

插件支持通过 cordis.patch.yml 覆盖默认行为。主要配置项如下:

键 默认值 说明
restartEnabled true 是否注册重启路由。设置为 false 可禁用此功能。
restartCommand "" 覆盖重启命令。留空时,系统默认使用 launchctl kickstart -k gui/<uid>/<label>。
restartLabel com.dsh.web launchd agent 的标签,用于指定重启目标服务。
restartDelayMs 600 用户点击确认后,延迟执行的毫秒数。

配置示例(覆盖默认行为):

- insert:
    - id: dsh-restart
      name: dsh-restart
      config:
        restartEnabled: true
        restartLabel: com.dsh.web

使用方法

  1. 确保已安装插件并重启了 dsh web。
  2. 在 Web 界面打开 设置 页面。
  3. 找到并点击 重启 dsh 按钮。
  4. 在弹出的确认框中点击确认。
  5. 插件将执行重启操作,服务恢复后会自动刷新页面。

注意事项

  • 运行环境:插件依赖 Node.js 环境,要求 >= 18。
  • 权限说明:插件以当前 dsh web 进程的权限运行,因此必须确保当前用户有权限执行 launchctl 相关命令。
  • 代码审查:鉴于插件涉及系统服务重启,建议在安装前检查其 GitHub 源码与许可证,确保符合本地安全规范。

结语

dsh-restart 通过在设置页集成重启逻辑,简化了 DSH 插件开发后的服务维护流程。对于频繁进行插件调试或更新的开发者而言,该插件能有效减少命令行操作,提升开发体验。

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

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

小夜