前言¶
DeepSeek Harness(DSH)采用“一切皆插件”的架构。开发者在安装或更新插件后,通常需要重启 dsh web 服务才能使新插件生效。在命令行中手动执行重启操作会中断当前工作流。dsh-restart 插件旨在解决这一痛点,将重启操作封装为设置页中的一个入口,实现无需命令行的界面化重启。
插件概览¶
这是一个由 zhouchengke2046 维护的独立插件,隶属于 admin-security 分类。它不包含任何余额或用量管理功能,仅负责在设置页提供“重启 dsh”的入口。该插件遵循 MIT 许可证,支持单独安装与卸载。
核心功能¶
- 零依赖与安全性:插件本身零依赖、零耦合,安装后可单独卸载。它不读取任何密钥或敏感信息,仅作为系统管理工具运行。
- 原生 UI 适配:插件原生适配 DSH 的设计令牌(
--dsw-alias-*),在深浅主题下均可正常显示。 - 可靠重启机制:
- 首先尝试使用
launchctl kickstart触发服务重启。 - 若触发失败,提供兜底方案(具体逻辑见配置)。
- 利用 launchd 的
KeepAlive机制确保服务被拉起。
- 首先尝试使用
- 自动恢复:用户确认重启后,插件会轮询服务状态,一旦服务恢复,页面自动刷新。
- 可观测性:重启操作的执行痕迹记录在
/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
使用方法¶
- 确保已安装插件并重启了
dsh web。 - 在 Web 界面打开 设置 页面。
- 找到并点击 重启 dsh 按钮。
- 在弹出的确认框中点击确认。
- 插件将执行重启操作,服务恢复后会自动刷新页面。
注意事项¶
- 运行环境:插件依赖 Node.js 环境,要求
>= 18。 - 权限说明:插件以当前
dsh web进程的权限运行,因此必须确保当前用户有权限执行launchctl相关命令。 - 代码审查:鉴于插件涉及系统服务重启,建议在安装前检查其 GitHub 源码与许可证,确保符合本地安全规范。
结语¶
dsh-restart 通过在设置页集成重启逻辑,简化了 DSH 插件开发后的服务维护流程。对于频繁进行插件调试或更新的开发者而言,该插件能有效减少命令行操作,提升开发体验。