ZK-Andy/dotnet-deepseek-harness-desktop 预览 preview

ZK-Andy/dotnet-deepseek-harness-desktop

Desktop桌面端 ⭐ 2 MIT Clients & Launchers客户端与启动器

DeepSeek Harness for .NET 桌面客户端——online-first:首启自动下载并准备运行时,无需手动安装(Ryn 原生 WebView),支持 macOS / Windows / Linux

Project Overview项目介绍

DeepSeek Harness Desktop for .NET is a Ryn-based desktop client bundling the full Node runtime and dsh closure, enabling use without separate Node or CLI installation. It suits users wanting a GUI for dsh with system tray, single-instance lock, auto-update, and crash self-recovery. Note: the project is in early preview with unsigned packages triggering Gatekeeper/SmartScreen warnings, and cross-version data compatibility is not guaranteed.

DeepSeek Harness Desktop for .NET 是一款基于 Ryn(C# 原生 WebView 框架)的桌面客户端,内置完整 Node 运行时与 dsh 闭包,下载即用,免配环境。适用于希望以图形界面操作 dsh 而又不想单独安装 Node/CLI 的用户,支持系统托盘、单实例、自更新与崩溃自愈。注意:项目处于早期预览阶段,无签名包可能触发 Gatekeeper/SmartScreen 告警,跨版本数据不保证兼容。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:ZK-Andy/dotnet-deepseek-harness-desktop

ZK-Andy/dotnet-deepseek-harness-desktop 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

DeepSeek Harness Desktop for .NET

DeepSeek Harness Desktop for .NET

English · 中文

DeepSeek Harness(MIT)的 .NET 桌面客户端——简单壳,依赖全机唯一的一份全局 dsh:无则装、落后则更新到 @alpha。

功能 · 下载安装 · 用户指南 · 常见问题 · 工作原理 · 开发 · 架构 · MIT License

release downloads stars License: MIT build & test tests coverage platform .NET

DeepSeek Harness(MIT)的 .NET 桌面客户端,基于 Ryn(Tauri-for-C# 原生 WebView 框架)。桌面壳是简单壳,依赖系统全局 node + 全局 dsh(都在用户 PATH 上,npm install -g @deepseek-ai/dsh@alpha 装/更新,桌面与终端共用同一套、无版本分叉)。首次启动检测全局 dsh:没有 → 装;落后 @alpha → 更新到 @alpha;已最新 → 直接用。node 走系统全局(用户那份 node/npm,或没有则桌面下载最新官方 node 装到系统全局位供共用),桌面不自备私有 node / 私有 PATH。

功能

  • ⚡️ 简单壳、依赖系统全局 node + 全局 dsh(online-first) — 安装器只带壳(约 30MB 级),不运输行时闭包。首启检测用户 PATH 上的全局 dsh:没有 → 经全局 node 的 npm install -g @deepseek-ai/dsh@alpha 装到系统全局位;落后 @alpha → 更新到 @alpha;已最新 → 直接用。dsh 跟随 alpha 预发布通道,不钉版。node 检查/下载只在"需要确保 dsh"时做一次(复用系统全局 node;无则桌面下载最新官方 node 装到系统全局位,写系统位需 sudo 时给出手动安装命令),不做重复联网。壳在共享数据目录 ~/.dsh 以专属 desktop profile 拉起 dsh。会话/凭据/插件与 CLI、TUI、Web 同一宇宙互通

  • ⌨️ 终端命令(CLI shim 注册) — dsh 已全局在 PATH;壳把内容恒定的 pnpm shim 注册到用户 PATH(Windows %LOCALAPPDATA%\deepseek-harness\bin + HKCU\Environment\Path 幂等合并;mac/linux ~/.local/bin + shell rc 幂等块;dsh 无需 shim),终端可直接用 pnpm。不覆盖用户自己的同名命令。

  • 🔒 原生轻量壳 — C# 后端跑在系统 WebView(WebView2 / WKWebView / WebKitGTK),NativeAOT 就绪,能力沙箱 deny-by-default(ryn.json)。

  • 🔄 崩溃自愈与会话回归 — 壳监督运行时子进程:崩溃 → 恢复页(原因/stderr 尾部 + 导出诊断 + 退出应用)→ 自动重启 → 同一窗口回到新 URL;端口保持稳定,Web UI origin(及页面级会话记忆)存活——崩溃或重启后回到之前的对话。插件市场更新插件后的重启走接力收养优先:市场自重启拉起的续任者被壳直接收养,单进程、单导航,不再有注定失败的竞争启动与数十秒恢复屏。例外:首选端口被本应用认不出归属的程序占用时(其他程序、其他 profile 的 dsh,或归属判不出的残留 dsh),本次启动漂移到新端口——origin 随之改变,页面级会话记忆不再保留;若这次漂移发生在页面已加载之后(崩溃恢复、市场接力的重启),该会话内设置页的更新、开机自启、关闭时最小化到托盘、导出诊断信息还会失效——重启应用恢复。

  • 💓 页面健康监护(假活看门狗) — 壳侧只读探针轮询「dsh 进程在跑但页面空白」的假活形态(不注入脚本、不依赖桌面伴生插件存活);连续空白达阈值即在预算内触发一次有界 reload 自愈,耗尽转观测、成功恢复复位预算——防误报引发无限重载循环。

  • ⬆️ 自更新 — 启动后台检查一次 + 设置页手动检查;发现新版本一键安装并自动重启(安装包 SHA256 强校验;macOS 引导手动更新),详见下方「自动更新」

  • 🧩 插件市场 + 版本感知升级 + registry 自管dsh-market 经首启引导页「插件准备」步(推荐 chip + 确认/跳过 + 日志回流)以 registry 安装到桌面专属 profile(~/.dsh/profiles/dotnet-desktop),确认后与 dsh 内核一次就位(联网;跳过可稍后在应用内市场补装);随包桌面伴生插件按版本感知升级——内置版本更新即自动升级、绝不降级;市场为 registry 形态(与用户自装完全等价:上游发新版市场内即提示,无需等桌面发版);1200+ 插件可搜一键装。

  • 🖥️ 系统托盘 — 关闭窗口默认最小化到托盘(可在设置改为直接退出),托盘菜单提供显示主窗 / 检查更新 / 退出(随 dsh 语言中英切换);退出经有序编排,运行时子进程干净回收。

  • 🚀 单实例仲裁 — 应用运行中再次点击启动器/图标,唤起既有主窗而非新开重复实例。

  • 🔁 开机自启 — 设置页一键开关(Linux XDG autostart / Windows 注册表 Run / macOS LaunchAgents)。

  • 🖼️ 原生图标 / Wayland 就绪 — 图标随包入 hicolorryn.json:identifierStartupWMClass 均为 io.github.ZK-Andy.dotnet-deepseek-harness-desktop,任务栏正确关联。

下载安装

Releases 下载对应平台安装包(附 SHA256SUMS.txt 校验):

平台 架构 包格式
Linux x64 / arm64 deb…_linux-amd64.deb / …_linux-arm64.deb)/ rpm…_linux-x86_64.rpm / …_linux-aarch64.rpm
macOS arm64 / x64 dmg
Windows x64 exe 安装器(…-setup.exe

预览版提示:项目处于早期预览阶段,可能存在破坏性变更(数据目录布局、配置格式、运行时组件版本等),不保证跨版本数据兼容;升级前请自行备份重要会话与配置。

升级注意:桌面 profile 目录为 profiles/dotnet-desktop——升级时旧 profiles/desktop 会在首次启动自动改名(插件与端口记忆保留,无需手动操作);终端手动操作请用 dsh --profile dotnet-desktop,详见 docs/user-guide.md

未签名说明:本项目开源、不做付费签名,发布包未签名。macOS 首次打开若见 Gatekeeper「来自身份不明的开发者」→ 右键「打开」或 系统设置 → 隐私与安全性 →「仍要打开」;Windows 若见 SmartScreen「未知发布者」→「更多信息」→「仍要运行」。开发/内部可用 SELF_SIGN=1 自签消除本机告警,用法见 docs/development.md

测试状态:单元测试由 CI 自动跑(dotnet test 全绿,见上方徽章);真机验收至今只在 Linux x64 rpm 包上做过——debLinux arm64macOSdmg)、Windowssetup.exe均无真机验证,仅经 CI 编译/打包/冒烟。macOS x64 / Windows 真机针对性测试等待社区支持(本地无 mac Intel x64 / Windows 真机)。安装器、自更新、首启补装等依赖真机的链路请按 docs/testing.md 列出的边界对待,尝鲜前做好备份。

自动更新

  • 启动时后台检查一次新版本(不轮询、不打扰);也可在 设置 → 桌面设置 手动检查。
  • 发现新版本后,侧栏底部出现下载按钮——点击即下载校验、一键安装并自动重启Linux 会弹一次系统授权)。
  • 安装包落地前经 SHA256SUMS.txt 强校验,校验失败拒绝安装。
  • macOS 暂不支持应用内静默更新——检测到新版本时会提示手动下载 dmg

