dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在「设置」上方添加「重启 dsh」按钮,原地重启:以 systemd 单元运行时由 systemd 重启,否则通过 process.execve 保持同一 PID(Windows 或 Node < 22.15 时保留一个轻量父进程),启动 dsh 的守护进程或终端无需额外配置(已在 Linux 实测,Docker、macOS、Windows 尚未实机测试);新 boot id 响应后页面自动刷新。
A DeepSeek Harness (dsh) web GUI plugin that adds one small Restart dsh button above Settings. It is for the moments you need a restart: you installed a plugin, changed a config, or fixed a bug in your own plugin.
Agents can do it too. A dsh_restart tool lets an agent restart dsh after installing or editing a plugin. With a continue_prompt, it is woken in the same session once dsh is back and carries on.
**It works with *your* setup.** systemd, Docker, Kubernetes, pm2, a tmux pane, a plain terminal or Windows: click, and dsh is back in a few seconds. The page reloads by itself.
npx @deepseek-ai/dsh plugin --profile web add dsh-restart-anywhereMost restart buttons kill dsh and hope something starts it again. That only works for the setup their author had. A detached "relaunch me" helper gets killed along with a systemd service. A clean exit doesn't trigger Restart=on-failure. A container without a restart policy just stops. And under pm2 or runit, the helper and the supervisor both start dsh and fight over the port.
dsh-restart-anywhere doesn't hand dsh's life to anyone else. It restarts dsh in place:
Your setup · What happens · Leaves behind systemd (user or system unit, any Restart= policy) · Asks systemd to restart the unit, so you get a fresh process, exactly like systemctl restart. If that's not permitted (a system unit, no root), it falls back to in-place. · nothing Docker / Podman / Kubernetes (with or without a restart policy) · In place: same PID, so the container never notices. · nothing pm2, supervisord, launchd, runit, s6, nssm, forever, … · In place: the supervisor keeps seeing the process it started, still running. · nothing Terminal, tmux, screen, nohup · In place: same PID, and the new dsh keeps printing to the same terminal. Ctrl-C still stops it. · nothing Windows / Node < 22.15 · Wrapper: the old process stays as a thin parent of the new dsh. It forwards Ctrl-C and exits with dsh's exit code. · the parent process dsh desktop app · Button hidden: the app manages its own lifecycle. · n/a
No supervisor detection, no config, no root, no helper scripts.
ctx.appExit). Every plugin tears down exactly as on a normal quit, and sessions are flushed.process.execve() swaps the process image for a fresh dsh with the same command line, environment and stdio. The PID doesn't change, and nothing is left behind.Details that make it hold up:
--no-open is added on relaunch.409.Into your dsh web profile (web below is the profile name; use whichever profile backs your web GUI). From a source checkout, use pnpm dsh instead of npx @deepseek-ai/dsh:
npx @deepseek-ai/dsh plugin --profile web add dsh-restart-anywhereThis installs the package into the profile and adds it to dsh.profile.bundles. Reload the browser tab, and Restart dsh shows up above Settings. If it doesn't, restart dsh one last time the old way. From then on, the button does it.
Requires dsh 0.2.0 or newer and Node 20+. There's no build step and no runtime npm dependencies.
Click Restart dsh and confirm. The icon spins while dsh restarts, and the page reloads when the new dsh is up, usually within about 5 seconds.
Running agent sessions are interrupted by a restart, like with any restart. The confirmation dialog says so.
dsh_restart toolAgents get the same restart as a tool, e.g. after installing or editing a plugin they want to test.
/api connection layer (ctx.connection.fetch). It only answers browsers that are logged in to your dsh, and dsh's Host/Origin fence applies.401 and can't restart anything.systemd-run, and only when dsh is a systemd service.Verified live with dsh 0.2.0 on Linux:
Restart=no and Restart=on-failure.systemd-run is unavailable.execve, three restarts in a row, then Ctrl-C and SIGTERM.execve, three restarts in a row, then Ctrl-C.continue_prompt, under systemd and in place via execve. Both times it was woken in the same session within seconds and finished the task. The session still reloads cleanly afterwards.macOS uses the same execve path as Linux, and Windows the same wrapper path as old Node. Neither has been run on real hardware yet, so reports are very welcome.
npm test runs the setup detection and command-line checks, plus the agent tool and wake-up logic against a fake dsh.
MIT
中文简介 · DeepSeek Harness (dsh) Web 界面插件:侧边栏「设置」上方的一个小小的「重启 dsh」按钮,适用于你的部署方式 —— systemd、Docker / Podman、Kubernetes、pm2、supervisord、launchd、终端 / tmux / nohup、Windows。原地重启(进程 PID 不变),无需检测或配置守护进程,重启完成后页面自动刷新。Agent 也能用:dsh_restart工具重启 dsh,并可在 dsh 恢复后用continue_prompt唤醒同一会话继续工作。零运行时依赖,无需配置。安装:npx @deepseek-ai/dsh plugin --profile web add dsh-restart-anywhere