1123762794/dsh-web-restart
DeepSeek Harness Web UI一键重启按钮:侧边栏底部按钮,单击即可重启dsh web进程。
项目介绍Project Overview
dsh-web-restart 是 DeepSeek Harness Web UI 的插件,在侧边栏底部“设置”旁添加一个圆形重启按钮(↻),单击即可立即重启 dsh web 进程,页面断连约 15–20 秒后刷新即可恢复(会话已落盘并自动恢复);按钮在触发重启后仍会保留。作为 bundle-layer 插件,它具备重启期间红字提示、重复点击防护、每 5 秒轮询 /dsh-health 的绿点状态指示,并支持 Windows 下通过独立隐藏 PowerShell 保持重启脚本运行。适合需要频繁重启服务的开发者日常使用。注意:内部硬编码的 PowerShell 脚本路径仅适用于作者本机,部署前必须自行修改 lib/index.js。
dsh-web-restart is a plugin for the DeepSeek Harness Web UI that adds a circular restart button (↻) to the sidebar footer beside Settings. A single click immediately restarts the dsh web process; the page disconnects for about 15–20 seconds, then a refresh brings everything back, with disk-persisted sessions recovering automatically. Installed as a bundle-layer plugin, the button is persistent and survives the restart it triggers, with a re-entry guard, an in-flight red "restarting" state, and a status dot that polls /dsh-health every 5 seconds. On Windows the restart runs through an independent hidden PowerShell so the script outlives the harness. Suitable for users who frequently restart the web service. Note: the hard-coded PowerShell path in lib/index.js is author-specific and must be adjusted for your own environment.
请帮我了解并安装插件:【dsh-web-restart】【https://github.com/1123762794/dsh-web-restart】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:YOUR_OWNER/dsh-web-restart
把 1123762794/dsh-web-restart 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-web-restart
One-click restart button for the DeepSeek Harness Web UI.
Adds a small circular restart button (↻) to the sidebar footer, next to Settings. A single click immediately restarts the dsh web process — the page disconnects for ~15–20 seconds, then you refresh and everything is back (sessions are persisted on disk and recover automatically). The button is persistent: it survives the restart it triggers.
Windows-specific: the restart launches
dsh webthrough an independent hidden PowerShell process, so the script keeps running after the harness process is killed.
Features
- Single-click restart — no confirmation step, no double-click dance.
- Persistent: survives the DSH restart it triggers (installed as a bundle-layer plugin, not a dynamic session plugin).
- Small footprint: sits beside the Settings trigger in the sidebar footer; icon-only in the 56px rail, icon + label in the wide sidebar.
- In-flight feedback: the button turns red and shows "重启中…" → "已触发" while the request is being processed.
- Re-entry guard: a second click while a restart is already in flight is rejected.
- Online status dot: the button also shows DSH liveness — a green dot polls
GET /dsh-healthevery 5s (red when the harness is unreachable/restarting).
Install
From GitHub (this repo)
dsh plugin --profile web add github:YOUR_OWNER/dsh-web-restart
Then restart dsh web once so the bundle layer loads.
Manual (edit profile files)
- Add the dependency:
// ~/.dsh/profiles/web/package.json
{
"dependencies": {
"dsh-web-restart": "github:YOUR_OWNER/dsh-web-restart"
}
}
- Add the plugin row (this repo ships its own
cordis.patch.yml— either merge its row into your profile'scordis.patch.yml, or install via thedsh plugincommand above which does it for you):
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: dsh-web-restart
name: dsh-web-restart
pnpm installin the profile directory, then restartdsh web.
How it works
| Layer | File | What it does |
|---|---|---|
| Host | lib/index.js |
Registers an exact POST /restart-dsh route on the webServer; launches the restart script as an independent hidden PowerShell under danger-full-access sandbox policy |
| Client | lib/client.js |
Registers the sidebar footer button (slot sidebar.footer.action); single click fetches POST /restart-dsh; polls GET /dsh-health every 5s for the status dot |
| Bundle | cordis.patch.yml |
The loader row that mounts both halves |
The host routes return before the restart happens (~1s host timer + 3s inner sleep), giving the browser time to render the "restarting" state before the page drops.
Why not ctx.timeout in the route handler
ctx.timeout is a Cordis mixin backed by ctx.effect(), which is scoped to the Cordis fiber lifecycle. A webServer route handler runs as a plain Node HTTP callback — outside any fiber — so ctx.effect-registered timers are silently dropped and the restart never fires. This plugin uses Node's native setTimeout in the handler instead.
Compatibility
- DeepSeek Harness
0.1.0-rc.6(web profile). - The restart script path (
D:\1\dsh-web-host.ps1) is hard-coded for this author's machine — fork and adjust it (or replace the command inlib/index.js) for your own environment. Contributions to make this configurable are welcome.
Development
The client bundle is hand-written in the exact wire format (window.__ModuleLoader__.load({ id, factory })), so no build step is required:
node --check lib/index.js
node --check lib/client.js
License
MIT
ruvnet/ruflo
amruthpillai/reactive-resume
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora