s3yf1337/dsh-desktop
Desktop profile for the DeepSeek Harness: a native Tauri window over the harness web surface — tray, single-instance, OS notifications, suggest-only updater, native dialogs, drag & drop, and an in-app settings tab.
已收录
0
Ui
Bundle 已验证
预览
功能介绍
dsh 桌面配置:原生 Tauri 窗口承载 harness Web 界面,支持托盘、原生通知、文件管理器面板与一键更新。
适合
- 希望在 Linux、macOS 或 Windows 原生窗口中使用 harness Web 界面的现有 dsh 用户。
- 需要托盘入口、原生通知、拖放和系统对话框的桌面工作流。
- 希望在 harness 会话旁集成文件浏览与预览的用户。
不适合
- 需要单一安装包且不想预先运行 dsh 的独立应用用户。
- 不使用桌面界面的无头、纯终端或服务器自动化工作流。
- 要求在内置预览面板中查看超过 1 MiB 的文本或超过 8 MiB 图片的工作流。
README
dsh-desktop
DeepSeek Harness in a native desktop window — built the way the harness itself is built: as a plugin, not a fork.
dsh-desktop is a DeepSeek Harness
profile that composes the standard bundles (dsh-base + dsh-web-app) with a
small plugin — this repo’s dsh-desktop-shell — which opens the harness web
surface in a native Tauri window: custom title bar, tray icon, native
notifications, a real file-manager panel, and one-click updates.
The idea: desktop as a plugin
DeepSeek Harness is built on the principle that everything is a plugin: models, tools, sandboxes, session storage, the UI — even the agent loop itself. The desktop experience should follow the same rule.
This project adds a native window without forking or repackaging the harness. The profile is plain composition:
dsh --profile desktop → dsh-base + dsh-web-app + dsh-desktop-shell
That one decision buys a lot:
- Always in sync. The harness keeps updating; so do you. There is no fork to rebase and no bundled copy to refresh — upstream releases land in your profile exactly the way they always do.
- Composable. The shell is one row in your profile’s bundle list. Keep your other bundles, swap the web app, add plugins — the desktop layer stays a layer, not a replacement.
- Small. The native client is a Tauri binary, not a bundled browser plus a full runtime. Your dsh stays your dsh.
-
Honest trade-off. The plugin approach assumes you already run
dsh. If you want a single installer with zero prerequisites, a standalone app that bundles its own runtime is the better fit. If you want the desktop to be part of your harness — same config, same workspaces, same plugins — this is the one that fits.
Features
-
Native window with an app icon in the dock/taskbar and a custom title
bar (drag region, minimize/maximize/close) drawn by the web surface,
matching the app theme on every platform. The window title follows the
chat open in the UI right now (
DeepSeek Harness — <chat title>), not the last started agent. -
Explorer panel — a real file manager. Browse any folder (not just the
workspace) with breadcrumbs, back/forward, name filter and recursive
search, sort by name/size/date. Right-click or keyboard (F2 rename, Del to
trash, arrows) to create, rename, copy, cut, paste, delete, open
externally. Files changed or created since your last look are marked live
(auto-refresh). A Preview tab renders markdown with the app’s own
renderer (headings, tables, task lists, syntax-highlighted code with a
copy button, math — and relative images resolved from the local disk),
renders mermaid diagrams (bundled with the app, works offline) and
CSV/TSV tables with line/bar charts, opens local
.htmlpages in a sandboxed frame, shows images (click to zoom, dimensions), syntax-highlights source code files (shiki, the app’s own highlighter), and falls back to a hex dump for binary files. A URL bar in the preview opens any web page (external links land in the system browser). Previews re-render automatically when the file changes on disk (text 1 MiB / images 8 MiB caps). - Wired into the harness. Right-click a file → Send path to agent inserts its workspace-relative path into the composer; images can be attached to a message — or just drag an image file into the window: it lands in the composer as a real attachment (any other file inserts its path). The workspace picker (hero + sidebar + settings) is the panel in “choose a folder” mode instead of an OS dialog.
-
Links that work. Every
http(s)/mailtolink in the chat and in markdown previews opens in your system browser — no more deadtarget="_blank"clicks inside the webview. - Chat search (Ctrl/Cmd+F). A quick-search bar over the conversation: live case-insensitive highlighting, Enter/↑/↓ to jump between matches, Esc to leave. Highlights are painted over the text without touching the message DOM, so streaming re-renders never corrupt the chat.
- Tray + close-to-tray. Closing the window hides it; running agents keep working. The tray menu carries a live agent monitor: every running agent with a refreshable log tail and a Stop agent action, plus a badge on the tray icon when an agent finishes (cleared from the menu).
- Native notifications on agent finish, error, and question events.
- One-click updates. Download, apply, restart. Nothing is applied automatically; background checks are opt-in (off by default).
- Workspace selection via the OS folder dialog, or drag-and-drop a folder into the window.
-
A
dsh-desktoptab inside the harness Settings for desktop preferences.
Screenshot

DeepSeek Harness in a native window: the harness web surface with the custom title bar and the explorer panel.
Install
Requires the dsh CLI. Rust is needed only for the first build from
source — prebuilt client binaries skip it.
Pre-built installers per platform — .deb (Linux), .dmg (macOS), NSIS
.exe (Windows) — are published on the
releases page. One
installer places the client binary and registers an app-menu entry; the
first launch bootstraps the desktop profile into dsh and opens the window.
From source (Linux/macOS dev path):
git clone https://github.com/s3yf1337/dsh-desktop && cd dsh-desktop
./install.sh # full bootstrap (builds the client if needed)
./install.sh --no-build # use an existing client binary, never build
./install.sh --rebuild # force a client rebuild
dsh-desktop
The client binary itself is also a plugin installer:
dsh-desktop-shell install # bootstrap the profile + install client/launcher
dsh-desktop-shell install --prefix /usr # OS-package layout (menus under /usr/share)
dsh-desktop-shell # install, then boot the profile
dsh-desktop-shell --version
Runs on Linux, macOS, and Windows.
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:s3yf1337/dsh-desktop。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。