wsl-keepalive:WSL 发行版保活与状态监控插件

前言

在 DeepSeek Harness (DSH) 的使用场景中,如果模型推理或后台服务运行在 WSL 发行版内,该发行版在空闲一段时间后可能被 Windows 系统自动关闭。这会导致 DSH 宿主机与子进程断连,影响任务的连续性。

wsl-keepalive 插件通过在 DSH WebUI 的「设置 → 插件」中提供一个「保活」开关,由宿主机控制 dbus-daemon 的启停,从而防止 WSL 发行版因空闲被关闭。插件同时提供状态监控与配置管理功能。

功能特性

  • 保活开关:在 WebUI 设置中新增「保活」行,可一键开启或关闭 WSL 保活。
  • 状态与 PID 显示:副标题实时显示「已启用 · PID 」或「已停用」,并显示发行版名称。
  • 防重复启动:开启前通过 pgrep -x dbus-daemon 检查,避免重复拉起进程。
  • 精确停止:关闭时仅对内存记录或检测到的特定 PID 执行 kill,不无差别终止系统内所有 dbus-daemon。
  • 自动探测 wsl.exe:若未配置 wsl-exec-path,插件会自动探测 /mnt/c/Windows/System32/wsl.exe。
  • 命令配置校验:编辑发行版名、用户名或 wsl.exe 路径时,系统会进行运行时校验。校验失败将撤销修改并提示红色错误信息;成功则落盘。
  • 配置持久化:配置文件存储在 ${DSH_HOME:-~/.dsh}/wsl-keepalive.json,重启后自动加载。
  • 本地化显示:支持中英文界面切换,默认/回退为英文。

前置条件

运行 DSH Web 的环境需满足以下条件:

  1. WSL 互操作性:能够从 WSL 内部调用 wsl.exe --exec。
  2. wsl.exe 可访问:/mnt/c/Windows/System32/wsl.exe 或通过配置指定的路径存在。
  3. dbus-launch:目标 WSL 发行版内已安装 /usr/bin/dbus-launch。
  4. Node.js 环境:构建工具链运行需要 Node.js 版本 ^22.19.0 或 >=24.0.0。
  5. DSH Web:已通过 Web profile 方式安装插件。

安装与启用

通过以下命令安装插件:

dsh plugin --profile web add "github:TheColdWorld/dsh-wsl-keepalive"

安装完成后重启 DSH。在 WebUI「设置 → 插件」页面即可看到「保活」开关。

配置说明

配置文件位于 ${DSH_HOME:-~/.dsh}/wsl-keepalive.json。插件启动时读取,缺失或字段为空时按默认值处理。

{
  "wsl-dist-name": "",
  "wsl-user-name": "",
  "wsl-exec-path": "/mnt/c/Windows/System32/wsl.exe"
}
  • wsl-dist-name:目标发行版名称。非空时命令追加 -d <name>。若设置后校验发行版不存在,修改将被撤销。
  • wsl-user-name:运行保活进程的用户名。非空时命令追加 --user <name>。若用户不存在,修改将被撤销。
  • wsl-exec-path:wsl.exe 在 Linux 文件系统下的绝对路径。为空时自动探测 /mnt/c/Windows/System32/wsl.exe。若路径无效,修改将被撤销。

在 WebUI「WSL保活」页签的「命令配置」区域修改后失焦或回车即可提交。校验通过则写入文件。

注意事项

  • 本插件为非官方第三方项目,完全由 AI 生成,遵循 MIT 协议分发。
  • 插件以当前 DSH 进程的权限运行,请确保源码与许可证符合你的安全要求。
  • 插件通过 /api/wsl-keepalive/* 端点与宿主通信,宿主需具备 HTTP 载体能力。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