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)服务,不用再敲命令。

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 或杀毒软件可能会提示,选择“仍要运行”即可;也可以自行编译避免信任问题。
快速开始
- 根据目标电脑是否已安装 .NET 10,下载对应的 exe
- 双击运行
- 点击「DSH 启动」
- 等待状态指示灯变绿,然后点击「打开 WebUI」
- 首次使用前请确认 WSL 里已装好 DSH,且
dsh web命令可以直接执行
配置说明
当前版本中,以下配置是编译期常量,修改后需要重新编译:
| 配置 | 位置 | 说明 |
|---|---|---|
WslDistro | Form1.cs 顶部 | WSL 发行版名称;留空 = 使用默认发行版 |
DshCommand | Form1.cs 顶部 | WSL 内启动 DSH 的命令,默认 dsh web |
WebUiPort | Form1.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.exeDshWslManager-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 通过。