前言¶
在 DeepSeek Harness(DSH)上开发和试用插件时,经常会碰到必须完整重启客户端的情况:新装或更新了 bundle、改了只在启动时生效的配置,或者界面与任务卡住。常见做法是手动关窗口再重新打开,步骤不多,但在反复迭代时仍会打断节奏。
dsh-restart-plugin 由社区开发者 zhangmaorongXL 维护,在 DSH 侧边栏底部注册一个重启入口。用户确认后,插件通过脱离 DSH 进程树的 PowerShell 助手结束当前主进程,并用同一可执行路径重新拉起应用。下面介绍它的定位、安装方式、使用步骤,以及需要提前知晓的限制。
这是什么¶
dsh-restart-plugin 是一个同时包含 Host 端和 Web 客户端的 DSH 插件,当前版本为 0.1.0,采用 MIT 许可证,面向 Windows 桌面环境(依赖 PowerShell 与 WMI)。
插件在 DSH 生态里归类为客户端类能力:按钮挂在 Web 客户端侧边栏,重启逻辑由 Host 路由与系统脚本完成。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装前建议自行查阅源码与许可证,插件以当前 DSH 进程及用户权限运行。
核心功能¶
依据 README 已核实的能力如下。
界面与交互¶
- 在
sidebar.footer.action插槽注册按钮,默认order: 10。 - 侧边栏展开时显示图标和
Restart文案;收起时只显示⟳图标。 - 点击后二次确认,提示会中断未保存内容与运行中任务。
- 请求发出后按钮禁用并显示
Restarting...,避免重复点击。
Host 与重启机制¶
- 客户端向
POST /dsh-restart-plugin/force-restart发请求;Host 先返回200,再异步执行重启,减轻前端因连接断开报错。 - 在系统临时目录写入
dsh-force-restart-<timestamp>.ps1,经 WMIWin32_Process.Create启动隐藏的 PowerShell 助手,该进程不在 DSH 进程树下。 - 助手等待 800 ms,查找主窗口标题包含
DeepSeek Harness的进程,记录可执行路径后强制结束,等待 1 s 再用原路径启动;脚本执行完后删除自身。 - 源码以 ESM 与浏览器模块直接加载,无需单独构建步骤。
警告:这是强制重启,不等待会话保存,也不优雅关闭任务。未保存会话、正在执行的 Agent 任务与工具调用都可能被中断。
工作原理(简要)¶
经过上面的功能说明,流程可概括为:
- 用户点击侧边栏底部
⟳并确认。 POST /dsh-restart-plugin/force-restart→ Host 立即返回{"ok":true,"message":"Restarting..."}。- WMI 启动脱离进程树的 PowerShell 助手 → 定位并结束 DSH → 用原 exe 路径重启。
侧边栏按钮
│ POST /dsh-restart-plugin/force-restart
▼
DSH Host 路由 ── 立即返回 200 ──▶ 客户端进入 Restarting...
│
│ WMI(脱离 DSH 进程树)
▼
PowerShell 助手
│ 等待 800 ms → 结束 DSH → 等待 1 s
▼
重新启动 DeepSeek Harness.exe
安装与启用¶
环境要求¶
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows(PowerShell、WMI) |
| 应用 | DSH 桌面端,支持插件 bundle 与 Web 客户端插件 |
| DSH 能力 | webServer 服务、sidebar.footer.action 插槽 |
| 进程标题 | 主窗口标题需包含 DeepSeek Harness |
| 参考环境 | Windows + DeepSeek Harness 0.2.2-rc.1 |
通过 CLI 安装(推荐)¶
先在 PowerShell 中从 GitHub 添加插件(desktop 为桌面端默认 profile 名,自定义 profile 请替换):
dsh plugin --profile desktop add github:zhangmaorongXL/dsh-restart-plugin
本地开发可使用 link:
dsh plugin --profile desktop add link:E:/path/to/dsh-restart-plugin
然后确认该 profile 的 package.json 同时包含依赖与 bundle 条目:
{
"dsh": {
"profile": {
"bundles": [
"dsh-restart-plugin"
]
}
},
"dependencies": {
"dsh-restart-plugin": "github:zhangmaorongXL/dsh-restart-plugin"
}
}
若 dsh.profile.bundles 中没有 dsh-restart-plugin,需手动加入,否则 cordis.patch.yml 不会应用,插件也不会加载。
首次加载¶
首次安装完成后,需要手动重启一次 DSH(此时侧边栏尚无重启按钮)。成功后,侧边栏底部会出现 ⟳ 按钮。
典型用法¶
- 在 DSH 左侧边栏底部找到
⟳按钮。 - 点击并在确认框中确认重启。
- 按钮变为
Restarting...并禁用;几秒内应用被强制结束并自动重新启动。 - 若重启前页面未断开,按钮可能一直显示
Restarting...,属预期行为;应用重启后页面会重新加载。
也可直接调用 Host 暴露的 HTTP 接口(内置客户端使用 POST):
POST /dsh-restart-plugin/force-restart
成功接受重启流程时响应为:
{"ok":true,"message":"Restarting..."}
200 仅表示流程已被接受,不保证进程一定结束或应用一定拉起。该接口无独立鉴权,依赖 DSH Web 服务的访问边界,不宜将 Web 服务暴露到不可信网络。
适用场景与注意¶
适合:
- 安装、更新或禁用插件后需要完整重启 DSH;
- 修改了只在启动时读取的配置;
- 界面或任务卡住,希望快速重启;
- 不想手动关窗再打开。
限制与排查要点:
- 只面向 Windows 桌面端;纯
dsh web+ 浏览器场景通常没有标题为DeepSeek Harness的窗口,不适合依赖此插件重启。 - 依赖窗口标题匹配;多个候选时只处理第一个。
- 当前版本无配置项(超时、标题规则、按钮位置等均未提供)。
- 权限不足、安全软件拦截 WMI 或 PowerShell 可能导致失败;Host 错误带
[dsh-restart-plugin]前缀输出到控制台。
常见现象与处理见项目 README 中的故障排查表(如无按钮、点击无反应、退出后未重现等)。
结尾¶
dsh-restart-plugin 把「完整重启 DSH 桌面端」收拢到侧边栏一次确认,适合插件与配置迭代频繁的 Windows 用户。使用前务必接受强制结束带来的数据与任务中断风险。
- 插件目录:https://www.skillhub.cn/plugins/zhangmaorongXL/dsh-restart-plugin
- 源码与文档:https://github.com/zhangmaorongXL/dsh-restart-plugin