Vision & Multimodal
deepseek-harness-desktop-mapan042
mapan0424/deepseek-harness-desktop/packages/harness-channel-config · ★ 5
Visual channel configuration UI for DeepSeek Harness (feishu / imessage / telegram / ...)
An English summary is not available; the Chinese summary is shown.
安装
dsh plugin --profile web add 'github:mapan0424/deepseek-harness-desktop#6f7bbce026017be3ca37cb40f1823c65898391e5&path:/packages/harness-channel-config'GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
- What's new in v0.3.16
- What's new in v0.3.15
- What's new in v0.3.14
- ✨ Why use it
- Ready out of the box
- The complete Harness experience
- Messaging channels
- 🌐 Multi-language & Ethnic Locales (Locale Pack)
- A proper Mac app
- Local-first by design
- Legacy-device compatibility matrix
- 🚀 Download and install
- macOS
- Windows
- Automatic updates
- 🧭 How it works
- 🌊 Vision
- 🛠️ Development
- Requirements
- Run locally
- Build for Apple Silicon
- Build for Intel Mac
- Build for Windows x64
- 🤝 Contributing
- 📄 License and notice
- 🔗 Related projects
- 🌐 Friendly links
[!IMPORTANT] This project is for personal learning and testing only. It is an experimental project I built while learning Tauri desktop packaging and DeepSeek Harness plugin development. It is not thoroughly tested, may change or stop being maintained at any time, and is not recommended for production or important work.
Please download and use the official DeepSeek release instead: DeepSeek Harness website · Official GitHub repository (with Node.js installed, you can also run
npx @deepseek-ai/dsh web).
https://github.com/user-attachments/assets/486eb943-a455-4f56-b009-5fc1e877e812
What's new in v0.3.16
- Fixes menu-bar usage failing with
unexpected end of hex escapewhen a session preview contains a clipped emoji; - Tolerates lone UTF-16 surrogates while reading existing previews without rewriting stored sessions or usage records;
- Makes new preview clipping respect emoji surrogate pairs while preserving existing length budgets;
- Adds native parsing and preview regression tests, with usage fields also verified against a real local session-list response.
What's new in v0.3.15
- Fixes the model selector failing to render on macOS 12.7.6 when
Array.prototype.toSorted()is unavailable; - Adds a sorting fallback for older WebKit without mutating the model catalog or replacing native implementations on newer engines;
- Adds six compatibility regression tests to the existing build checks, with model ordering also verified using the real macOS 12.7.6 JavaScriptCore engine;
- Continues to bundle
@deepseek-ai/dsh@0.2.1-alpha.5and@deepseek-ai/cordis@4.0.5.
What's new in v0.3.14
- Upgrades embedded core runtime to official
@deepseek-ai/dsh@0.2.1-alpha.5and@deepseek-ai/cordis@4.0.5, locking the complete verified closure of 293 subpackages to prevent prerelease drift; - Brings upstream 0.2.x features: plugin market with custom plugin index sources, model selector search, automatic masking of secrets in sent messages, manual context compaction via
/compact, Office / PDF preview and conversation improvements, etc.; - Rewrites the desktop loopback auto-login patch for the new 0.2.x browser-session authentication API, so the app still opens straight into the workspace;
- Updates the bundled plugin suite, all passing DSH 0.2 plugin version compatibility checks: Channel Config
0.1.13, Core0.1.10, Feishu0.1.8, DingTalk0.1.6, WeCom0.1.10, iMessage0.1.11, Harness Insights0.1.15, Locale Pack0.1.9; - Adds a build gate that fails when DSH disables any bundled plugin as version-incompatible;
- Keeps macOS 12.7.6 compatibility: every native binary targets macOS 12.7.6 or earlier, and all WebKit compatibility patches apply to the new runtime;
- Windows builds continue to exclude macOS-only iMessage while retaining all cross-platform channels and features.
✨ Why use it
Ready out of the box
You do not need to install or maintain:
- Node.js
- npm or pnpm
- Homebrew
- the DeepSeek Harness CLI
- extra runtimes or first-launch downloads
Download the right DMG, move the app to Applications, and launch it. Every release carries a pinned, self-contained runtime, unaffected by your global Node version, PATH, or package manager state.
The complete Harness experience
This is not a reduced chat wrapper. It hosts the DeepSeek Harness Web UI directly and preserves the capabilities that make Harness useful:
- multi-turn sessions and streaming responses
- Markdown and code rendering
- workspaces and context management
- tool calls and approval flows
- model, credential, and plugin configuration
- an experience that can evolve with upstream Harness
- bundled Harness Insights for local Token, model, and tool usage analytics with Golden Ratio heatmap and dual themes
- bundled omnichannel messaging gateways: visual configuration, Feishu / Lark, DingTalk, WeChat Work / WeCom, and iMessage on macOS
- bundled multi-language and ethnic locale pack: seamless switching across Tibetan, Mongolian, Uyghur, Nuosu Yi, Traditional Chinese, Japanese, Korean, etc.
The desktop layer does not reinvent Harness. It makes Harness feel at home on desktop systems. Built-in plugins are developed as modular Cordis plugins, decoupled from upstream source, and delivered out-of-the-box inside the installer.
Messaging channels
The installer includes the validated channel plugins. After launching Harness, configure them from the Message Channels settings page:
- Visual configuration for unified channel parameters, authorization state, default workspaces, and session routing;
- Feishu / Lark with WebSocket long-connection events and Open API card/text streaming replies;
- DingTalk with Stream long connections, no public webhook requirement, and in-conversation Agent approvals/questions;
- WeChat Work / WeCom with custom application credentials for bi-directional messaging with local Harness agents;
- iMessage on macOS, including the local Messages/chat.db mode. The first use requires Full Disk Access and Automation permissions.
The Windows installer does not ship the iMessage plugin, and iMessage is hidden from its configuration page because Messages.app is macOS-only.
🌐 Multi-language & Ethnic Locales (Locale Pack)
The desktop app comes pre-packaged with a powerful localization pack that supports instant UI language switching in Settings:
- Ethnic Minority Languages: Tibetan (བོད་ཡིག), Traditional Mongolian (ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ), Uyghur (ئۇيغۇرچە), Nuosu Yi (ꆈꌠꉙ);
- Global & Regional Languages: Traditional Chinese (繁體中文), Japanese (日本語), Korean (한국어), French (Français), German (Deutsch), Russian (Русский), Spanish (Español), and English.
A proper Mac app
- a dedicated window and Dock entry
- automatic startup of the local Harness service
- automatic selection of an available port
- direct entry into the workspace once startup completes
- close-to-tray behavior, so reopening the window does not restart Harness
- left-click tray panel for weekly Tokens, model calls, a seven-day chart, and Token breakdown
- right-click tray summary with open and quit actions
- one automatic same-port recovery when dsh exits unexpectedly, followed by a local recovery page if needed
- automatic cleanup of background processes when the app quits from the tray or system menu
- the macOS system WebView instead of a bundled Chromium runtime
- no terminal window or manually managed local server
Local-first by design
The Harness service listens only on 127.0.0.1. Sessions, settings, workspaces, and credentials remain under local Harness management, and the desktop app does not expose the UI service to your local network.
Where model requests go—and how providers process them—depends on the model service you configure in Harness.
Legacy-device compatibility matrix
Intel Macs that are still useful should not be left behind. Each architecture receives its own installer, Node.js runtime, and native dependencies, reducing the size and compatibility problems caused by mixed-architecture bundles.
| Platform | Release package | Status | Automated verification |
|---|---|---|---|
| macOS 12.7.6+ Apple Silicon | DeepSeek.Harness_*_macos_arm64.dmg |
Supported | arm64 app, minimum OS, native modules, embedded runtime, and Markdown/WebKit compatibility |
| macOS 12.7.6+ Intel | DeepSeek.Harness_*_macos_x86_64.dmg |
Supported | Intel app, x86_64 native modules, minimum OS, embedded runtime, and Markdown/WebKit compatibility |
| Windows 10 / 11 x64 | setup.exe or *.msi |
Supported | x86_64 installers, expanded runtime, native dependencies, Markdown, and bundle integrity |
macOS 12.7.6 is the minimum version declared by the current release. Intel and Apple Silicon use their matching DMG. This matrix describes release artifacts and automated checks; performance and WebKit behavior can still vary by device model and system patch level.
🚀 Download and install
Open GitHub Releases and choose the package for your platform and processor:
| Platform | Package |
|---|---|
| macOS Apple Silicon (M1, M2, M3, M4, and later) | DeepSeek.Harness_*_macos_arm64.dmg |
| macOS Intel | DeepSeek.Harness_*_macos_x86_64.dmg |
| Windows 10 / 11 x64 (recommended) | DeepSeek.Harness_*_windows_x86_64-setup.exe |
| Windows x64 enterprise deployment | DeepSeek.Harness_*_windows_x86_64.msi |
macOS
- Open the DMG.
- Drag
DeepSeek Harness.appinto Applications. - Launch the app and configure your preferred model or API credentials in Harness.
If macOS blocks the first launch, verify that the file came from this repository's Release page, then run:
xattr -dr com.apple.quarantine "/Applications/DeepSeek Harness.app"
Windows
- Download and run
setup.exe. - Open DeepSeek Harness from the Start menu after installation.
- Configure your preferred model or API credentials in Harness.
MSI is primarily intended for enterprise or managed deployment. Windows 10 and 11 normally include the required Microsoft Edge WebView2 Runtime.
Automatic updates
Starting with v0.2.0, an installed desktop app checks GitHub Releases after startup has settled. When a newer release is available, the app shows its notes first; after confirmation it downloads the signed package, stops the local dsh process, installs the update, and restarts. macOS Apple Silicon, macOS Intel, and Windows x64 each use their matching signed updater package.
v0.1.9 and earlier do not have updater support, so they require one manual install of v0.2.0. Later releases can be installed from inside the app.
🧭 How it works
DeepSeek Harness.app
├── Native macOS / Windows window & system tray
├── Rust / Tauri desktop layer
│ ├── Starts the embedded runtime
│ ├── Selects local port with automatic recovery
│ ├── Waits for the service to become ready
│ └── Manages process lifecycle
├── Official Node.js runtime
├── DeepSeek Harness core (Agent / Session / LLM)
├── Bundled plugins matrix (Cordis Plugins)
│ ├── Harness Insights (Token / model usage analytics)
│ ├── Harness Channels (Feishu / WeCom / iMessage / Settings UI)
│ └── Harness Locale Pack (Multi-language & ethnic locales)
└── System WebView
└── Harness Web UI
Production builds run one embedded runtime directly from App Resources. Nothing is downloaded or unpacked into a second runtime copy on first launch. The desktop layer owns the environment and lifecycle; Harness owns agents, sessions, models, tools, and plugins.
🌊 Vision
The goal is not merely to make Harness launchable. It is to build a dependable macOS home for Harness:
- Lower the barrier: make Harness useful without requiring knowledge of the Node.js toolchain.
- Stay faithful upstream: preserve Harness capabilities, interaction patterns, and plugin ecosystem.
- Respect the platform: progressively improve menus, shortcuts, notifications, file interactions, and updates.
- Keep valuable hardware useful: support older Intel Macs and macOS releases where practical.
- Remain local-first: keep runtimes, processes, and data boundaries understandable and under user control.
- Ship reproducibly: pin and validate runtimes, architectures, and dependencies for a consistent release experience.
If you want Harness to become a daily tool you can launch from the Dock, try it, share feedback, and help shape what comes next.
🛠️ Development
Requirements
- macOS
- Node.js
- pnpm
- Rust toolchain
- Xcode Command Line Tools
Run locally
pnpm install
pnpm tauri dev
For an embedded DSH runtime upgrade, bundled-plugin synchronization and release validation, follow the DSH runtime upgrade guide.
Build for Apple Silicon
pnpm build:macos
Output:
src-tauri/target/release/bundle/dmg/DeepSeek Harness_<version>_aarch64.dmg
Build for Intel Mac
pnpm build:macos:intel
Output:
src-tauri/target/x86_64-apple-darwin/release/bundle/dmg/DeepSeek Harness_<version>_x64.dmg
Build for Windows x64
Windows installers are built on a native Windows GitHub Actions runner:
Actions → Build Windows x64 → Run workflow
They can also be built on a Windows x64 development machine:
pnpm build:windows
The build pipeline automatically:
- downloads and verifies official Node.js for the target architecture
- installs a pinned Harness production dependency closure
- retains native modules for the selected architecture
- applies macOS 12.7.6 WebKit compatibility handling
- verifies Markdown behavior, Mach-O architecture, and deployment targets
- generates npm and Rust/Tauri third-party license reports
- ensures the app contains one runtime without a first-launch cache copy
- bundles and verifies the independent Harness Insights plugin
🤝 Contributing
Use Issues to report or discuss:
- macOS or Windows compatibility problems
- Intel, Apple Silicon, or Windows x64 feedback
- desktop experience improvements
- build and distribution work
- upgrades to newer Harness releases
When reporting a problem, include your macOS version, processor architecture, and any error information that is safe to share. Never upload API keys or credentials.
📄 License and notice
The desktop shell is available under the MIT License. DeepSeek Harness and bundled components retain their respective copyrights and licenses. See src-tauri/legal/THIRD_PARTY_NOTICES.md for details.
This is an independent community project. It is not an official DeepSeek product and does not imply sponsorship, endorsement, or affiliation. “DeepSeek” and “DeepSeek Harness” are used only to identify the compatible upstream project.
This project is intended only for personal learning and testing and comes with no stability or compatibility guarantees. For everyday use, please prefer the official DeepSeek Harness.
🔗 Related projects
- DeepSeek Harness (Upstream Core)
- DeepSeek Harness Plugins (Community Plugins Matrix)
- DeepSeek Harness website