Back to home@Ackow

dsh-desktop

Lightweight DeepSeek Harness desktop client - ~0.9MB native shell (WebView2 window + dsh web lifecycle manager) with auto dependency install

Stars
3
Language
C#
Created
Aug 14, 2026
Updated
Aug 18, 2026

Introduction

DSH Desktop

把 DeepSeek Harness 装进一个原生窗口。 一个 ~0.9 MB 的轻量壳,复用系统 WebView2 + 本机 dsh——不捆绑运行时、免安装、双击即用。

🏅 插件生态开箱即用。 首次启动自动引导 DSHD 官方插件(插件市场 / 模型用量)+ 社区精选(模型视觉 / 侧边栏),页内插件市场一键发现、安装、更新、启停。

release license dsh download

简体中文


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 自动下载
⬆️ dsh 自动更新启动后台检测最新 dsh 版本,有新版时顶部横幅提示(可关闭)+ 设置页「软件介绍」显示当前/最新版本、一键更新、查看更新日志;发布产物带版本号 DSHDesktop-<ver>.exe
🧩 页内插件市场侧栏「插件市场」打开页内面板: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-clientDSHD 官方 client 插件:侧栏「插件市场」+ 页内市场面板 + 「DSH Desktop」设置区(内置,不可移除)github.com/Ackow/dshdesktop-client(DSHD 开发)
@dshd/dsh-usageDSHD 官方侧栏「用量」面板(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.yamlallowBuilds 后重试——DSH Desktop 市场面板已自动处理。
  • skill 不在此列SKILL.md 目录放入 skill root 即用(DSH 原生兼容 Agent Skills),或用 npx skills add <owner>/<repo>
  • 完整分类与调研依据见 docs/plugin-install-methods.md

插件目录位于 %DSH_HOME%\profiles\webDSH_HOME 默认 ~/.dsh,settings dshHome 可覆盖)。市场面板「已安装」可直接启停 / 移除 / 检查更新。

配置叠加层(profile patch)

dsh web 支持 --patch <yml> 叠加 Cordis 配置层,settings.jsonpatchFiles 或环境变量 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_BINDSH_DESKTOP_NODE。以下均可在「设置 → DSH Desktop → dshd 配置」编辑:

说明默认
portdsh web 服务端口3080
marketplaceTopics市场 GitHub 发现 topicdsh-plugindsh-plugins
marketplaceCacheHours市场缓存小时数24
githubToken / GH_TOKENGitHub 令牌(提升限流)
proxyUrl插件下载代理(如 http://127.0.0.1:7890,直连留空)直连
dshUpdateCheckHoursdsh 更新检查结果的内存缓存小时数6
logsDir日志目录(留空 = 数据目录\logs)数据目录\logs
patchFilesdsh 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\:主文件 DSHDesktop.exe,并自动生成带版本号的发布物 DSHDesktop-<ver>.exe(版本号取自 src/AssemblyInfo.cs)。构建完全离线,无 NuGet 依赖。CI 见 .github/workflows/build.yml

📁 目录结构

bin\DSHDesktop-<ver>.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


🐳 图标与商标

icon preview

蓝盘白鲸(默认)与黑盘白鲸两款图标,实底圆角底板保证在任务栏/托盘任何配色下清晰可见,含 16/32/48/256 四档尺寸。鲸鱼路径取自 DeepSeek Harness 官方 favicon。DeepSeek 名称与标志的权利归 DeepSeek 所有。


⚖️ 许可 License

MITMicrosoft.Web.WebView2.*WebView2Loader.dll 版权归 Microsoft(WebView2 SDK 组件,按 SDK 条款随应用再分发)。