DSH Plugin Store
Back to home

xuanyvne

DSHLauncher

DSH全程自行编写的DSH启动器,对默认的3080端口进行操作。相对于从仓库pnpm dsh web,提升一定的启动速度

Stars
1
Language
C#
Created
Aug 14, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

DSH 启动器 (DeepSeek Harness Launcher)

DeepSeek Harness 的桌面启动器:原生 WinForms EXE,基于 Windows 自带的 .NET Framework 4.8 编译,无需安装任何运行时或第三方依赖。

功能

功能说明
启动服务内置智能启动判断:遍历仓库依赖闭包,比较各 workspace 包的 src/ 与 lib/(前端 app 特判 dist/)新鲜度。产物新鲜 → 直接运行内置产物(快速);源码较新 → 自动退回 tsx 源码模式。端口被占用时视为已在运行并打开页面;服务就绪后自动打开浏览器
停止服务终止本启动器拉起的进程树;若端口仍被外部进程占用(如命令行里手动启动的实例),用 netstat 定位并弹窗确认后终止其进程树
检查/获取更新git fetch 源仓库(https://github.com/deepseek-ai/deepseek-harness);直连失败时自动探测本地代理(Clash Verge 7897 等常见端口)并用只读 ls-remote 验证后重试;SSL 证书错误可选项忽略证书重试;落后时确认后拉取(ff-only);无提交历史的 zip 副本用 reset --hard + checkout -B 对齐远端,保留不在远端中的本地文件
构建在仓库目录运行一次 pnpm run build,实时输出日志,完成后弹窗提示成功/失败,并自动刷新启动模式状态
打开页面手动打开 http://127.0.0.1:3080
创建桌面快捷方式在桌面创建指向本 EXE 的快捷方式(带图标)

其他特性:

  • 单实例(Mutex),重复启动只提示已在运行
  • 仓库目录可改,记忆在 %APPDATA%\DSHLauncher\config.json(首次启动未配置时会弹出目录选择)
  • 彩色日志(错误红 / 提示橙 / 成功绿),同时写入 %USERPROFILE%.dsh\desktop-launcher\launcher.log
  • 环境变量 DSH_HTTP_PROXY 可指定首选代理
  • 全局异常处理:崩溃详情写入 exe 同目录 DSHLauncher-crash.log

依赖

  • Windows 10/11(内置 .NET Framework 4.8 与 csc 编译器)
  • node、git、pnpm 需在 PATH 上(运行服务 / 更新 / 构建用)
  • 直连 GitHub 受限的网络环境需本地代理(应用会自动探测)

构建

build.cmd

build.cmd 调用系统自带编译器:

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /nologo /target:winexe /out:DSHLauncher.exe /win32icon:DSHLauncher.ico /r:System.dll /r:System.Core.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.Extensions.dll" src\*.cs

自检

DSHLauncher.exe --selftest
type DSHLauncher-selftest.log

源码结构(src/)

文件职责
Program.cs入口、单实例 Mutex、全局异常处理
MainForm.cs界面、配置记忆、快捷方式、构建流程
SmartLaunch.cs智能启动:依赖闭包 + src/lib 新鲜度判断
HarnessService.cs服务进程管理、端口探测、netstat 定位外部进程
GitUpdater.cs更新流程:fetch / 代理探测 / SSL 重试 / 拉取
AppLog.cs彩色日志(界面 + 文件双写)
Selftest.cs无界面自检

注意:源码为 C# 5 兼容语法(系统自带编译器仅支持到 C# 5,无字符串插值、无 ?. 运算符)。

安全说明

  • 项目不含任何凭据;运行时数据(仓库路径、端口)只写本机 %APPDATA%\DSHLauncher\config.json
  • 仓库目录路径为运行时配置,不写死在源码中
  • 日志仅存本机(%USERPROFILE%.dsh\desktop-launcher\launcher.log),不会上传

提示

  • SmartScreen 可能提示"未知发布者":EXE 未签名,点"仍要运行"即可
  • 停止服务会按端口定位进程,弹窗确认后才终止外部进程,避免误杀
  • 仓库更新(zip 副本场景)会执行 git reset --hard,二次确认后才执行