Back to home

1lyygit

dsh-launcher

Windows launcher for DeepSeek Harness running in WSL2 (dsh)

Stars
1
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

DeepSeek Harness Launcher

一个 Windows 桌面端,用来一键启动 / 关闭跑在 WSL2 Ubuntu 里的 DeepSeek Harness(dsh)

为什么要做它

dsh 本身是命令行 + Web UI(dsh web),官方没有桌面端。本项目只做一件事:

  • 双击快捷方式 → 自动在 WSL2 Ubuntu 里拉起 dsh(复用你已有的 ~/dsh-app 安装和数据目录 ~/.dsh)→ 弹出窗口加载 Web UI;
  • 点窗口右上角 X → 把 WSL 里的 dsh 进程和端口一并清干净,不留下后台服务。

没有加载页、没有多余功能,就是一个干净的"启动器 + 窗口壳"。

环境要求

  • Windows 10/11(需自带 WSL2)
  • WSL2 发行版 Ubuntu,且里面已有 dsh 安装:
    • 入口:~/dsh-app/node_modules/@deepseek-ai/dsh/lib/bin.js
    • 数据目录:~/.dsh
    • 端口:5306
  • Node.js 18+(仅开发 / 打包时需要,日常使用不需要)

快速开始

npm install
npm start

打包成单个 exe(双击即用,可拷走):

npm run dist

产物在 dist/DeepSeek-Harness-Launcher-1.0.0.exe

工作原理

Windows 侧                            WSL2 Ubuntu 侧
───────────                          ──────────────
双击 exe                              dsh web 服务
  │ ── wsl.exe 调 scripts/start ──►   node bin.js --profile web --port 5306
  ▼                                    │
Electron 窗口 ◄── localhost:5306 ──────┘
  │
点 X ── wsl.exe 调 scripts/stop ──►   杀 dsh 进程,清空 5306

启动 / 停止脚本全部使用绝对路径,绕开了 wsl.exe 会把 Windows 的 HOME / PATH 传进 WSL 导致命令失效的坑,并用 setsid + </dev/null + 短暂等待保证后台服务稳定存活。

配置

开箱即可用,不写死任何用户名或路径:

  • dsh 入口自动发现:依次查找 ~/dsh-app/node_modules/@deepseek-ai/dsh/lib/bin.js~/node_modules/@deepseek-ai/dsh/lib/bin.js、npm 全局目录、PATH 里的 dsh 命令;
  • WSL 用户自动识别:通过 getent passwd 取当前用户真实家目录,不受 Windows 环境变量污染;
  • 端口:默认 5306

需要覆盖时,设置 Windows 用户环境变量即可:

环境变量作用
DSH_ENTRY指定 dsh 入口文件 / 命令的绝对路径
DSH_PORT修改端口(默认 5306)
DSH_LOG修改 dsh 日志路径(默认 ~/.dsh/dsh-wsl.log

WSL 发行版名不是 Ubuntu 时,改 main.js 顶部的 DISTRO

日志

WSL 里 dsh 的日志在 ~/.dsh/dsh-wsl.log,启动失败时看它。

致谢

  • 图标提取自 DeepSeek Harness 官方 Windows 桌面端;
  • 本项目与 DeepSeek 官方无隶属关系,是社区工具。

License

MIT