前言¶
DSH(DeepSeek Harness)采用插件化架构。在开发或调试过程中,重启 DSH Desktop 是应用配置更新或插件变更的常见需求。手动重启应用不仅效率低下,还可能中断当前的上下文会话。本插件旨在提供一套标准化的重启入口,覆盖命令行、设置面板以及 API 接口。
核心功能¶
该插件由 MicroWearld 维护,提供以下核心能力:
- 重启应用本体:保持当前 Profile 不变,重启 DSH Desktop 应用进程。
- 切换 Profile 并重启:支持切换至指定 Profile 并执行重启操作。
- 多入口支持:通过命令行、Web 设置面板、独立 Web 页面以及 API 接口提供统一操作入口。
安装与启用¶
在 DSH Desktop 终端(或任何 dsh CLI)中,针对 desktop profile 执行以下命令:
dsh plugin --profile desktop add "link:D:/workspace/dsh-quick-restart-desktop"
安装后需要重启 DSH Desktop,插件才会随下一次 Loader 组合激活。
典型用法¶
1. 命令行入口¶
插件注册了以下斜杠命令:
/desktop-restart:重启当前 Profile 的应用本体。/desktop-restart <profile>:切换至指定 Profile 并重启。/desktop-profiles:列出当前 Profile 与全部可发现 Profile。
2. 设置与 Web 入口¶
- 设置页面:进入设置页面的「快速重启」面板,列表第一行为「重启 DSH Desktop」主按钮,其他行对应「切换并重启到此 profile」。
- 独立页面:在浏览器中直接打开
http://localhost:<port>/desktop-restart,可查看完整的面板与操作按钮。
3. API 接口¶
插件提供基于 JSON 的 HTTP API,监听在 127.0.0.1:
- 重启接口:
POST /desktop-restart/api/restart- 请求体:
{ profile?: string }。不传参数或参数为当前 Profile 时,重启本体;其他情况切换并重启。 - 行为:立即返回「已受理」,不等待进程结束。
- 限制:要求 JSON content-type,Body 超过 64 KiB 返回 413。
- 请求体:
- 状态查询接口:
GET /desktop-restart/api/state- 返回:
{ current, profiles[] }。
- 返回:
技术细节与安全¶
- 协议依赖:重启本体依赖
desktopRuntime.requestRestart()(内部接口);切换 Profile 依赖desktopProfiles.select()(官方契约)。 - 安全边界:API 无鉴权保护,但 webServer 仅绑定回环地址(127.0.0.1),且重启请求强制要求 JSON content-type,有效防御跨源表单攻击。
- 兼容性:在普通的
dsh web(无desktopProfiles)环境中,插件会正常加载但不挂载任何功能,避免报错。
注意事项¶
- 托盘菜单:DSH Desktop 托盘菜单已内置 Profile 切换功能,由
desktop-profiles插件处理。本插件不注册托盘条目。 - 依赖:本插件以当前 dsh 进程的权限运行。安装前建议检查源码与许可证(MIT)。
总结¶
该插件通过标准化接口解决了 DSH Desktop 的重启与 Profile 切换问题,适用于开发调试及自动化脚本场景。