DeepSeek Harness Hub
← 返回列表

侧栏一键重启csdjl88/dsh-web-restart

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

侧边栏一键完整重启服务,页面自动重连不刷新

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/21 · 已提供中文文档

dsh-web-restart 用于 deepseek harness 重启

综合分
28.1
GitHub 分
28.1
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add csdjl88/dsh-web-restart
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-tools@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-web-restart

DSH Web 插件:侧边栏一键完整重启 DSH —— 点击按钮后结束当前 dsh web 进程,并以完全相同命令经启动守卫重新拉起(无需 systemd/Docker 等守护进程),页面自动恢复,同时提供 agent 可调用工具。

npm 包名 dsh-restart 已被同名项目占用,本插件定名 dsh-web-restart。

功能特性

- 🔘 侧边栏底部重启按钮:位于 sidebar.footer.action 操作区(Cordis 生命周期面板旁),点击即重启,无确认弹窗(本机信任模型)
- ♻️ 完整进程重启:结束当前 dsh web 进程,以完全相同的命令行重新拉起(保留 --profile / --patch 及所有内层参数,并总是确保带 --no-open 不弹浏览器)
- 🛡️ 启动守卫(无守护进程):新进程由守卫在「旧进程已退出 + 端口已释放」后才启动,彻底避免端口占用竞态(DSH 的 webserver 启动即监听且无重试)
- 🔄 页面不刷新、不新建标签:重启期间按钮显示「重启中…」,页面保持不动,DSH 客户端 WebSocket 自动重连(connection/reset)在原会话标签页恢复界面(会话由 DSH 持久化保留)
- 🧰 agent 可调用工具:dsh_restart 工具与按钮共用同一重启逻辑,可在对话中直接触发
- 🌐 中英双语 UI 文案与 README
- 🚫 幂等保护:重启在途时重复点击/调用会被拒绝

安装

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

重启 DSH 后生效(侧边栏底部出现按钮)。

使用

Web 按钮
侧边栏底部点击「重启 DSH」即可。按钮变「重启中…」并自动轮询;页面不刷新 —— DSH 的 WebSocket 自动重连在同一会话标签页恢复界面(不新建标签)。若 30 秒内新进程未就绪,会显示错误提示(请查看运行 dsh 的终端日志)。

Agent 工具
在对话中要求「重启一下 DSH」即可(工具名 dsh_restart,可选参数 reason)。注意:重启会中断所有正在运行的 agent 任务与后台作业。

工作原理

点击按钮 / 调用工具
└─ POST /dsh-restart(幂等,单飞)
└─ spawn 启动守卫(同一 node + 原命令行 + 自动追加 --no-open)
└─ 旧进程 1s 后退出
└─ 守卫轮询:旧进程退出 & 端口空闲
└─ 以原命令(带 --no-open)重新拉起 dsh web(独立会话)
└─ 页面不刷新、不新建标签,DSH 自动重连恢复原会话

- 重启命令总是带 --no-open(原命令没有则自动追加):重启时浏览器已在用户面前,不再自动弹新窗口
- 页面不整页刷新:重启期间按钮显示「重启中…」,DSH 客户端 WebSocket 自动重连(connection/reset)恢复界面,回到原会话标签页,不新建标签
- HTTP 端点:POST /dsh-restart(触发)、GET /dsh-restart/health(健康检查,返回 pid 供前端识别新进程)
- 环境契约:DSH_RESTARTED_BY / DSH_RESTART_OLD_PID / DSH_RESTART_PORT

如何停止重启后的 DSH(重要)

重启后的 dsh web 运行在独立会话(进程组)中。原 dsh 是终端前台进程组的组长,它退出后原进程组变成孤儿组,无法再接收终端的 Ctrl+C —— 这是 Unix 进程模型的固有行为,插件无法让重启后的进程恢复 Ctrl+C 停止。请用以下任一方式停止:

- 关闭运行 dsh 的终端窗口(守卫检测到终端关闭后自动终止 dsh,端口随之释放)—— 最推荐
- 在终端按 Ctrl+D(同样是终端关闭信号)
- 或在新终端执行 pkill -f "dsh web" / kill (lsof -iTCP:3080 可查 pid)

兼容性

- 本插件面向终端前台运行 dsh web(无外部守护)的场景设计,重启链路已通过真实 dsh web 实例验证
- ⚠️ 在 systemd / Docker / pm2 等带自动重启策略的守护环境下慎用:旧进程退出会同时触发「外部守护拉起」与「本插件启动守卫拉起」,产生两个实例争抢端口(一个 EADDRINUSE 崩溃)。守护环境下应关闭守护的重启策略,或移除本插件
- 需要 DSH 0.1.0-rc.7 及以上

开发

npm run check   # 语法检查
npm test        # 单元测试 + 进程级 e2e(真实验证重启链路)

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群