DeepSeek Harness Hub
← 返回列表

ZK-Andy/dotnet-deepseek-harness-desktop

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

DeepSeek Harness for .NET…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/16 · 已提供中文文档

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

综合分
30.6
GitHub 分
30.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add ZK-Andy/dotnet-deepseek-harness-desktop
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

面向 .NET 的 DeepSeek Harness 桌面版

English · 中文

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

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

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 就绪 — 图标随包入 hicolor,ryn.json:identifier 与 StartupWMClass 均为 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 包上做过——deb、Linux arm64、macOS(dmg)、Windows(setup.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

许可与致谢

- 本项目:MIT。
- deepseek-harness(MIT)—— 本壳托管的运行时。
- Ryn(MIT)—— 桌面壳框架。
- 打包思路参考 pilot-harness。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(ZK-Andy)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群