DSH Desktop
⚡ 把 DeepSeek Harness 装进一个原生窗口。 一个 ~0.9 MB 的轻量壳,复用系统 WebView2 + 本机 dsh——不捆绑运行时、免安装、双击即用。
🏅 插件生态开箱即用。 首次启动自动引导 DSHD 官方插件(插件市场 / 模型用量)+ 社区精选(模型视觉 / 侧边栏),页内插件市场一键发现、安装、更新、启停。
简体中文
What is DSH Desktop
🎨 DeepSeek Harness 的桌面形态。 🖥️ Windows 原生窗口(WinForms + WebView2)。 🚀 ≈0.94 MB 单文件,复用系统已装的 WebView2 与本机 dsh——不打包任何重型运行时。 🧩 完整 dsh 插件生态——页内插件市场、侧栏入口、配置面板,全部是 dsh profile 层插件。
DSH Desktop 是把 DeepSeek Harness Web GUI 装进原生窗口的小壳:体积小、零依赖、开箱即用。它不打包插件,只把配置层透传给 dsh,你已有的 dsh 插件直接可用。
✨ 特性一览
| 特性 | 说明 |
|---|---|
| 🪶 超小体积 | ≈0.94MB 单文件 exe,复用系统 WebView2 + 本机 dsh |
| 📦 单文件发布 | WebView2 组件 / 图标全部内嵌,首次运行解出到 %LOCALAPPDATA%\DSHDesktop\lib |
| 🔄 智能服务管理 | 端口已有 dsh web 就附着复用(退出不杀);没有就自动拉起(退出自动停服);端口被占改用随机端口 |
| 🛠️ 缺啥自动装 | 缺 WebView2 → 一键下载微软安装包;缺 Node → 一键 winget;缺 dsh → npx 自动下载 |
| 🧩 页内插件市场 | 侧栏「插件市场」打开页内面板:GitHub topic 发现 + 收录目录、star 排序、搜索/详情、安装/移除/启停/检查更新、实时下载进度条 |
| 🌱 默认插件引导 | 首次启动后台自动安装 client + usage + modlens + better-sidebar,缺失即补装 |
| 🖥️ 桌面体验 | 关窗驻留托盘、单实例激活(二次启动唤起窗口)、断线气泡提醒、窗口位置记忆、崩溃弹窗可见 |
| 🔒 安全边界 | 与 dsh web 一致,仅访问 127.0.0.1 本地服务 |
📸 界面展示 Screenshots
![]() 启动画面 — 鲸鱼图标 + 品牌 + 0→100% 进度条。 |
![]() 插件市场 — 侧栏按钮打开的页内面板,发现 / 已安装双标签。 |
![]() 已安装 — 插件列表 + 启用/移除/检查更新 + 立即重启。 |
![]() DSH Desktop 设置区 — 软件介绍 + dshd 配置(端口/目录/代理)。 |
🧩 插件生态
DSH Desktop 不打包插件——所有能力来自 dsh 的 profile 层插件。侧栏、皮肤、市场、用量面板都是 dsh 插件,通过 dsh plugin --profile web add <包名> 安装、patch 叠加激活。
默认插件(自动引导)
首次启动后台自动安装并激活:
| 包 | 作用 | 来源 |
|---|---|---|
@dshd/dshdesktop-client |
DSHD 官方 client 插件:侧栏「插件市场」+ 页内市场面板 + 「DSH Desktop」设置区(内置,不可移除) | github.com/Ackow/dshdesktop-client(DSHD 开发) |
@dshd/dsh-usage |
DSHD 官方侧栏「用量」面板(token 账单 / 成本曲线) | github.com/Ackow/dsh-usage(DSHD 开发) |
@liustack/modlens |
模型视图功能(社区) | github.com/liustack/modlens |
dsh-better-sidebar |
侧边栏(社区) | github.com/omdsh-dev/DSH-better-sidebar |
幂等:已装的跳过、缺失才补;失败仅记日志,下次启动重试。
手动装插件
dsh plugin 是 pnpm 的转发器,add 支持 npm 包、GitHub 仓库与本地路径三种 spec(与 pnpm 一致):
dsh plugin --profile web add <包名> # npm 已发布(首选)
dsh plugin --profile web add github:owner/repo # 仅 GitHub 仓库(未发 npm)
dsh plugin --profile web add <包名>@<版本> # 锁定版本
dsh plugin --profile web add D:\path\to\plugin # 本地目录 / link: 开发安装
# 例:dsh plugin --profile web add @liustack/modlens
- 激活:声明
dsh.bundle.patch的包装完自动加入启动层(dsh.profile.bundles),重启生效;纯 client 插件需 patch 叠加(见下);无标记包只装入不激活。 - git 安装提示:首次安装常被 pnpm 拦截构建脚本,需在 profile 的
pnpm-workspace.yaml加allowBuilds后重试——DSH Desktop 市场面板已自动处理。 - skill 不在此列:
SKILL.md目录放入 skill root 即用(DSH 原生兼容 Agent Skills),或用npx skills add <owner>/<repo>。 - 完整分类与调研依据见 docs/plugin-install-methods.md。
插件目录位于 %DSH_HOME%\profiles\web(DSH_HOME 默认 ~/.dsh,settings dshHome 可覆盖)。市场面板「已安装」可直接启停 / 移除 / 检查更新。
配置叠加层(profile patch)
dsh web 支持 --patch <yml> 叠加 Cordis 配置层,settings.json 的 patchFiles 或环境变量 DSH_DESKTOP_PATCH(分号/逗号分隔)声明,spawn 时按序透传。仅对 DSH Desktop 自己拉起的服务生效。
# my-patch.yml
- id: web-runtime
config:
printUrl: true
- insert:
- id: my-plugin
name: '@some-scope/some-plugin'
📥 快速开始 Quick start
在 Release 下载 DSHDesktop.exe(单文件,约 900KB),双击运行即可,无需安装。
要求 Windows 10/11。首次启动若缺少组件,应用会引导自动安装(WebView2 运行时 / Node.js / dsh),并后台补装默认插件。
🔧 命令行参数 CLI
--selfcheck [path] 环境自检,写出 JSON 报告;exit 0 = 环境就绪
--marketplace [path] 插件市场发现:GitHub topic 搜索 + 收录目录,按 star 排序,写出 JSON;断网回退本地缓存
--ensure-plugins [path] 无界面运行首次启动的默认插件引导(官方 client + usage/modlens/better-sidebar),
写出 JSON 报告(安装结果 / 激活 patch / 已安装列表);exit 0 = client 插件就绪
--preview [path] 离屏渲染 WinForms 界面到 PNG(不启动服务);搭配 --preview-state startup|error
--port N 本次启动使用指定端口(一次性,不写回设置)
--close-exits 点关闭按钮直接退出(默认隐藏到托盘)
--no-tray 不显示托盘图标
⚙️ 配置 Configuration
数据目录:%LOCALAPPDATA%\DSHDesktop\(环境变量 DSH_DESKTOP_DATA 改为便携目录,**改路径时自动迁移旧数据**)。
dsh 定位:DSH_DESKTOP_DSH_BIN、DSH_DESKTOP_NODE。以下均可在「设置 → DSH Desktop → dshd 配置」编辑:
| 项 | 说明 | 默认 |
|---|---|---|
port |
dsh web 服务端口 | 3080 |
marketplaceTopics |
市场 GitHub 发现 topic | dsh-plugin、dsh-plugins |
marketplaceCacheHours |
市场缓存小时数 | 24 |
githubToken / GH_TOKEN |
GitHub 令牌(提升限流) | — |
proxyUrl |
插件下载代理(如 http://127.0.0.1:7890,直连留空) |
直连 |
logsDir |
日志目录(留空 = 数据目录\logs) | 数据目录\logs |
patchFiles |
dsh profile patch 叠加层 | — |
🏗️ 架构 Architecture
DSHDesktop.exe (托盘/窗口壳, ~900KB 单文件)
├─ WebView2 内嵌窗口 ──▶ http://127.0.0.1:3080 (DeepSeek Harness Web GUI)
├─ 内嵌资源: Microsoft.Web.WebView2.Core/WinForms.dll + WebView2Loader.dll + app.ico
│ (首次运行解出到 %LOCALAPPDATA%\DSHDesktop\lib,由 AssemblyResolve/LoadLibrary 加载)
└─ DshServer 服务管理
├─ 端口探测:已是 dsh web → 附着复用(不拥有,退出不杀)
├─ 端口空闲 → 定位本机 dsh 并拉起 `dsh web`(拥有,退出时停服)
├─ 端口被其他程序占用 → 自动改用 `--port 0` 随机端口
└─ dsh 定位顺序:DSH_DESKTOP_DSH_BIN → PATH 的 dsh.cmd →
npm npx 缓存中的 @deepseek-ai/dsh(取最新版)→ npx 在线下载(需确认)
📦 体积对比 Why so small
| 方案 | 体积 |
|---|---|
| Electron 打包 web UI(如 Oh-DSH Desktop) | ≥100 MB |
| Tauri(Rust) | ~3-10 MB |
| 打包整个 dsh node_modules | 数百 MB |
| 本方案(复用系统/本机组件) | ≈0.9 MB |
🛠️ 构建 Build
前置:Windows 10/11 + .NET SDK(仅用 Roslyn 编译器)+ Node.js(生成图标)+ .NET Framework 4.8 引用程序集(系统自带)。
.\build.ps1
产物输出到 bin\。构建完全离线,无 NuGet 依赖。CI 见 .github/workflows/build.yml。
📁 目录结构
bin\DSHDesktop.exe # 发布产物:单文件 exe(内嵌 WebView2 组件 + 图标,≈900KB)
src\ # C# 源码(net48)
src\Marketplace\ # 插件市场引擎:Catalog 发现 / PluginManager 生命周期 / GitHubApi / 桥
tools\make-icon.js # 图标生成器(渲染官方鲸鱼路径 → 多尺寸 ICO/PNG)
assets\app.ico # 蓝色鲸鱼图标(另有 app-black.ico 黑色款)
build.ps1 # 一键构建脚本
client 插件(
@dshd/dshdesktop-client)已独立为单独仓库,即将开源:github.com/Ackow/dshdesktop-client。
🐳 图标与商标

蓝盘白鲸(默认)与黑盘白鲸两款图标,实底圆角底板保证在任务栏/托盘任何配色下清晰可见,含 16/32/48/256 四档尺寸。鲸鱼路径取自 DeepSeek Harness 官方 favicon。DeepSeek 名称与标志的权利归 DeepSeek 所有。
⚖️ 许可 License
MIT。Microsoft.Web.WebView2.* 与 WebView2Loader.dll 版权归 Microsoft(WebView2 SDK 组件,按 SDK 条款随应用再分发)。




No comments yet. Be the first to write one.