一键安装即可在桌面使用 DeepSeek Harness 智能体,支持 Windows、macOS 和 Linux。项目将 DSH 封装为 Electron 桌面应用,提供窗口、托盘、终端和自动更新,采用'一切皆插件'架构,桌面壳本身也是 DSH 插件。
Access rate limit exceeded. Please log in to continue.
Nonead DSH Desktop
An open-source desktop client for Windows, macOS and Linux, built on DeepSeek Harness.
Product 2.2.8 · DSH runtime 0.2.2-rc.1 · Electron 44 · MIT License
One-click download, ready to use out of the box.
Everything is a plugin — including the desktop itself.
An independent community open-source project. It is not affiliated with, partnered with, licensed by, or endorsed by DeepSeek.
No DeepSeek employees or DeepSeek Harness upstream team members currently take part in this repository; upstream contributors shown on GitHub Contributors come from forked and synchronized commit history.
中文 · English · 日本語 · Español · Français · Deutsch · Русский · Português
Table of contents
| Section | Content |
|---|---|
| What this is | Product positioning and process model |
| Versions and runtime | Versions, upstream pin, dependency baseline |
| Download and install | Installation on three platforms |
| Capabilities | Desktop shell, profiles, market, updates |
| Security boundaries | Renderer credential, LAN, update verification |
| Documentation | User and developer entry points |
| Repository layout | Directories and the four workspaces |
| Building from source | Environment, commands, gates |
| Release and updates | Channel protocol and release flow |
| Plugin ecosystem | Why everything is a plugin |
| Relationship to upstream | Boundaries and division of work |
| Changelog | Version history |
| Known limitations | Behaviour worth knowing in advance |
| Community | Discussion channels |
| Links | Ecosystem projects |
| License | Licence and notices |
What this is
Nonead DSH Desktop brings the local Web UI, Host service and plugin system of DeepSeek Harness into a native desktop application. The upstream source runs unmodified and is pinned to a specific release; the desktop shell owns windows, tray, terminal, auto-update, multiple working profiles and packaging, and is itself mounted as a DSH plugin through the same composition mechanism third-party plugins use.
The product is not a reimplementation of the client — it is a thin Electron host plus a complete DSH runtime:
| Layer | Location | Responsibility |
|---|---|---|
2.2.8 |
2026-11-04 | Runtime upgraded to DSH 0.2.2-rc.1 (upstream 66491b05) with the vendored runtime repacked (373 packages); bundled market dshmarket raised to 1.73.10; all 24 desktop customisation patches renamed and re-applied |
2.2.7 |
2026-11-03 | Runtime upgraded to DSH 0.2.2-alpha.3 (upstream 05b1cae8), bundled market dshmarket raised to 1.73.9, and all 24 desktop customization patches regenerated against the new build output |
2.2.6 |
2026-11-02 | Stability and gate maintenance: lifecycle evidence no longer stops after a day of uptime, the launcher no longer exits silently from an npm/pnpm global bin, private files and the data-operation lock bind to the validated inode, factory reset cannot leave the installation without a data directory, the LAN dialog gains focus management, and the market page limit matches its published schema; new gates cover release pins, eight-language version parity and third-party notices |
| Desktop shell | Electron main process | Single-instance lock, windows and materials, tray and menus, permissions, terminal, updates, data directory, profile state |
| Host | Node-mode child process | Loads the profile patch layer, starts the upstream profile boot, serves the Web carrier, hosts third-party Host plugins |
| Web carrier | Loopback HTTP + WebSocket | Serves the official Web UI (ephemeral port by default) |
| Renderer | Sandboxed BrowserWindow | Loads the official Web UI and is identified by a native credential header |
Shell and Host communicate over exactly one child-process IPC channel. Switching a profile or mode disposes the whole Host generation and spawns a new child process; no state is cached across a generation. The renderer never receives Electron APIs — it receives the official Web UI plus an access credential generated by the shell.
Versions and runtime
| Item | Value |
|---|---|
| Product version | 2.2.8 (nonead-dsh-desktop and dsh-plugin-desktop-beta in lockstep) |
| Stable-channel workspace | nonead-dsh-desktop (root scripts use the :stable suffix) |
| Beta-channel workspace | dsh-plugin-desktop-beta (root scripts use the :beta suffix) |
| DSH runtime | 0.2.2-alpha.2, every @deepseek-ai/dsh* dependency pinned exactly, runtime vendored |
| Vendored runtime | vendor/dsh-runtime/0.2.2-rc.1/ (several historical version directories are kept) |
| Upstream pin | f3803c96974ad4a94195fb97e5c637e9c2a3afe3fc48fa190a683e469daa699857e9afe8 (channels.beta in upstream.json, mirrored in nonead-dsh-desktop/upstream-reference.json) |
| Electron / packager | Electron 44.0.0 / electron-builder 26.15.7 (patched app-builder-lib) |
| Node / Yarn | Node ^22.19.0 or >=24.0.0; Yarn 4.18.0 via Corepack (nodeLinker: node-modules) |
| Plugin market | dshmarket 1.70.1, plus this repository's dsh-community-market 0.1.0-dev.0 |
| Remote-control bridge | @agents-anywhere/dsh-bridge-next 2.1.0-desktop (upstream commit 39b82d4) |
| Brand skin | dsh-nonead-client-skin (shipped in the installer, mounted per profile) |
upstream.json records two vendored runtime lines: stable maps to upstream 0.2.0-rc.2 and beta to upstream 0.2.2-alpha.2. What actually ships inside an installer is the line a workspace pins exactly — currently both desktop workspaces pin 0.2.2-alpha.2. Channel names describe runtime lines, not the release channel a workspace queries.
Download and install
Official installers cover Windows x64, macOS (Universal, Intel and Apple Silicon) and Linux x64 (AppImage). No extra environment is required. The Linux x64 AppImage and deb are built by the Beta channel; the stable channel only produces a runnable directory on Linux, not an installer.
| Platform | Download | Installation |
|---|---|---|
| Windows x64 | Download installer | Run the NSIS installer and follow the prompts |
| macOS Universal | Download DMG | Open the DMG and drag Nonead DSH Desktop into Applications |
| Linux x64 | Download AppImage | Make it executable and run: chmod +x Nonead-DSH-Desktop-*.AppImage && ./Nonead-DSH-Desktop-*.AppImage |
Linux notes: some distributions need FUSE installed, or you can run with --appimage-extract-and-run. In-app update on Linux only checks the version and never downloads an installer; upgrade by downloading a fresh AppImage. Use the Beta channel when you need a Linux installer — the stable channel only produces a runnable directory on Linux.
Windows ARM64 is available as an experimental build only and is not served by the download links or in-app updates above: the shell is native arm64, but the bundled Python / Node / Office runtime is still the x64 payload (executed through Windows emulation), and the artifact has not been run on ARM hardware yet. Build it yourself with the command under Common commands.
Step-by-step usage, profiles and plugin commands are in the user guide; platform and scope questions are answered in the FAQ.
Capabilities
| Capability | Description |
|---|---|
| Native desktop shell | Single-instance lock, native windows and menus, system tray, Dock icon; window materials are capability-gated (macOS accepts off/transparent and defaults to transparent, Linux accepts both but always resolves to off, Windows only off) |
| Local Host management | The shell spawns the Host child process and owns its lifecycle: graceful shutdown first, SIGTERM after 10 s, SIGKILL after 5 more; installer updates require a graceful shutdown and are refused otherwise |
| Official Web UI | Binds 127.0.0.1 only, ephemeral port by default; the shell generates a 32-byte random credential per Host generation and delivers it via x-dsh-desktop-renderer |
| Profiles and first-run setup | Profile directories live at $DSH_HOME/profiles/<name>; an uninitialised profile first shows the Desktop Setup Wizard (window mode and material, plugin market, notifications, default-browser launch, web access scope) before Host starts |
| Browser and LAN access | "Open in browser" only controls whether the system browser is launched and does not change exposure; LAN access is a separate opt-in that also shows the current LAN URL |
| Built-in plugin market | DSH Community Market provides discovery / installable / installed / sources views with extensible catalog sources and reviewed adapters |
| Brand skin | dsh-nonead-client-skin ships with the installer and is mounted by the Profile for every profile, with no separate installation |
| Auto-update | Fixed version check against https://www.nonead.com/software/ndsh-desktop/version with current version, channel and a random installation id; Windows and macOS download and install, Linux only checks |
| Update experience | The update card shows release notes supplied by the version response, and the Beta channel's tray menu and native dialogs add a "view full release notes" entry; "skip this version" persists so an unattended scheduled check does not offer it again; a failed install can be retried and rolled back to any saved snapshot |
| Window and session state | Remembers window position and size; a saved position is restored only while it still overlaps a mounted display, so unplugging a monitor cannot restore the window offscreen |
| Deep links and login item | dsh-desktop:// links are supported, for example dsh-desktop://settings/general opens settings directly; the launch-at-login switch reads the effective OS state |
| Environment file | Strict layered .env support fills in missing variables for the Host child process and never overrides the existing environment |
| Market improvements | The plugin market previews non-image media and can install a plugin by name |
| Terminal and working directory | The shell exposes terminal and working-directory capabilities as Desktop services for plugins |
| Experimental capabilities | Onboarding enables the plugin market and Computer Use by default; speech, translation, Agent Team and Ralph ship with the runtime |
Security boundaries
| Boundary | Actual behaviour |
|---|---|
| Renderer identity | Only requests carrying the current generation credential (x-dsh-desktop-renderer) count as the Electron renderer; with browser access disabled every other request gets 403 and existing browser WebSockets are dropped |
| Renderer credential transport | The credential lives only in main-process and Host memory; the Host receives one line over its private stdin at startup and the pipe closes immediately, so it never enters the child environment, argv or a file (the old implementation used an environment variable, which same-user processes could read from process environment or a crash dump to impersonate the renderer) |
| Web access gate | When the Host has no credential it fails closed for browser-class requests and logs one warning instead of permitting them; the /connect login exchange and read-only requests are exempted in code, and Market routes need a connection credential even for reads |
| LAN access | No authentication: anyone on the same network who can reach the port can open DSH and operate this machine. Enable it only on fully trusted networks |
| Installer verification | The download path supports a server-published installerSha256 and enforces it as a hard gate, but the version endpoint does not publish that field yet; until it does, Windows verifies only ProductName and ProductVersion from the PE version resource, while macOS verifies bundle identity, embedded manifest, code signature and Team Identifier; that identity check exists only in the Stable shell, whereas the Beta shell's download path checks just the installer magic bytes and size before executing it |
| Plugin misconfiguration | A patch id that matches nothing logs entry not found and is skipped; a mismatched name logs name mismatch ... skipping; but a wrong inject service name does not error — the plugin stays pending forever and the UI merely shows unexplained HTTP 4xx |
Documentation
Ordinary users can start with the user guide; developer documentation matters only when extending or maintaining. The full index is in the documentation index.
User documentation
| Goal | Entry point |
|---|---|
| Install, profiles, modes, terminal, plugin commands and updates | User guide |
| Direct answers on platforms, bundled environment, data, plugins and updates | FAQ |
| Understand why the project exists | Why Nonead DSH Desktop |
| Read version history | Changelog |
Developer and maintainer documentation
| Goal | Entry point |
|---|---|
| Shell, Host child process, Web carrier and packaging | Architecture |
| Write ordinary or Desktop plugins | Plugin development |
| Read the plugin ecosystem proposal | DSH plugin ecosystem proposal |
Use desktopProfiles / desktopPnpm and other Desktop services |
Desktop plugin services |
| Join the unified plugin contract discussion | DSH Community Fabric Draft |
| Read the market's product and security design | DSH Community Market |
| Package-level build, release and known limitations | dsh-plugin-desktop-beta/README.md |
| The stable-channel shell workspace | nonead-dsh-desktop/README.md |
| The brand skin plugin | dsh-nonead-client-skin/README.md |
Repository layout
The root is a Yarn 4.18.0 workspace (nodeLinker: node-modules) with the following members and responsibilities:
| Path | Responsibility |
|---|---|
nonead-dsh-desktop/ |
Stable-channel desktop workspace: its own shell (profiles and recovery, window controls, onboarding), the Agents Anywhere bridge and Community Market adapters, Electron bootstrap and packaging |
dsh-plugin-desktop-beta/ |
Beta-channel desktop workspace: dual Host/Client faces, Electron bootstrap, packaging and release tests |
dsh-community-market/ |
Product and security design of the built-in plugin market, catalog provider contract, tests and build |
dsh-community-fabric/ |
Community interoperability RFC: Manifest/Capability, Runtime/Presentation, service composition and provenance diagnostics |
dsh-nonead-client-skin/ |
Brand skin shipped with the installer, pulled in via a file: dependency and not part of the root workspace list |
vendor/dsh-runtime/<version>/ |
Vendored DSH runtime packages and manifest.json per channel |
vendor/agents-anywhere/ |
Vendored Agents Anywhere bridge packages |
patches/ |
Yarn patches for the Electron packager, pnpm, open, fs-ext, DSH subprocess and more |
scripts/ |
Root gates and release scripts (bilingual docs, market dependency direction, vendored runtime, icons, layout, AA release) |
docs/ |
Product documentation; docs/evidence/ keeps measured release and installer records |
deepseek-harness/ |
Read-only upstream submodule, pinned to channels.beta.commit in upstream.json |
The submodule is not required for everyday development. The runtime is vendored, so corepack yarn install, build, typecheck, test, dev:* and dist:* do not need it; only the upstream:* scripts (rebuild and repack the runtime) do. corepack yarn check:layout does verify the submodule commit and worktree, so it necessarily fails in an uninitialised clone — that is expected.
Building from source
Requirements
- Node.js
^22.19.0or>=24.0.0 - Root Yarn
4.18.0through Corepack (do not install root dependencies with pnpm or npm) - Git; only needed to initialise the upstream submodule when rebuilding the runtime
git clone https://github.com/NoneadChina/Nonead-DSH-Desktop.git
cd Nonead-DSH-Desktop
corepack yarn install
corepack yarn dev:beta # Beta workspace
# corepack yarn dev:stable # stable-channel workspace (nonead-dsh-desktop)
When you actually need upstream source:
git submodule update --init --recursive
Common commands
| Command | Purpose |
|---|---|
corepack yarn dev:beta / dev:stable |
Start the development flow for that workspace (verifies the pinned dshmarket, prepares AA artifacts and builds the market first) |
corepack yarn build |
Build the market, the Beta workspace and the stable-channel workspace (also verifies the pinned dshmarket first) |
corepack yarn typecheck |
Type-check all three workspaces |
corepack yarn test |
Unit tests for all three workspaces |
corepack yarn check |
Full headless gate: layout, architecture direction, vendored runtime, bilingual docs, AA connector, per-workspace checks |
corepack yarn check:ci |
The chain CI actually runs: same as check, but the Beta workspace uses check:ci (drops the upstream-paused verify:aa) instead of rewriting the manifest inside CI |
corepack yarn check:layout |
Workspace topology, exact pins, submodule, vendored runtime, icons and layout gates |
corepack yarn check:bilingual-docs |
Verify that the Git blob hashes recorded in *.i18n.yaml match the documents |
corepack yarn check:vendored-runtime |
Verify vendor/dsh-runtime/ against upstream.json |
corepack yarn market:prepare / market:check |
market:prepare moves dshmarket to npm latest (only the two desktop workspaces' resolutions/dependencies and yarn.lock); market:check is the offline consistency check every build runs, and only --latest reaches the network |
corepack yarn aa:prepare-release / aa:check |
Build or verify Agents Anywhere release artifacts |
corepack yarn package:dir:beta |
Produce an unpacked application directory |
corepack yarn dist:win:beta / dist:mac:beta / dist:win-portable:beta |
Produce platform release artifacts |
DSH_PACKAGE_ARCH=arm64 corepack yarn dist:win:stable |
Produce an experimental Windows ARM64 installer (x64 by default; a cross-arch build skips the smokes that can only run on this host) |
Conventions:
- Root
build,dev:*anddist:*runcorepack yarn market:checkfirst: it verifies offline that the committeddshmarketversion, lockfile and compatibility patch agree, without reaching the network or rewriting manifests. Moving the pin requires a human to runcorepack yarn market:prepareand commit the version, lockfile and patch together. nonead-dsh-desktopanddsh-plugin-desktop-betaare separate workspaces: shared changes must land in both while preserving their declared differences; runcorepack yarn checkand each workspace check before release.- After editing
README*.mdorCHANGELOG*.mdin any language, refresh the Git blob hashes in the matching*.i18n.yaml(take them withgit hash-object), otherwisecheck:bilingual-docsfails. corepack yarn check:layoutneeds an initialised submodule; in a purely headless environment, validate business code withtypecheck/test/ per-workspacecheckinstead.- CI must not let the code under review decide what runs: the
changesjob restoresscripts/from the pull request base before running the classifier and the documentation/market gates (documents still come from the working tree);workflow_dispatchhas no base, so it falls back to the head copy with a warning. CI runscorepack yarn check:ci(= localcheckwithoutverify:aa) instead of rewritingdsh-plugin-desktop-beta/package.jsonat run time. - Version parity is part of the gate:
scripts/verify-layout.mjsrequires both workspaces'versionto equal the newest## <version> — <date>heading inCHANGELOG.md, so missing either side on a release fails.
Release and updates
- Two product lines: produced by the two desktop workspaces. Beta and stable installers differ in bundle id, artifact prefix and update channel and must not be mixed.
- Channel protocol: the version check requests
https://www.nonead.com/software/ndsh-desktop/version, reporting the current version inX-DSH-Desktop-Version,stable/betainX-DSH-Desktop-Channel, and a locally generated, persisted random UUID inX-DSH-Desktop-Installation-Id. Installer downloads carrychannelandX-DSH-Desktop-Target-Versionbut never the installation id or the current version. - Channel enforcement: the server response must echo the channel; the stable channel accepts only plain SemVer while the Beta channel accepts only
-beta.N, and the client never silently downloads across channels. - Version consistency: the uploaded artifact, the bare download URL's version-to-file mapping and the version reported by the endpoint must all match — a mismatch surfaces as a 404 rather than a wrong install.
- Release prerequisites: run
corepack yarn aa:prepare-releasefirst; if this release ships a newdshmarket, a human must also runcorepack yarn market:prepareand commit it. The Windows distribution commands additionally verify AA artifacts with--verify-release.
Plugin ecosystem
Plugins extend DSH — models, tools, UI and workflows are all plugins that compose like building blocks. Nonead DSH Desktop does not modify upstream source and is not a hard-coded shell: the pinned upstream runs as-is, and the desktop shell itself plugs in through the same "everything is a plugin" rule.
Plugin authors only need three things:
- Ordinary DSH plugins are developed exactly as in any DSH environment — see plugin development.
- Desktop services (
desktopProfiles,desktopPnpm, …) let plugins inspect or switch profiles and install, update or remove plugins — see desktop plugin services. - Composition and patches: a profile is composed by stacking patch layers, where
idmatches an existing row andinsertappends new rows; mind the three "silently inert" failure modes in Security boundaries.
The vision and three principles are in the DSH plugin ecosystem proposal; the community proposal for a unified plugin contract is Community Fabric.
Relationship to upstream
Nonead DSH Desktop is an independent community project built on DeepSeek Harness and the Cordis plugin model, developed and maintained by Nonead Corporation.
Upstream provides the core agent capabilities, plugin system, Web UI and runtime packages. This repository owns:
- Desktop application packaging (Electron main process, windows, tray, menus, materials)
- Starting, stopping and recovering the local Host service, including crash fallbacks
- Profiles and patch layers, the first-run wizard, browser and LAN access control
- Shipping the plugin market and the brand skin inside the installer
- Windows / macOS / Linux builds, signing and release flow, and auto-update
If you only want to use DeepSeek Harness from the command line, or want to work on its core, go to the upstream repository instead.
Changelog
The full history is in the changelog (中文). Recent releases:
| Version | Date | Highlights |
|---|---|---|
2.1.15 |
2026-10-22 | Release notes in the update card, tray and native dialogs, skip-a-version, install retry and snapshot rollback; remembered window state, layered .env, dsh-desktop:// deep links and launch at login; market media preview and install-by-name; dshmarket 1.66.45 |
2.2.3 |
2026-10-29 | The desktop shell is fully localized into eight languages (Chinese, English, Japanese, Spanish, French, German, Russian, Brazilian Portuguese): five new shell dictionaries plus settings-page dictionaries in six languages, template-based lookups for interpolated dialogs, and the client locale namespace and native menus follow the same set |
2.2.2 |
2026-10-28 | Runtime moved to DSH 0.2.2-alpha.2 (370 packages re-vendored, 24 version patches and the market patch rebased), dshmarket moves to 1.73.1, and the Agents Anywhere bridge is rebuilt for the new peer ranges |
2.1.18 |
2026-10-24 | Runtime moved to DSH 0.2.2-alpha.2 (344 packages re-vendored, 24 patches rebased), the Agents Anywhere bridge is built from source with a rebased connector patch, an experimental Windows ARM64 build lands, and the update card copy and progress placement are fixed; includes the 2.1.17 audit fix batch |
2.1.17 |
2026-10-24 | Audit fix batch: recovery refresh race, checkpoint inode re-checks and single-slot degradation, atomic settings writes, update failure-path release, plugin state and staging cleanup, tray dialog ownership, market paging and skin declaration, CI gate fixes |
2.1.16 |
2026-10-22 | Security and gate fixes: CI gates run the base-side classifier, Electron fuses tightened (NODE_OPTIONS/--inspect closed, Stable loads only from app.asar; runAsNode kept because the Host/CLI/pnpm shims need it, and now pinned by layout-derived assertions), renderer credential injected over a private pipe, web gate fails closed, deep-link action allowlist, base64url secret masking; the Stable-shell asarUnpack / files[].from coupling is now pinned by a prefix-deriving test (the existing patterns verified correct), added Stable packaging CI, and verify-layout now enforces version parity |
2.1.13 |
2026-10-21 | Runtime moved to DSH 0.2.1-rc.2, dshmarket 1.66.44, AA bridge 39b82d4, new boot wordmark and onboarding API-key guidance, AA queue overflow drops events instead of crashing |
Known limitations
- In-app update on Linux only checks the version and never downloads an installer; upgrade by downloading a fresh AppImage.
- Windows ARM64 ships as an experimental build:
dist:win:stableproduces only the x64 installer by default; arm64 requiresDSH_PACKAGE_ARCH=arm64(pair it withDSH_PACKAGE_OUTPUT_DIRfor a separate output directory). The shell is native arm64 while the bundled runtime stays on the x64 payload (Windows emulation), a cross-arch build skips the run-only smokes, and the update channel currently carries a singlewindowsartifact, so it cannot serve x64 and arm64 side by side. - Windows installers are not cryptographically verified yet: the download path supports a server
installerSha256, but the version endpoint does not publish it, so onlyProductName/ProductVersionare compared for now (Stable shell only; the Beta shell checks just the installer magic bytes and size, then executes it). - LAN access has no authentication — it hands this machine's DSH to everyone on the same network segment.
- A wrong plugin
injectservice name fails silently as a permanently pending plugin, showing up only as HTTP 4xx. - A local
yarn installmay rewrite thedsh-nonead-client-skincontent fingerprint inyarn.lock(not reproducible across machines); do not commit such local lockfile changes.
Community
- Discord: join the Nonead DSH Desktop community
- WeChat Work and QQ groups: message @王博升Benson after joining, or email for an invitation
- Interested in joining the team: contact t4wefan@qq.com
Links
DeepSeek Harness ecosystem projects and developer tools:
| Project | Description | Link |
|---|---|---|
| dshfind | Learning and sharing community for DeepSeek Harness (DSH). | GitHub · Website |
| DSH 1024Store | Community plugin catalogue for DSH, with an open-sourced market, catalogue pipeline and public query API. | GitHub |
| Awesome DSH Plugin | Curated list of DeepSeek Harness plugins. | GitHub |
| dsh-market | Visual plugin market inside DSH with browsing, search and one-click install. | GitHub |
| ModLens | OCR, layout and semantic recognition for DSH and text-only coding agents. | GitHub |
| DeepSeek Harness orange book | Community handbook of measured DeepSeek Harness practice. | GitHub |
| dsh-web-ui | Collection of DeepSeek Harness Web UI plugins and skins. | GitHub |
| dsh-TUI | Full-screen interactive terminal UI for DeepSeek Harness. | GitHub |
| dsh-context | Context insight panel for DSH: dashboard, /context command and browser. |
GitHub |
| Agents-Anywhere | Control a coding agent on your computer from your phone. | GitHub |
| DSH-better-sidebar | DSH sidebar workbench integrating files, terminal, Git and subagents. | GitHub |
| Awesome DeepSeek Harness | Curated list of DSH plugins, tools and infrastructure. | GitHub |
License
Copyright © 2026 Nonead Corporation. Released under the MIT License.
"DeepSeek Harness" is a registered trademark of DeepSeek. The name is used only to accurately describe compatibility, technical provenance and the relationship with upstream software.
This project is completely free and open source. If anyone sells you this software in any form, decline the transaction.
Nonead DSH Desktop is an independent community project and is not affiliated with, partnered with, licensed by, or endorsed by DeepSeek.
Introduction
一键安装即可在桌面使用 DeepSeek Harness 智能体,支持 Windows、macOS 和 Linux。项目将 DSH 封装为 Electron 桌面应用,提供窗口、托盘、终端和自动更新,采用'一切皆插件'架构,桌面壳本身也是 DSH 插件。
https://www.nonead.comCustomize your domain