Tools & Capabilities
deepseek-harness-desktop-macos
bitnxm/deepseek-harness-desktop-macos · ★ 2
DeepSeek Harness macOS desktop app
安装
dsh plugin --profile web add github:bitnxm/deepseek-harness-desktop-macosGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
English | 中文
The Electron shell starts the standard dsh web --port 0 surface, waits for its loopback readiness URL, and loads it in a native inset-titlebar BrowserWindow. The main process owns the DSH child and waits for graceful shutdown before Electron exits. No alternate UI theme or presentation plugin is bundled.
Prerequisites
This source package builds independently. Install its development dependencies, then prepare .desktop-runtime/npm-runtime; the preparation step downloads pinned DeepSeek Harness and pnpm versions.
npm install
npm run prepare:runtime
npm run check
Development
Run npm run dev to launch the desktop app. Set DSH_DESKTOP_DSH to use an explicit dsh executable; otherwise development uses the prepared pinned runtime.
macOS build
The builder copies .desktop-runtime/npm-runtime to the app resources as harness-runtime and produces ad-hoc signed arm64 artifacts. The DMG uses build/background.png in an 800 × 500 point window, with the DeepSeek app icon at (220, 260) and an Applications link at (580, 260).
npm run build:mac
npm run build:dmg
The .app directory is written to dist/mac-arm64/DeepSeek Harness.app.
The DMG is written to dist/DeepSeek Harness-0.1.0-rc.5-arm64.dmg.
Runtime and data
The child receives Electron's app.getPath('userData') as DSH_HOME, so profiles, node_modules, and dsh plugin management use the normal Harness home layout. The packaged runtime prepends harness-runtime/node_modules/.bin to PATH so profile plugin operations can find pnpm.
Limitations
The builder target is macOS arm64 and the output is ad-hoc signed but not notarized. The runtime preparation command must complete before packaging; a missing runtime fails startup with an actionable error.