Back to home

JxaMe

DshWslManager

WSL / DSH 管理工具:Windows 托盘小工具,管理 WSL 里的 DeepSeek Harness 服务

Stars
0
Language
C#
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

DshWslManager · WSL / DSH 管理工具

Windows 托盘小工具:鼠标点几下,就能在 WSL 里启动 / 关闭 / 重启 DSH(DeepSeek Harness)服务,不用再敲命令。

License .NET Platform GitHub release

主界面

DSH 是什么?

DeepSeek Harness(简称 DSH)是 DeepSeek 的 AI 开发工具。它通常跑在 WSL 的 Linux 环境里,通过 dsh web 命令在 http://127.0.0.1:3080 提供 WebUI。本工具就是管理这个服务的 Windows 侧小助手。

功能特性

  • WSL 启动 / 重启 / 关闭
  • DSH 启动 / 关闭 / 重启(默认命令 dsh web
  • 一键打开 WebUI:http://127.0.0.1:3080
  • 系统托盘常驻:关闭窗口最小化到托盘,托盘菜单可打开 WebUI / 重启 DSH / 退出
  • 状态指示灯每 5 秒自动检测 DSH 是否在运行
  • 「DSH 启动」按钮状态自动切换:运行中显示「DSH 关闭」,点击即可停止
  • 单实例运行:重复启动会提示并退出
  • 操作进行中可点「取消」中止等待

环境要求

  • Windows 10 / 11
  • WSL(推荐 WSL2;WSL1 未做专门适配)
  • WSL 内已安装 DSH,且 dsh web 命令可在 shell 中直接执行
  • 自包含版:Windows 侧不需要安装 .NET
  • 非自包含版:需要 Windows 已安装 .NET 10 Desktop Runtime

下载与安装

Releases 下载最新版,有两个版本:

  • 非自包含版(推荐,默认用户已装 .NET 10)
    • 文件名示例:DshWslManager-win-x64.exe
    • 约 0.8MB
    • 需要目标电脑已安装 .NET 10 Desktop Runtime
  • 自包含版
    • 文件名示例:DshWslManager-win-x64-self-contained.exe
    • 约 50MB
    • 免装 .NET,双击即用

如果仓库还没有 Release,可以按下面的「从源码编译」自行构建。

由于 exe 未进行代码签名,Windows SmartScreen 或杀毒软件可能会提示,选择“仍要运行”即可;也可以自行编译避免信任问题。

快速开始

  1. 根据目标电脑是否已安装 .NET 10,下载对应的 exe
  2. 双击运行
  3. 点击「DSH 启动」
  4. 等待状态指示灯变绿,然后点击「打开 WebUI」
  5. 首次使用前请确认 WSL 里已装好 DSH,且 dsh web 命令可以直接执行

配置说明

当前版本中,以下配置是编译期常量,修改后需要重新编译:

配置位置说明
WslDistroForm1.cs 顶部WSL 发行版名称;留空 = 使用默认发行版
DshCommandForm1.cs 顶部WSL 内启动 DSH 的命令,默认 dsh web
WebUiPortForm1.cs 顶部WebUI 端口,默认 3080

已知限制:后续计划支持配置文件或界面设置,避免每次修改都重新编译。

从源码编译

需要 Windows + .NET 10 SDK。

# 编译
dotnet build -c Release

# 发布自包含单文件 exe(免装 .NET,约 50MB)
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true -o publish

# 发布非自包含单文件 exe(需目标机安装 .NET 10 Desktop Runtime,约 0.8MB)
dotnet publish -c Release -r win-x64 -p:SelfContained=false -p:PublishSingleFile=true -o publish-fd

产物路径:

  • 自包含版:publish/DshWslManager.exe
  • 非自包含版:publish-fd/DshWslManager.exe

发布到 GitHub Releases 时,建议重命名为:

  • DshWslManager-win-x64-self-contained.exe
  • DshWslManager-win-x64.exe

使用说明

  • 操作进行中可点「取消」中止等待
  • DSH 启动/重启后,日志会写入 WSL 内的 ~/dshweb.log
  • WSL 重启 = 先 wsl --shutdown(关闭全部发行版),再重新启动指定发行版
  • 指定了发行版时,WSL 关闭只关闭该发行版(wsl -t <发行版>);未指定时关闭全部
  • 「打开 WebUI」不做就绪检测,直接调用浏览器打开,打不开就打不开
  • 关闭窗口会最小化到系统托盘(不退出),双击托盘图标或从菜单「显示主界面」恢复
  • 单实例运行:重复启动会提示并退出

常见问题(FAQ)

提示找不到 wsl.exe 或 WSL 未安装

请先在 Windows 中安装 WSL:

wsl --install

点击「DSH 启动」后提示命令执行失败

先在 WSL 里手动确认 DSH 能启动:

dsh web

如果提示 command not found,说明 DSH 没有安装或不在 PATH 中。

状态灯一直红色,但 DSH 好像已经启动

可能是端口探测不到,请检查 WSL 内端口是否监听:

ss -ltn | grep 3080
# 或
netstat -ltn | grep 3080

推荐使用 WSL2,Windows 侧通过 127.0.0.1:3080 访问更稳定。

日志在哪里?

  • Windows 侧错误日志:%LOCALAPPDATA%\DshWslManager\errors.log
  • WSL 内 DSH 日志:~/dshweb.log

Windows SmartScreen 提示“已保护你的电脑”

exe 未签名,属于正常提示。可以选择“更多信息 -> 仍要运行”,或者从源码自行编译。

如何彻底退出?

右键系统托盘图标 -> 「退出软件」。

项目结构

DshWslManager/
├── Form1.cs              # 主界面 + WSL/DSH 操作逻辑
├── Form1.Designer.cs     # WinForms 设计器分部类
├── Program.cs            # 入口、单实例、全局异常处理
├── DshWslManager.csproj  # 项目文件
├── README.md
└── LICENSE

Roadmap / 已知限制

  • WslDistro / DshCommand / 端口改为配置文件或界面设置
  • 增加 WSL1 兼容性验证
  • 增加更多自动化测试
  • 考虑代码签名,减少 SmartScreen 误报

贡献

欢迎提交 Issue 和 PR。

本地开发流程:

git clone https://github.com/JxaMe/DshWslManager.git
cd DshWslManager
dotnet build -c Release

提交 PR 前请确保 dotnet build -c Release 通过。

License

MIT