返回上一页

DeepSeek Harness Rust启动器

DeepSeek Harness Launcher

DeepSeek Harness Launcher(简称 DSHL)是一款使用 Rust 和 Tauri 开发的桌面 启动器,用于启动 dsh Web 服务并在原生窗口中打开 DeepSeek Harness Web UI。

它将以下命令行流程封装为桌面应用:

sh
dsh web

用户不需要每次打开终端、手动等待服务启动或单独管理日志。启动器会自动解析 dsh 运行方式,启动本地服务,等待 HTTP 接口就绪,然后加载 Web UI。

核心功能

自动启动 dsh

启动器优先使用系统 PATH 中的全局 dsh。如果没有检测到全局命令,则回退到:

sh
npx -y @deepseek-ai/dsh

Windows 使用隐藏的 cmd /d /c 处理 npm 命令 shim,Linux 和 macOS 直接启动 dsh 或 npx。

服务就绪检测

DSHL 不会在进程刚创建时立即加载 Web UI,而是持续检查本地 HTTP 接口。只有 服务能够响应后,窗口才会进入 Web 页面。

默认服务地址为:

text
http://127.0.0.1:3080

启动器只接受 loopback 地址,不管理远程地址或 HTTPS 地址。

日志和错误提示

服务日志默认保存到:

text
~/.dsh/dsh-launcher/dsh.log

如果 dsh 在启动期间退出,界面会显示错误信息和日志尾部,便于定位 Node.js、 插件、端口或配置问题。

端口冲突处理

当配置端口已被其他进程占用时,启动器会显示端口冲突状态,并提供结束监听进程 后重试的入口。该操作只应在确认目标进程可以终止时使用。

系统托盘和进程生命周期

关闭主窗口时,应用默认隐藏到系统托盘,后台 dsh 服务继续运行。通过托盘菜单 选择 Exit 时,启动器会停止服务并退出应用。

DSHL 自身也只允许运行一个实例。如果应用已经隐藏在后台,再次点击启动器时, 不会留下第二个常驻 DSHL 实例,也不会重复启动 dsh;系统会把这次启动请求交给 已有实例,由已有实例显示、取消最小化并聚焦主窗口。

Windows 使用 taskkill /F /T 终止命令包装进程及其子进程。启动器还会保存服务 PID 和端口,在异常退出后尝试识别并接管上一次留下的服务,避免重复启动。

窗口状态和诊断

应用会保存窗口位置、尺寸和最大化状态,支持多显示器环境。诊断功能会导出经过 脱敏处理的 ZIP 文件,敏感环境变量和凭据不会直接写入诊断内容。

插件管理

DSHL 不负责安装或更新 DSH 插件。插件仍由 dsh CLI 和 pnpm 管理,profile、锁文件、 插件依赖和 profile layer 均由 dsh 维护。

准备 pnpm:

sh
corepack enable
corepack prepare pnpm@latest --activate
pnpm --version

安装 web profile 插件:

sh
dsh plugin --profile web add <plugin-package>

例如:

sh
dsh plugin --profile web add @openma/deepseek-harness-tui@0.2.1

没有全局 dsh 时,可以使用 npm 回退包:

sh
npx -y @deepseek-ai/dsh plugin --profile web add <plugin-package>

根据当前 dsh CLI 契约,插件只有在 manifest 中声明 dsh.bundle.patch 时,才会 自动加入 profile layer。DSHL 不会改写用户的 profile、package.json、锁文件或 插件目录。

技术实现

  • Rust:负责服务进程、日志、状态文件、端口检测和平台相关逻辑。
  • Tauri 2:负责原生窗口、系统托盘、窗口状态和前后端通信。
  • WebView:加载 dsh Web UI,前端页面位于 web/index.html。
  • 本地 IPC:前端通过 Tauri commands 调用服务启动、停止、状态检测和诊断功能。

项目不重新实现 dsh,也不将 Node.js、dsh 或 DSH 插件打包进安装包。这样可以 保留用户已有的 dsh profile,同时减少启动器与 dsh 版本和插件生态之间的耦合。

运行源码

环境准备:

  • Rust 和 Cargo
  • Node.js 18+、npm/npx
  • 全局 dsh,或允许启动器使用 npm 回退方案
  • Windows 需要 WebView2 Runtime

在项目根目录执行:

sh
cargo run --manifest-path src-tauri/Cargo.toml

构建 Release 二进制:

sh
cargo build --release --manifest-path src-tauri/Cargo.toml

构建安装包

安装 Tauri CLI:

sh
cargo install tauri-cli --version "^2"

构建当前平台可用的安装包:

sh
cargo tauri build

Windows 安装包通常位于:

text
src-tauri/target/release/bundle/msi/*.msi
src-tauri/target/release/bundle/nsis/*-setup.exe

只构建某一种 Windows 安装包:

powershell
cargo tauri build --bundles nsis
cargo tauri build --bundles msi

平台支持

本软件理论上支持 Windows、Linux 和 macOS。

当前开发和验证环境为 Windows,已完成 Windows 的源码编译、测试、格式检查、 Clippy 和 Release 构建验证。当前没有 Linux 或 macOS 设备,因此这两个平台的 原生构建和运行行为尚未验证。Linux/macOS 用户需要在对应原生系统上自行构建和 进行冒烟测试。

Linux 和 macOS 的构建命令与 Windows 相同:

sh
cargo build --release --manifest-path src-tauri/Cargo.toml

生成应用包时使用:

sh
cargo tauri build

免责声明

DeepSeek Harness Launcher 是独立的第三方开源软件,与 DeepSeek Harness、 DeepSeek、深度求索公司及其关联方不存在任何关联、授权、赞助、合作或官方关系。 本项目不代表上述组织。相关名称、商标和其他知识产权归各自权利人所有。

SEARCH ctrl / ⌘ + K

输入关键词,寻找感兴趣的文章。

↑↓ 选择 ↵ 阅读 esc 关闭