前言¶
在 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 的环境需满足以下条件:
- WSL 互操作性:能够从 WSL 内部调用
wsl.exe --exec。 - wsl.exe 可访问:
/mnt/c/Windows/System32/wsl.exe或通过配置指定的路径存在。 - dbus-launch:目标 WSL 发行版内已安装
/usr/bin/dbus-launch。 - Node.js 环境:构建工具链运行需要 Node.js 版本
^22.19.0或>=24.0.0。 - 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 载体能力。