DeepSHPlugins
dsh-webui-launcher 项目预览
GITHUB / COMMUNITY PROJECT

dsh-webui-launcher

工具与集成TypeScriptMIT

跨平台 Web UI 启动器:提供 webui_start/stop/status/open 模型工具、/webui start|stop|status|open 斜杠命令、设置页启动卡片,以及可选的桌面快捷方式——隐藏控制台启动 Web UI,完全就绪后自动打开浏览器,默认使用 dsh 官方图标。

3 StarsYV3507 更新时间 2026-08-20
访问 GitHub 仓库
dsh-webui-launcher 项目预览

项目介绍

中文

跨平台 Web UI 启动器:提供 webui_start/stop/status/open 模型工具、/webui start|stop|status|open 斜杠命令、设置页启动卡片,以及可选的桌面快捷方式——隐藏控制台启动 Web UI,完全就绪后自动打开浏览器,默认使用 dsh 官方图标。

English

Cross-platform Web UI launcher for DeepSeek Harness: webui_start/stop/status/open model tools, a /webui start|stop|status|open slash command, a Settings-page launch card, and an optional desktop shortcut that starts the Web UI hidden and opens the browser once it is fully ready (dsh default icon).

项目信息与收录信号

快照 2026-09-11
作者 / 组织
YV3507
仓库
YV3507/dsh-webui-launcher
GitHub Stars
3
Forks
0
开发语言
TypeScript
许可证
MIT
最近推送
2026-08-20
Manifest
数据中检测到声明

公开仓库不自动等于可商用;许可证与当前兼容性以原项目文档为准。Manifest 和数据评分不构成安装安全认证。

数据评分

58/ 100
维护活跃
85
文档与实用信息
85
生态关注度
17
安装便捷信号
100
项目声明信号
100

近 22 天仍在更新;README 含完整安装与使用说明;关注度尚低(3)。

评分来自已有数据快照的五维模型,仅作浏览参考,不是实际使用评测或安全检测结论。

安装与使用

所有项目资料与许可均以对应 GitHub 仓库为准。

dsh plugin --profile web add "https://github.com/YV3507/dsh-webui-launcher/releases/download/v0.1.11/dsh-webui-launcher-0.1.11.tgz"

复制命令不会自动执行。请先阅读仓库文档,确认环境要求与许可证。

项目截图

仓库 README

GitHub 原文

已保存的仓库文档快照;文档抓取时间未记录,可能与上方目录介绍处于不同版本。安装前请核对当前仓库说明。

dsh-webui-launcher — cross-platform Web UI launcher for DeepSeek Harness

Awesome DSH Plugin

English | 中文

Start, stop, check and open the DeepSeek Harness Web UI from inside the harness — cross-platform (Windows / macOS / Linux), no desktop scripts needed.

Install

dsh plugin --profile web add github:YV3507/dsh-webui-launcher

or from a checkout:

cd dsh-webui-launcher
npm install && npm run build
dsh plugin --profile web add .

What it adds

  • Model tools — webui_start, webui_stop, webui_status, webui_open: start the Web UI (spawning dsh --profile web in the background), wait until it answers HTTP 200, report or stop it, open the default browser.
  • Slash command — /webui start|stop|status|open.
  • Settings card — a "Web UI Launcher" card on the Settings page of the web GUI (browser half, exports["./client"]), driving the same /webui/* JSON endpoints.
  • Desktop shortcut — on the first plugin start, a launcher shortcut is created on the desktop (.lnk on Windows, .desktop on Linux, .command on macOS) that starts the Web UI and opens the browser once ready. Headless hosts (no Desktop, no DISPLAY) skip creation silently; disable with desktopShortcut: false.
  • dsh default icon — the shortcut uses the official dsh icon by default (the web-app favicon rasterized and bundled in assets/; .ico on Windows, .png on Linux), copied into the persistent state directory so a reinstall never orphans it.
  • Custom shortcut icon — upload any image (PNG/JPEG/BMP/GIF/TIFF) from the Settings card; it is converted automatically (multi-size .ico on Windows, .png on Linux) and the existing shortcut's icon is updated immediately. An explicit shortcutIconPath overrides the default.

Configuration

OptionDefaultMeaning
port3080Web UI port.
host127.0.0.1Loopback host dsh web binds.
cliBin""Explicit dsh CLI script; empty reuses the running CLI.
startupTimeoutMs120000How long start waits for the surface to answer HTTP 200.
openBrowserOnStarttrueOpen the default browser once the Web UI is ready.
desktopShortcuttrueCreate the desktop launcher shortcut on the first plugin start.
shortcutName"DeepSeek Harness Web UI"Display name of the desktop shortcut.
shortcutIconPath""Explicit icon image; empty uses the bundled dsh icon.

Behavior and robustness

  • Adopt-or-start — a server already listening on the port is adopted: never restarted, never stopped. webui_stop kills the tree this plugin spawned, and also an adopted server whose PID the launcher (or an earlier instance) recorded — only when that PID is the one currently listening, and only for the process hosting this plugin, with the same node.exe identity guard before killing. A foreign server without a PID record is never touched.
  • Explicit state machine — idle → starting → running → stopping, single-flight serialized: concurrent start/stop calls never interleave.
  • Orphan cleanup — when the plugin unloads or hot-reloads, any server it spawned is stopped (ctx.effect dispose).
  • PID identity guard — before killing, the process is re-checked (alive, still our child, still node.exe via tasklist on Windows) so a recycled PID is never touched.
  • Abort/timeout hygiene — an aborted or timed-out start kills the child it spawned and surfaces the output tail in the error.
  • CLI location fallback — the running CLI (process.argv[1]) → the @deepseek-ai/dsh package → explicit cliBin; resolution failure throws an actionable error.

Development

npm run build    # esbuild → lib/index.js (host) + lib/client.js (browser)
npm test         # node --test, zero-dependency (mocks the two external packages)

The state-machine failure paths (child death, timeout, abort, sibling adoption, concurrency, dispose) are unit-tested against the built bundle with scripted fake dependencies — no real processes or timers.

Security

Loopback-only by default, no elevation, no external network. The plugin kills only the process tree it spawned — or a PID-recorded launcher server it hosts — after verifying the PID still belongs to that process.

License

MIT

使用前核对

安装步骤、兼容版本与授权范围以原项目当前文档为准。Stars 和评分是快照中的导航信号。

安装与排错 · 项目问题反馈

同类项目