Skip to main content
A

dsh-desktop

aka-danielzhang/dsh-desktop

Settings-driven MCP server manager, inventory Remote, and Web settings UI for DeepSeek Harness

Install

dsh plugin --profile web add github:aka-danielzhang/dsh-desktop

README

dsh-desktop

CI Latest release

DeepSeek Harness 的原生桌面发行版。它用 Tauri 2 + 系统 WebView 承载完整的 DeepSeek Harness runtime,并通过一组独立 DSH 插件补齐桌面集成,而不是再捆绑一份 Chromium。

项目已公开,当前按 0.2.0-rc.x 节奏持续发布。macOS 与 Windows 安装包由 GitHub Actions 从同一个 tag 构建;桌面自动更新始终指向最新的完整双平台 Release。

下载

前往 GitHub Releases 下载最新版本:

平台安装包状态
macOS Apple Silicon.dmgDeveloper ID 签名并通过 Apple 公证
Windows x64NSIS setup.exe当前用户安装;未签名构建可能触发 SmartScreen 提示
Linux暂无官方安装包可从源码参与适配

macOS 打开 DMG 后把 dsh-desktop.app 拖入 Applications。Windows 运行 NSIS 安装器即可,不需要管理员权限。

安装后的会话、工作区、设置和凭据默认与命令行 DSH 共用同一个 ~/.dsh~/.dsh-desktop 只保存桌面 runtime、插件资源和壳层编排数据,不复制用户业务数据。

已实现能力

  • 完整 Harness runtime:Release 内置固定 revision 的 DSH、Node 24 与所需原生模块,用户不需要单独安装 Node 或 pnpm。
  • 原生桌面窗口:Tauri 负责随机回环端口、sidecar 启动、就绪检测和系统 WebView;macOS 使用融合标题栏与原生窗口控制。
  • 可靠的进程生命周期:Unix 进程组、Windows Job Object、优雅退出阶梯和 stale-sidecar 注册表共同防止孤儿 Harness 进程。
  • 桌面系统集成:系统浏览器外链、原生注意力通知、下载保存桥、窗口拖拽区和桌面专属侧栏控制。
  • 标题带自动更新:后台静默定时检查;发现新版本后在侧栏开关旁提供下载入口,按钮在下载和验签时原位旋转,完成后由用户确认是否安装并重启。
  • 可诊断日志:Harness 日志与桌面 sidecar 日志写入 $DSH_HOME/logs,并维护 latest 软链接。
  • 桌面自有插件:Release 只捆绑运行面直接依赖的 dsh-desktop-bridgedsh-compaction-hierarchical,其他插件保持独立安装和独立发版。

架构

┌──────────────────────── dsh-desktop ────────────────────────┐
│ Tauri 2 shell                                                │
│  ├─ runtime/resource extraction                              │
│  ├─ sidecar supervision                                      │
│  ├─ updater, notifications, downloads, external links        │
│  └─ WKWebView / WebView2 → http://127.0.0.1:<random>          │
│                              │                                │
│                              ▼                                │
│ Bundled DeepSeek Harness runtime                              │
│  ├─ Node 24 + DSH CLI                                        │
│  ├─ shared ~/.dsh sessions, settings and credentials         │
│  └─ web profile                                              │
│      ├─ dsh-desktop-bridge                                   │
│      └─ dsh-compaction-hierarchical                          │
└──────────────────────────────────────────────────────────────┘

壳层只负责进程、窗口、分发和 OS IPC;Harness 业务能力仍由 Cordis/DSH 插件组合。普通浏览器中的 dsh-desktop-bridge 会在检测不到 window.__DSH_DESKTOP__ 时零副作用退出,因此同一插件也可以安全挂进终端启动的 dsh web profile。

仓库结构

plugin/<name>/                  独立安装、测试和发版的 DSH 插件
  dsh-desktop-bridge/           桌面门控桥、标题带更新 UI、日志汇
  dsh-compaction-hierarchical/  桌面随包的层次压缩 Provider
  dsh-mcp-settings/             MCP 设置插件
  dsh-provider-balance/         Provider 配额可视化
  dsh-reasoning-efforts/        reasoningEfforts 声明补丁
  dsh-web-search-toggle/        Web Search 通用设置开关
src-tauri/                      Tauri 2 Rust 壳、权限与打包配置
scripts/                        runtime 组装、资源打包与发布校验
docs/                           打包/发布手册和设计决策记录
runtime/revision.json           内置 Harness fork tag 与精确 commit

插件 tag 使用 <包名>-v<semver>,桌面 tag 使用 v<semver>;两者版本独立。部分插件同时发布到 npm,具体分发纪律见 AGENTS.md

本地开发

前置条件:Node 22+、仓库声明版本的 pnpm、Rust stable。Windows 需要 MSVC toolchain;构建 runtime 的操作系统必须与目标安装包一致。

git clone https://github.com/aka-danielZhang/dsh-desktop.git
cd dsh-desktop
pnpm install

# 组装公开 fork 对应的 runtime,并作为插件类型锚使用
node scripts/prepare-runtime.mjs
DSH_CHECKOUT="$PWD/runtime/src" pnpm run plugin:setup

# 各桌面自有插件保持独立依赖树
pnpm --dir plugin/dsh-desktop-bridge install
pnpm --dir plugin/dsh-compaction-hierarchical install --frozen-lockfile

# 开发窗口
pnpm desktop:dev

常用验证命令:

# 全树检查前,各插件需要自己的依赖树(symlink 锚会自动跳过)
for dir in plugin/*/; do [ -L "${dir%/}" ] || (cd "$dir" && pnpm install); done

pnpm run plugins:check       # 所有出树插件的 typecheck/test/build
pnpm run desktop:prepare     # 组装 runtime 与桌面自有插件资源
pnpm desktop:build           # 当前平台的完整安装包

src-tauri/resources/ 是构建生成目录。裸跑 cargo build/cargo check 会因为资源门禁失败;需要先执行 pnpm run desktop:prepare。完整平台步骤见 打包手册

发布与更新

桌面版本同时写在 src-tauri/tauri.conf.jsonsrc-tauri/Cargo.toml。推送匹配的 v<semver> tag 后,Release workflow 会并行构建 macOS 和 Windows,只有两端都成功才生成 latest.json 并推进 GitHub latest 指针。

macOS 流水线还会解析 DMG 的 .DS_Store,核对背景模式、窗口尺寸和图标坐标,再执行公证。发布操作与故障恢复见 Release Runbook

项目文档

  • AGENTS.md:仓库契约、插件边界、runtime 分发和版本纪律
  • Packaging Playbook:macOS/Windows 构建、签名、公证与安装包结构
  • Release Runbook:tag、GitHub Actions、Release 与自动更新
  • Design Notes:关键问题的复现、决策和验证记录

问题与改进建议可以直接提交 Issue 或 Pull Request。

License

MIT

Related plugins