在使用 WSL 2 开发和运行 Python 项目时,很多开发者都会遇到以下问题:

这是 WSL 2 的默认行为:当虚拟机内没有活跃 Linux 进程时,WSL 会自动关闭以节省资源。
本文将详细介绍如何让 WSL 保持后台运行,并让你的 Hermes Agent 作为系统服务稳定持久运行。
WSL 2 是一个轻量级 Hyper-V 虚拟机。当满足以下任意条件时,它会自动终止:
使用 sleep infinity 等粗暴方式虽然可行,但资源占用较高。最佳实践是启动一个轻量级守护进程(如 D-Bus)来保活。
dbus-launch核心启动命令:
@start /b wsl --exec dbus-launch true
start /b:后台静默运行,不弹出窗口--exec:直接执行命令,不启动交互式 Shelldbus-launch true:启动 D-Bus Session Bus 守护进程(true 命令立即退出),让 WSL 认为有进程在运行,从而保持虚拟机活跃该方案资源占用极低,是目前最优雅的 WSL 后台保活方式。
按 Win + R,输入以下路径打开启动文件夹:
%APPDATA%MicrosoftWindowsStart MenuProgramsStartup
新建文件 wslstart.cmd,内容如下:
@echo off
:: 保持 WSL 后台运行,供 Hermes Agent 使用
start /b wsl -d Ubuntu --exec dbus-launch true
(将 Ubuntu 替换为你实际的发行版名称)
重启电脑后,WSL 将自动在后台运行。
wsl # 最简单方式
wsl -d Ubuntu # 指定发行版
wsl -d Ubuntu -u wanjing # 指定用户名
推荐使用 Windows Terminal 作为日常终端。
Hermes Agent 推荐使用 systemd 管理服务(WSL2 已原生支持)。
sudo vim /etc/wsl.conf
添加以下内容:
[boot]
systemd=true
sudo hermes gateway install --system
# 查看服务状态
sudo systemctl status hermes-gateway.service
wsl -l -v # 查看 WSL 状态
wsl --shutdown # 完全关闭 WSL(释放资源)
wsl -d Ubuntu # 连接到后台实例
通过以下组合方案,我们完美解决了 WSL 退出问题:
wslstart.cmd + dbus-launch → 保持 WSL 后台常驻systemd 服务 → 让 Hermes Agent 自动、重启、持久运行现在即使你关闭所有终端窗口,甚至注销 Windows,Hermes Agent 依然能在后台稳定运行。