dsh-desktop

by functy23

2 工具与能力github收录于 08-23

Native Tauri v2 desktop shell for the DeepSeek Harness web GUI · 基于 Tauri v2 的 D

安装

dsh plugin --profile web add github:functy23/dsh-desktop

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English 中文

DSH Desktop

由 DeepSeek V4Pro 全量代工

基于 Tauri v2 的 DeepSeek Harness 桌面外壳。它在原生窗口中运行完整的 dsh web GUI——不 fork、不重写任何产品 UI。

**平台支持:**macOS(已验证)· Linux(理论支持——尚未完全测试)

**注意:**作者没有 x86_64 设备,x86_64 版本需自行构建(见「开发运行」)。

行为

  1. 启动一个崩溃安全的 supervisor,在一个空闲回环端口上运行 dsh web 后端。
  2. 等待后端接受连接后,在 http://127.0.0.1:<port>/ 打开一个原生(带标题栏)WebView。
  3. 退出时终止整个后端进程树(优雅 SIGTERM → SIGKILL)。
  4. 如果应用崩溃或被强杀,supervisor 的看门狗会自动回收后端。
  5. 将 DSH_HOME 固定为 ~/.dsh(清除环境中的 DSH_* 变量),与命令行 dsh 共享会话 / 设置 / 凭据。
  6. 打开一个标题为 DSH Desktop 的 1200×800 窗口,使用原生标题栏(带装饰的窗口)。

环境要求

  • Rust(稳定版):curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Node ^22.19 || >=24 与 pnpm
  • macOS:Xcode 命令行工具
  • Linux(理论支持):Tauri 的系统依赖(webkit2gtk-4.1、libayatana-appindicator 等)

开发运行

默认后端命令从源码运行仓库本地的 dsh(位于 /Users/functy/Desktop/deepseek-harness),需要先构建其 web 前端:

# 在 deepseek-harness 中
pnpm --filter @deepseek-ai/dsh-web-frontend build
# 在 dsh-desktop 中
cargo tauri dev

用 DSH_WEB_CMD 覆盖后端命令(空格分隔;字面量 {port} 会被替换):

DSH_WEB_CMD="dsh web --host 127.0.0.1 --port {port}" cargo tauri dev

与上游同步

本项目把 @deepseek-ai/dsh 作为依赖使用,从不修改 harness 源码。与上游同步 = 升级 harness 版本 + 重新构建打包的后端。

后端打包

scripts/prepare-backend.mjs 在 backend/ 下暂存一个自包含后端:

  • backend/bin/node —— 按平台的 Node 运行时(缺失时自动下载)。
  • backend/bin/supervisor —— 崩溃安全的看门狗。
  • backend/node_modules —— @deepseek-ai/dsh 的生产闭包,已剔除打包器和异平台 prebuild。

tauri.conf.json 通过 bundle.resources 打包 ../backend,应用会启动 <resource>/backend/bin/node <resource>/backend/node_modules/@deepseek-ai/dsh/lib/bin.js web。由于 node_modules 是真实目录,harness 的 healProfilesModuleFallback 能正常解析插件包(已端到端验证)。

更早的 @yao-pkg/pkg --sea 单文件方案(build-sidecar.mjs)无法启动 web profile:pkg 把 node_modules 放进虚拟快照,导致基于 profile 的插件解析失败并报 ERR_MODULE_NOT_FOUND。(SIDECAR_DEBUG=1 保留了一个深度打印的诊断入口用于复现。)

许可证

MIT

原始 README: https://github.com/functy23/DSH-Desktop/blob/main/README.zh.md ↗