DeepSeek Harness (DSH) 采用插件化架构,Web 界面中的重启功能是日常开发调试中的常见需求。dsh-better-restart 是一个社区维护的插件,它为 DSH Web 界面增加了“原地重启”的能力,并在重启前提供确认机制。
核心功能¶
该插件分为主机端和客户端两部分,通过浏览器与 Node 进程的交互实现功能。
- 主机端:通过
webServer暴露两个接口。POST /better-restart/status:查询当前 Agent 的运行状态。POST /better-restart:执行重启操作。优先使用启动器提供的appRestart服务(返回 204),若不可用则回退到 Root-include recompose 模式(返回 202)。
- 客户端:在设置栏新增“重启应用”按钮。
- 确认机制:点击后弹出对话框,每 1.5 秒轮询 Agent 活动状态。若有对话正在运行,需明确确认后才能重启;无运行对话则直接通过。
- 状态反馈:重启过程中显示加载动画并禁用按钮。
- 服务接口:通过
betterRestartUiCordis 服务向其他浏览器插件暴露status()和restart()方法。 - 无依赖:插件运行时完全自包含,除 Node.js 内置模块外无其他包依赖。
安装与启用¶
安装前请确保已安装 Node.js 22.19+ 或 24+,以及 pnpm 11。
方式一:从源码安装(推荐)¶
若你已经检出 DeepSeek Harness 源码,可直接在源码目录下执行:
git clone --depth 1 --branch dsh-v0.1.2-rc.1 https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness && pnpm install && pnpm run build
pnpm dsh plugin --profile web add -w github:lovstudio/dsh-better-restart#v0.1.4
pnpm dsh web
方式二:无源码安装¶
若仅需使用该插件而不需要 Harness 源码,可使用 npx 直接安装:
npx @deepseek-ai/dsh plugin --profile web add -w github:lovstudio/dsh-better-restart#v0.1.4
npx @deepseek-ai/dsh web
使用步骤¶
- 启动 Web UI:执行
dsh web。 - 在设置头部找到 Restart app 按钮。
- 点击后弹出确认对话框,确认后应用将在原地重启,当前浏览器标签页会自动刷新。
技术细节与注意事项¶
- 依赖要求:插件依赖
@deepseek-ai/dsh-base中的webServer和agents。appRestart和loader为可选依赖,若两者均不可用,重启操作将返回 503 错误。 - 重启机制:
- 首选:
appRestart(进程级重启)。 - 回退:Root-include recompose。此模式会禁用并重新启用 Loader 的根
cordis:include条目,重新读取配置和插件列表。由于复用 Node 进程,终端保持运行,但需注意浏览器端需等待 Socket 关闭响应(202)后才会刷新。
- 首选:
- ESM 缓存:Node.js 的 ESM 缓存机制意味着,对于已加载模块,只有通过 Harness 的 HMR 监听器才能检测到源码编辑的变化。
- 客户端自动加载:插件客户端模块在插件组合后由模块系统自动注入页面,无需重新构建 Web 应用。
- 文本资源:界面文案位于
@lovstudio/dsh-better-restart包中,自动注册到better-restart-ui语言环境命名空间。
生态与来源¶
此插件由 Lovstudio 维护,遵循 MIT 许可证。它不是 DeepSeek 官方维护的包,但可通过 DeepSeek Harness 的插件机制集成使用。