Tools & Capabilities

dsh-desktop

functy23/dsh-desktop · ★ 2

functy23

Native Tauri v2 desktop shell for the DeepSeek Harness web GUI · 基于 Tauri v2 的 D

An English summary is not available; the Chinese summary is shown.

Archived repository

License
MIT
Added
2026-08-23
Maintenance
archived
Install kind
github

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:functy23/dsh-desktop

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. DSH Desktop
  2. Behavior
  3. Requirements
  4. Run (dev)
  5. Sync with upstream
  6. Backend packaging
  7. License

English 中文

DSH Desktop

Built entirely by DeepSeek V4Pro

A Tauri v2 desktop shell for DeepSeek Harness. It opens a native window running the full dsh web GUI — no product UI is forked or reimplemented.

Platform support: macOS (verified) · Linux (theoretical support — not yet fully tested)

Note: the author has no x86_64 machine — x86_64 builds must be produced by building the app yourself (see Run (dev)).

Behavior

  1. Spawns a crash-safe supervisor that runs the dsh web backend on a free loopback port.
  2. Waits until the backend accepts connections, then opens one native (decorated) WebView at http://127.0.0.1:<port>/.
  3. On exit, terminates the whole backend process tree (graceful SIGTERM → SIGKILL).
  4. If the app crashes or is force-killed, the supervisor's watchdog reaps the backend automatically.
  5. Pins DSH_HOME to ~/.dsh (scrubbing ambient DSH_* vars), sharing sessions/settings/credentials with CLI dsh.
  6. Opens a single 1200×800 window titled DSH Desktop using the native title bar (a decorated window).

Requirements

  • Rust (stable): curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Node ^22.19 || >=24 and pnpm
  • macOS: Xcode command-line tools
  • Linux (theoretical): Tauri's system prerequisites (webkit2gtk-4.1, libayatana-appindicator, etc.)

Run (dev)

The default backend command runs the repository-local dsh from source at /Users/functy/Desktop/deepseek-harness, which needs its web frontend built:

# in deepseek-harness
pnpm --filter @deepseek-ai/dsh-web-frontend build
# in dsh-desktop
cargo tauri dev

Override the backend command with DSH_WEB_CMD (space-separated; the literal {port} is substituted):

DSH_WEB_CMD="dsh web --host 127.0.0.1 --port {port}" cargo tauri dev

Sync with upstream

This project consumes @deepseek-ai/dsh as a dependency and never edits harness source. Syncing upstream = bump the harness version + rebuild the bundled backend.

Backend packaging

scripts/prepare-backend.mjs stages a self-contained backend under backend/:

  • backend/bin/node — a per-platform Node runtime (downloaded if absent).
  • backend/bin/supervisor — the crash-safe watchdog.
  • backend/node_modules — the @deepseek-ai/dsh production closure, pruned of the bundler and foreign-platform prebuilds.

tauri.conf.json bundles ../backend via bundle.resources, and the app spawns <resource>/backend/bin/node <resource>/backend/node_modules/@deepseek-ai/dsh/lib/bin.js web. Because node_modules is a real directory, the harness's healProfilesModuleFallback resolves plugin packages normally (verified end to end).

The earlier @yao-pkg/pkg --sea single-file attempt (build-sidecar.mjs) cannot boot the web profile: pkg keeps node_modules in a virtual snapshot, so profile-based plugin resolution fails with ERR_MODULE_NOT_FOUND. (SIDECAR_DEBUG=1 keeps a deep-print diagnostic entry for reproducing it.)

License

MIT