编者按

MDR-EX1000/dsh-desktop-kit

把 DSH Web UI 装进原生 macOS 桌面窗口:插件 + 轻量 Tauri/WKWebView 外壳跑在同一个 loopback 地址上——真 macOS 全屏、单实例、外链交给系统浏览器、类浏览器页面缩放。

这是一个 DeepSeek Harness(DSH)插件。本站汇总其 GitHub README、安装信息、维护状态与公开安全信号。

上游未提供中文 README,当前展示仓库原始内容。

dsh-desktop-kit

Self-owned desktop shell for DeepSeek Harness (DSH): a small plugin plus a native Tauri window over the harness web surface.

dsh web starts → the plugin spawns the shell on the served loopback URL → you get DSH in a real desktop window, with the browser tab still available as a second client. No fork, no repackaged runtime, no second profile — everything stays a plugin over your existing harness.

Why not the third-party shell?

dsh-desktop is great and was the blueprint. We rebuilt a smaller one for one concrete reason: real macOS fullscreen. Its window is frameless with a web-drawn title bar and never wires up setFullscreen — the maximize button is zoom, not a native fullscreen Space. This shell uses a plain decorated window, so the green traffic-light button and Ctrl+Cmd+F give you true macOS fullscreen out of the box.

Features (v0.1)

  • Native window on the loopback web surface — same origin the browser uses, so the whole SPA and every plugin work unchanged (verified with dsh-rw).
  • Real macOS fullscreen — decorated window, native fullscreen Space, no custom title bar needed.
  • Single instance — a second launch focuses the existing window instead of opening another.
  • Lifecycle contract — closing the window exits the shell with code 0, and the plugin shuts the harness down; plugin teardown kills the shell. No orphaned processes on either side.
  • Graceful degradation — no shell binary found? The harness keeps serving the web UI in the browser, with an actionable log line.
  • Small — system WebKit (WKWebView), no bundled Chromium; the shell binary is a few MB.
  • External links that worktarget="_blank" / cross-origin links are delegated to the system browser via the shell's kit_open_external command (a bare WKWebView renders them dead otherwise).
  • Browser-style zoom — Cmd/Ctrl + = / - / 0 zooms the page (persisted), something a bare WKWebView does not offer.

Deliberately not in v0.1: tray, OS notifications, file panel, in-app updater, control channel. The architecture (control pipe over stdin/stdout, dshdctl: protocol) is documented in the blueprint and can grow later.

Architecture

dsh web  (your existing web profile)
  └─ dsh-desktop-kit (this plugin, inject: [webServer])
       └─ spawns dsh-desktop-kit <url> <title>   (the Tauri shell)
            └─ native WKWebView window on http://127.0.0.1:<port>
                 window closed → exit 0 → plugin shuts the harness down

The plugin resolves the shell binary in order: config.bin / DSH_DESKTOP_KIT_BIN$DSH_HOME/bin/dsh-desktop-kitPATH~/.local/bin/dsh-desktop-kit.

Install

Requires the dsh CLI and macOS (other platforms are untested but should work).

# 1. the plugin
dsh plugin --profile web add dsh-desktop-kit          # npm (once published)
# or from a checkout / GitHub release tarball:
dsh plugin --profile web add /path/to/dsh-desktop-kit

# 2. the shell binary (prebuilt on the Releases page, or build it yourself)
mkdir -p ~/.dsh/bin
cp dsh-desktop-kit ~/.dsh/bin/        # from the release download
# or: cd shell && cargo build --release && cp target/release/dsh-desktop-kit ~/.dsh/bin/

# 3. restart dsh web — the native window opens with it

To uninstall: dsh plugin --profile web remove dsh-desktop-kit and delete ~/.dsh/bin/dsh-desktop-kit.

Clickable app icon (macOS)

app/install.sh   # builds ~/Applications/DSH.app (idempotent, macOS built-ins only)

The bundle is a thin launcher, not a second harness: if 127.0.0.1:3080 already answers (e.g. a terminal-started dsh web), the icon just opens a window on that instance; otherwise it boots dsh web itself. Starting a second dsh web would die on EADDRINUSE — earlier hand-rolled wrappers did exactly that when an instance was already up, which is why the launcher lives in this repo now.

Development

# plugin half (TypeScript)
pnpm install
pnpm build        # tsc → lib/
pnpm test         # vitest — spawn/exit/resolution logic, all fakes
pnpm typecheck

# shell half (Rust / Tauri v2)
cd shell
cargo build --release   # binary at target/release/dsh-desktop-kit

Install the built plugin into your harness for a live run:

dsh plugin --profile web remove dsh-desktop-kit 2>/dev/null
dsh plugin --profile web add /path/to/dsh-desktop-kit
cp shell/target/release/dsh-desktop-kit ~/.dsh/bin/
# restart dsh web

Configuration

Plugin config keys (defaults shown):

KeyDefaultMeaning
bin''Explicit shell binary path; empty resolves $DSH_HOME/binPATH~/.local/bin. Also settable via DSH_DESKTOP_KIT_BIN.
title'DeepSeek Harness'Window title (argv[2] to the shell).

Shell argv: dsh-desktop-kit [url] [title] — defaults http://127.0.0.1:3080 and DeepSeek Harness. --selftest runs a scriptable native-fullscreen enter/exit check (exit 0 on pass); DSH_KIT_NO_SINGLE_INSTANCE=1 runs a side-by-side instance (selftest, dev).

Known limitations

  • macOS is the only tested platform (WKWebView). Linux/Windows builds are unverified.
  • Plugin reload while the harness stays up is not handled — restart dsh web after reinstalling.
  • No close-to-tray: closing the window shuts the harness down (by design, matching the referenced behavior).

License

MIT

REPOSITORY SIGNALS

安全与安装证据

该分数只基于公开仓库元数据与本站登记的安装证据,不等同于代码安全审计。

来源可追溯

来自公开插件目录,并链接到公开 GitHub 仓库。

许可证

GitHub 元数据中未检测到许可证。

维护活跃度

最近 180 天内有代码更新。

安装证据

尚未登记可复验的精确安装元数据,请按仓库说明手动检查。

安装生命周期脚本

已检查的包元数据未声明安装生命周期脚本。

需要留意missing-license