Back to home

xiaokang6

dsh-admin

DeepSeek Harness Web GUI admin plugin: manual restart + auto version check (header button + settings page)

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-admin

A DeepSeek Harness Web GUI admin plugin: manual restart + automatic version check for the Harness itself. The UI is embedded directly into the Web GUI (header button + settings page), following the same pattern as dsh-usage-stats.

Features

  • Manual restart — a button in the session header (top-right, beside session log): one click schedules a clean restart of the dsh web service (double-confirm, then systemd-run + dsh-plugin-op restart — the local convention script that stops systemd, clears orphan instances on :3080, starts clean, and health-verifies).
  • Auto version check — compares the installed @deepseek-ai/dsh against the npm latest tag (semver-aware: stable > rc). Checked on load, then every 6 hours on the host; the panel shows current/latest/last-checked and a status dot (green = up to date, yellow = update available, red = check failed).
  • Embedded UI — no standalone page:
    • Top-right header button 🟢 0.1.0-rc.6 (session header utilities slot, beside session log — never overlaps anything) → click to open a floating panel: version status, check-now button, service info, restart button.
    • Settings → DSH Admin full page (same content, larger layout).

Routes (host half)

RouteDescription
GET /plugin/dshadmin/statusJSON: current/latest version, isNewer, service info (pid, systemd, restart command)
GET /plugin/dshadmin/health{ok:true}
POST /plugin/dshadmin/checkForce re-check npm latest
POST /plugin/dshadmin/restartSchedule restart (body must be {"confirm":true})

Restart priority: ① systemd-run + dsh-plugin-op restart (isolated cgroup — dsh.service is KillMode=control-group, a direct spawn would be killed by its own systemctl stop dsh; the transient unit runs the whole script: stop → clear :3080 orphans → clean start → health check) → ② plain dsh-plugin-op restart → ③ systemctl --no-block restart dsh → ④ socket-pid kill + relaunch.

Install

The package is a profile bundle (its manifest declares dsh.bundle.patch).

# Option A — install via the plugin manager
dsh plugin --profile web add xiaokang6/dsh-admin

# Option B — manual copy (never run npm install in the profile dir)
git clone https://github.com/xiaokang6/dsh-admin /tmp/dsh-admin
cp -r /tmp/dsh-admin ~/.dsh/profiles/web/node_modules/dsh-admin

Then make sure ~/.dsh/profiles/web/cordis.patch.yml contains:

- insert:
    - id: dsh-admin
      name: 'dsh-admin'

Restart dsh web (or use your local restart command) and hard-refresh the browser. Host changes require a service restart; client changes are picked up by client-modules HMR on page refresh.

Requirements

  • DeepSeek Harness (@deepseek-ai/dsh) installed via npm (global install; the restart chain uses dsh-plugin-op when present)
  • Linux + systemd (restart path; the check/UI parts work anywhere)

License

MIT