# deepseek-harness-desktop-app

> Wrap DSH Web into an

## Metadata

- Author: [@vibeinging](https://github.com/vibeinging)
- Repo: <https://github.com/vibeinging/deepseek-harness-desktop-app.git>
- GitHub: [vibeinging/deepseek-harness-desktop-app](https://github.com/vibeinging/deepseek-harness-desktop-app)
- Stars: 606
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `agentic-workflows`, `ai-agent`, `ai-workbench`, `data-analysis`, `deepseek-harness`, `desktop-app`, `dsh`, `dsh-plugin`, `electron`, `local-first`, `mcp`, `model-context-protocol`, `office-automation`, `react`, `typescript`
- Forks: 32
- Open Issues: 6
- Last push: 2026-08-15T08:56:28.000Z
- Added: 2026-08-16T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:vibeinging/deepseek-harness-desktop-app
```

## Wiki

## One-Sentence Positioning
DeepSeek Harness Desktop App is an Electron desktop shell layered on top of the official DeepSeek Harness (DSH) Web. It merges DSH's conversations, Agents, Tools, Profile Bundles with local project management, Git Worktree, Browser Workspace, Canvas, Site, and Office artifacts into a single desktop application. When installed to the current DSH Web Profile, it automatically registers 10 application-owned tools for the model and rewrites the root nodes of the default layout, sidebar, conversation entry, and general settings page.

## Core Capabilities
- Mount three sets of private Profile Bundles on the DSH Profile: theme pack, dual-sided root Client pack, and 10 product tool bridge packs
- Register 10 application-owned tools for the model: `project_list`, `conversation_list` for enumerating projects and conversations, `canvas_inspect` / `canvas_create` / `canvas_edit` / `canvas_suggest` for handling Canvas and local Sites, `artifact_office_inspect` / `artifact_office_create` / `artifact_office_edit` for handling Office artifacts, `ui_render` for rendering structured interactive interfaces
- Provide a product-level five-piece workbench: Results & Evidence, Browser, Files, Artifacts, and Site five tabs replace DSH Web's default pages
- Integrate project management, file authorization, Git Worktree isolated development, Browser Workspace multi-tab browsing, local Office file preview and point editing, immutable version Canvas / Site
- Expose two official themes: `professional-blue` (default, ink blue background + cobalt blue accent) and `anime-blue` (optional, mascot style); support local theme create, import, preview, edit, export, delete, but can only change colors and appearance tokens, cannot inject raw CSS
- Plugin center provides Profile Bundle compatibility check and installation entry; users can uninstall already installed Bundles
- In DSH pre-step, inject application instructions, project instructions, and global/project memories as immutable user messages into context, and retain `dsh-work-context` and `dsh-work-memory` sources in DSH Session Log

## Technical Implementation
- **Language**: JavaScript (three Bundle packages use ES Module) + TypeScript (Electron main process and Renderer use TS/TSX) + Vite/React frontend stack
- **Key Dependencies**: `@deepseek-ai/cordis` ^4.0.1 (plugin orchestration), `@deepseek-ai/dsh-agent` ^0.1.0-rc.6 (Agent runtime), `@deepseek-ai/dsh-tools` ^0.1.0-rc.6 (tool registration), `@deepseek-ai/dsh-invariants` ^0.1.0-rc.6 (invariant validation), `@deepseek-ai/dsh-client-*` ^0.1.0-rc.6 (Client Loader injection), `electron` ^42 and `electron-updater` 6.8.9 (desktop host and updates)
- **Architecture Pattern**: Three private Profile Bundles are inserted into the current DSH Web Profile's Cordis tree via `dsh.bundle.patch` (cordis.patch.yml); `dsh-work-shell` simultaneously disables the official `ui-layout` / `ui-sidebar` / `ui-conversation` / `ui-settings-general` four shells, then uses itself as the visible root; `dsh-product-bridge` listens to `agent/created`, `tools/pre-execute`, `agent/disposed`, bridging IPC requests through the Electron main process to the local backend; only DSH Session id is sent between processes, identity and project are bound to the parent process
- **Entry Files**: `electron/main.js` (Electron main process entry), `packages/dsh-product-bridge/src/index.js` (Profile Bundle 1: product bridge and 10 tools), `packages/dsh-work-shell/src/index.js` (Profile Bundle 2: root Client plugin), `packages/dsh-theme-pack/src/index.js` (Profile Bundle 3: theme data), `renderer/src/app-init.ts` (Renderer startup initialization)

## Applicable Scenarios
Suitable for heavy users who want to move DSH from a browser tab into an independent desktop App: those with many projects, needing to work in parallel across multiple Worktrees, frequently opening conversations, files, Office, and web pages for comparison. Beyond Capable, typical scenarios are product/design/operations needing to keep conversations, Markdown, Canvas, local Site, DOCX/XLSX/PPTX/PDF all in one desktop session for synchronous tracing. If only a minimal DSH client is needed, or only running on Linux, this desktop application is not within scope (Linux has no desktop packaging configuration yet).

## Prerequisites and Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH | 0.1.0-rc.6 | Three Profile Bundles fix this version family in peerDependencies, no loose range declared |
| Node.js | >=24.0.0 (Bundle compatible with ^22.19.0 / >=24) | Root `package.json`, `electron/package.json`, `renderer/package.json` engines all declare `>=24`; three Bundle engines relax to `^22.19.0 || >=24.0.0` |
| Platform | macOS (arm64 and x64) / Windows x64 | macOS Apple Silicon verified through development and directory packages; macOS Intel passes Rosetta check but still needs physical machine acceptance; Windows x64 integrated into build process, still needs installer physical machine acceptance |
| Native Modules | electron / electron-updater | `electron` introduced via `electron/package.json`; `electron-updater` 6.8.9 provides in-app updates; no other native dependencies like node-pty, sqlite involved |
| Windows arm64 | Not supported | README platform status section explicitly notes this |
| Linux | No desktop packaging configuration | Renderer can run standalone, but Electron desktop product packaging configuration not provided |

## Installation
```bash
dsh plugin --profile web add github:vibeinging/deepseek-harness-desktop-app
```

## Configuration Options
| Config | Type | Description | Default |
|---|---|---|---|
| Theme Selection | `professional-blue` \| `anime-blue` | Switch official themes; falls back to `professional-blue` when missing | `professional-blue` |
| Light/Dark Mode | `light` \| `dark` \| `system` | Persisted via DSH Settings API as `ui-theme.preference`, only writes default when no user preference exists | `system` |
| Background Color | Color token | Personal background adjustment, only modifies safe renderer color tokens, does not inject remote images | Follows theme `bgColor` |
| Panel Transparency | Percentage | Adjust panel opacity, independent of light/dark and background | Theme `panelOpacity` |
| Language | `zh` \| `en` | Switch interface language | Follows system |
| Bundle Installation Source | npm exact version package \| `dsh-external` repository commit address | Must pass compatibility check "can install" before writing to current Profile | None |

Theme-related `vars`, `mantineColors`, `appearance.bgColor`, `appearance.panelOpacity`, `light/dark` two color palettes are fully defined in `packages/dsh-theme-pack/themes.json`. Third-party Client UI Bundles (containing `dsh.client`) are rejected at pre-check stage and will not enter Renderer.

## FAQ

**Q: What is the relationship between this plugin and DSH official Web?**

A: It is not an iframe of DSH Web, nor does it replicate a set of Agent runtime. Electron launches the official DSH Web Profile, using the same set of Session, Agent, Tool, Skill, MCP, Settings, Profile Bundle and Client Loader; the desktop shell is built on the same runtime chain, additionally providing project management, file authorization, Browser Workspace, Git Worktree, Canvas, Site and Office artifacts.

**Q: Can I double-click the icon to open the desktop app after installation?**

A: This repository itself is a complete Electron desktop application code base, requiring local `npm install` → `npm run doctor` → `npm run dev` to start development mode, or use `npm run package:mac` / `npm run package:win` to package macOS DMG / Windows NSIS installer before double-clicking to run.

**Q: Which Bundles can regular users install? Can third-party Client UI enter the main window?**

A: Tool, Skill, MCP, Hook and other Host Bundles can enter DSH runtime. Bundles containing third-party Client UI are directly rejected at pre-check stage until they can run independently outside the main window with Electron permissions; Client Bundles published with the desktop application and passed review are not subject to this restriction.

**Q: What extra tools does the model get after installing this Bundle?**

A: The model gains 10 additional application-owned tools: `project_list`, `conversation_list` (read-only project/conversation enumeration), `canvas_inspect` / `canvas_create` / `canvas_edit` / `canvas_suggest` (Canvas and local Site read/create/edit/inline suggestions), `artifact_office_inspect` / `artifact_office_create` / `artifact_office_edit` (Office artifact read/write) and `ui_render` (structured interactive interface rendering).

**Q: Where is data stored? Is project source code read-only by default?**

A: Profile, Session, project, execution records and artifact data are saved locally in `~/.dsh` by default. Project source directories are read-only by default; Agent write requires explicit user authorization.

**Q: Which platforms are already usable? Which are still in progress?**

A: macOS Apple Silicon verified through development and directory packages; macOS Intel passes Rosetta check but still needs Intel physical machine acceptance; Windows x64 integrated into build process but installer still needs physical machine acceptance; Windows arm64 not supported; Linux has no desktop packaging configuration.

**Q: Does the model need approval before writing application-owned data?**

A: Yes. The `tools/pre-execute` hook intercepts the five write-type tools `canvas_create` / `canvas_edit` / `canvas_suggest` / `artifact_office_create` / `artifact_office_edit` and prompts for DSH approval; they will not automatically fall into user data.

**Q: Can local themes carry malicious CSS or remote images?**

A: No. Local themes can only modify colors and appearance settings, limited to renderer-safe color tokens; Bundle's Themes descriptors do not allow injecting raw CSS, remote images, nor changing app name; overly permissive fields are discarded at load time.

## Learning Curve
Intermediate — After installation, you can directly use all official DSH capabilities and additionally gain 10 tools, five-piece workbench and two themes; but you need to be familiar with DSH Session capability approval, Worktree switching back to main checkout before deletion, sub-Agent model inheritance and other rules, otherwise it's easy to fall into write approval and branch state machine pitfalls.

## Known Issues and Limitations
- Desktop application currently has no five-column task board, independent scheduled task page, Git graph, stage/unstage panel or independent terminal page (README.md current boundary section)
- Local Site only supports preview and single file export, no public deployment service; public sharing provides read-only view only
- No mobile remote control, QR code pairing, public network tunnel, SSH, SFTP or port forwarding
- Sub-Agents can execute in conversations and traces, but no complete independent management page yet
- Windows arm64 not supported currently; Linux has no desktop packaging configuration
- macOS Intel still needs physical machine acceptance; Windows x64 installer still needs physical machine acceptance
- rc.6 SDK no longer releases original ProductHost and project tool packages, so this application's Bundle directly holds all 10 tools and their parent process bridge (known alternative constraint)
- Dependencies fixed at `0.1.0-rc.6`, no wider version range declared; different RC series cannot be mixed during development; running `latest` on npmmirror still points to old versions on some sub-packages, need to explicitly fix `next`/rc.6 series
- These three Bundles are all private packages; production build must carry the same reviewed version and matching official NPM SDK version

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [deepseek-harness-desktop-app](https://deepseek-plugin.org/plugins/vibeinging/deepseek-harness-desktop-app)
Wiki generated by AI (model: `MiniMax-M2.5`)
