dsh-restart-button:在 DSH Web 界面一键重启 dsh web

前言

用 DeepSeek Harness(DSH)做本地 AI 工作台时,装插件、改 cordis.patch.yml 或调试 link: 本地包,往往都要重启 dsh web 才能生效。常见做法是回到终端 Ctrl+C 再执行 dsh web,浏览器里还要手动刷新;重启后连接 token 会变,页面可能 401,得重新登录。若 DSH 是用 .vbs / .bat 无窗口后台拉起的,甚至没有终端可用来停进程。

下面介绍社区插件 dsh-restart-button(维护者 xinshang777),它在 DSH Web 页右上角注入「↻ 重启」按钮,把「停服务 → 再启动 → 刷新/重新登录」收成一次点击,并在新进程就绪后自动跳转到带新 token 的地址,尽量保持登录态。

这是什么

dsh-restart-button 是 DSH 的客户端类插件(当前版本 0.1.0,许可证 MIT)。它不新增业务配置项,行为由 DSH 自身启动参数(如 --port)决定。

一句话:把「回命令行 Ctrl+C 再重新 dsh web,然后手动刷新浏览器」变成网页上点一下;重启时助手沿用原端口,并给新进程带上 --no-open,避免弹出新标签页。

插件以当前 dsh web 进程的权限运行。安装前建议在 GitHub 仓库阅读源码与许可证,确认符合你的环境与安全要求。

核心功能

能力 说明
界面按钮 在 [ 主题 ] 与 [ 设置 ] 之间注入 ↻ 重启(需硬刷新页面后可见)
本机重启 通过 POST /dsh-restart/restart 触发;旧进程约 250ms 后退出, detached 助手轮询端口后按原端口拉起新 dsh web
自动恢复访问 前端轮询 /dsh-restart/status,拿到新 bootId 与带 token 的 URL 后 location.replace,减少重启后 401、手动登录
安全边界 重启接口仅允许本机回环访问(127.0.0.1 / localhost 等);非回环地址返回 403,属刻意设计
无远程入口 不联网、不读账号文件;不向本机以外发起请求

本插件不做:进程守护或崩溃自愈(仅在你点击时重启一次)、开机自启、端口冲突排查;也不开放远程访问下的重启能力。

安装与启用

前置条件

  • Node.js ≥ 18(插件使用 node:net / node:child_process)
  • pnpm(dsh plugin 的剩余参数会原样转发给 pnpm;缺失时可 npm i -g pnpm)
  • 已安装 @deepseek-ai/dsh,并能正常执行 dsh web
  • 通过 http://127.0.0.1:<端口> 或 http://localhost:<端口> 访问 Web 界面

推荐安装(GitHub 直装)

在终端执行:

dsh plugin --profile web add github:xinshang777/dsh-restart-button

安装成功后,插件会登记进 profile 的 dsh.profile.bundles(~/.dsh/profiles/web/package.json),无需手改配置。

第一次安装后仍需手动重启一次 dsh web;从第二次起,多数需要重启的场景可用页面按钮完成。

其他安装方式(按需)

  • 本地开发 / 改源码:在克隆后的仓库目录执行 dsh plugin --profile web add link:.(改 lib/* 需重启;改 assets/client.js 硬刷新即可)。
  • 离线 / 锁版本:下载 ZIP 解压后,在该目录执行 dsh plugin --profile web add link:.,再重启 dsh web。

验证是否装好

  1. 启动 dsh web,浏览器 F5 或 Ctrl+F5 硬刷新。
  2. 右上角应出现 ↻ 重启(在「设置」左侧)。

若看不到按钮:检查 bundles 是否含 dsh-restart-button → 硬刷新 → 再完整重启一次 dsh web。

典型用法

  1. 找到按钮 — 打开本机回环地址下的 DSH Web,硬刷新后看右上角 [ 主题 ] [ ↻ 重启 ] [ 设置 ]。
  2. 点击重启 — 按钮进入「重启中」;浏览器侧无需再敲命令。流程概览:页面 POST /dsh-restart/restart → 旧进程退出并拉起助手 → 助手在原端口启动新进程 → 页面轮询 status → 自动跳转带新 token 的 URL。
  3. 确认成功 — 页面重新加载且无需重新登录,即表示成功。
  4. 何时需要点 — 新装/卸载插件、修改 ~/.dsh/profiles/web/cordis.patch.yml、修改 link: 插件宿主侧(lib/*)代码时;仅聊天或切换会话则不需要。

本插件不读取 cordis.patch.yml 中的 config:。若你改了 DSH 启动端口,应改 dsh web 启动命令(如 --port);重启时助手会沿用当前进程端口。

适用场景与注意

适合谁

  • 经常装插件、改配置,dsh web 重启是日常操作。
  • DSH 后台无终端启动,无法用 Ctrl+C 停服务。
  • 受够重启后 401、手动刷新或重新登录。
  • 用 link: 改插件源码,需要「改一次 → 重启 → 验证」的浏览器内闭环。

不适合谁

  • 几乎从不重启 DSH。
  • 把 DSH 部署在远程服务器上供他人通过局域网 IP、域名或反向代理访问——此时点按钮会得到 403;远程场景宜用 SSH 与 pm2 / systemd 等自行管理重启。

常见问题(简要)

现象 处理方向
403 forbidden 改用 127.0.0.1 或 localhost 访问,非 bug
500 dsh bin.js not found 尽量用官方 dsh web 启动,避免非常规入口路径
重启后仍要登录 确认官方连接层;若自定义连接层导致拿不到 authenticatedUrl,可能退化为普通刷新
405 重启接口只接受 POST,勿在地址栏直接打开 /dsh-restart/restart

升级与卸载

升级(GitHub 方式)可重新执行安装命令;link: 方式 git pull 后点一次重启按钮即可。

卸载:

dsh plugin --profile web remove dsh-restart-button

插件不落独立配置文件;卸载后路由消失,重启需回到命令行(或改 package.json 后手动重启)。

结尾

dsh-restart-button 面向本机 DSH Web 用户,把重启与登录恢复收到一个按钮里,尤其适合插件开发与频繁改配置的场景。DSH 生态强调「一切皆插件」;社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye