跳到正文
dsh-market 浏览插件 GitHub EN

DWJZ/dsh-restart

在 DSH Web 设置面板里增加一个「重启」页:显示当前宿主的 PID、端口、启动时间与运行时长,重启由分离的 helper 完成——等端口不再应答后再按同一启动命令拉起新进程;替代宿主返回新的 boot id 后页面自动刷新。

Star 数 ★ 0 分类 UI 增强 收录于 2026-09-19

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add github:DWJZ/dsh-restart

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

截图

README


description: "dsh-restart: 在 dsh Web 设置面板里一键重启宿主进程。"

dsh-restart

English | 中文

在 DeepSeek Harness(dsh)Web 设置面板里多出一个「重启」页:点一下就把正在运行的宿主进程换成新的。

设置里的重启页

它做什么

  • 宿主半在 Web 服务器上注册两个路由,都只接受本机同源的直接请求:
    • GET /dsh-restart/status — 当前进程的 boot id、PID、启动时间、端口
    • POST /dsh-restart/restart — 替换当前进程(应答 202 后宿主退出)
  • 浏览器半注册一个 settings.section 页面:显示上述信息并提供重启按钮;点击后轮询 /dsh-restart/status,一旦应答的 boot id 变了就刷新页面。

重启由 detached helper 完成:宿主在 400ms 后退出,helper 等到端口不再接受连接,才用完全相同的启动命令拉起替代进程(Node 可执行文件、execArgv、入口绝对路径、其余 argv、工作目录)。这个顺序保证了替代进程不会在旧 socket 还占着端口时死于 EADDRINUSE。日志写在系统临时目录的 dsh-restart-<时间戳>.out.log / .err.log。

会话记录保存在磁盘上,重启后仍然在;已安装但尚未生效的插件会在下次启动时加载。

安装

# from GitHub
dsh plugin --profile web add github:DWJZ/dsh-restart

# local development (the profile links the checkout, so edits apply directly)
dsh plugin --profile web add link:/path/to/dsh-restart

上面两条命令分别是:从 GitHub 源安装,以及本地开发时软链检出目录(link:),后者改完代码即生效。

首次安装后需要重启一次(在终端重启宿主,或临时用一次 dshmarket 的重启按钮),这个页面才会出现;之后就都用它来重启。

端点约定

POST /dsh-restart/restart 只接受对端为回环地址、且 Origin 与 Host 一致的请求;任何转发头(Forwarded、X-Forwarded-For、X-Real-IP)或非回环对端都会以 403 拒绝。应答 202 后宿主退出,由 helper 拉起替代进程。

测试

node test/smoke.mjs

覆盖:detached helper 真的能拉起替代进程、同源校验的四种拒绝路径、客户端 bundle 的注册与渲染。设置 DSH_CHECKOUT=<dsh 检出目录> 时额外用该检出里的 React 做一次 SSR 渲染断言;不设置则跳过该条。

许可证

MIT

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。