工作原理

┌──────────────────────────────────────────────────────┐
│ Ryn 壳(C#,系统 WebView)                            │
│   拉起 dsh → 解析 dsh web: URL → 加载 Web UI           │
│   崩溃监督 → 稳定端口重启 → 回到之前对话                 │
└─────────────────────────┬────────────────────────────┘
                          │ spawn + 共享 ~/.dsh · desktop profile
┌─────────────────────────▼────────────────────────────┐
│ 运行时(全局 dsh,简单壳)                               │
│   PATH 上的 @deepseek-ai/dsh@alpha(无则装/落后则更新) │
│   dsh web(localhost)                                │
└──────────────────────────────────────────────────────┘

(详细架构见 docs/architecture.md。)

开发

# 前置:.NET 10 SDK;Linux 需 WebKitGTK
# 运行(开发环境必须带 DSH_DESKTOP_DEV=1——dev 隔离 home 与单实例后缀;无 PATH dsh 时走首启引导,需网络)
DSH_DESKTOP_DEV=1 dotnet run --project src/DeepSeek.Harness.Desktop

# 测试
dotnet test dotnet-deepseek-harness-desktop.slnx

# WebView 调试器(默认关)
DSH_DEVTOOLS=1 dotnet run --project src/DeepSeek.Harness.Desktop

运行时需要可达的 DeepSeek provider 凭据(如 DEEPSEEK_API_KEY)才能提供 Web UI。

目录

├── src/DeepSeek.Harness.Desktop/              # Ryn 壳(Presentation):组合根 + UI 桥
├── src/DeepSeek.Harness.Desktop.Core/         # 纯逻辑(零外层引用)
├── src/DeepSeek.Harness.Desktop.Infrastructure/  # 适配器(Ryn/native、dsh 进程、文件/网络、更新)
├── tests/DeepSeek.Harness.Desktop.Tests/          # xunit:壳/组合根
├── tests/DeepSeek.Harness.Desktop.Core.Tests/     # xunit:Core
├── tests/DeepSeek.Harness.Desktop.Infrastructure.Tests/  # xunit:Infrastructure(三工程计数见 docs/testing.md 基线行)
├── scripts/                                    # 门禁 + package-*.sh + release-preflight.sh + release-notes.sh
└── docs/architecture.md、testing.md、development.md

许可与致谢

上一个 Prev dsh-data-cleaning-agent 下一个 Next dsh-plugin-market