悦书阁 悦书阁
首页
学习笔记
技术文档
AI技术
更多
  • 分类
  • 标签
  • 归档

Felix

大道至简 知易行难
首页
学习笔记
技术文档
AI技术
更多
  • 分类
  • 标签
  • 归档
  • 入门指南

  • OpenClaw系列

  • Claude-Code系列

  • MCP与Skill

  • 开发资源

  • Hermes系列

    • Linux 安装 Hermes Agent
    • WSL 安装与常用命令
    • Telegram 机器人创建与接入指南
    • Windows 开机自动启动 Hermes
      • 前言
      • 问题分析
        • Windows 重启后的现状
        • 解决思路
      • 完整配置步骤
        • 第一步:查看 WSL 分发版名称
        • 第二步:获取 Hermes 绝对路径
        • 第三步:清理旧任务(如有)
        • 第四步:创建开机自启任务
      • 进阶配置
        • 启动 Hermes Gateway
        • 同时启动多个服务
        • 带环境变量的启动
      • 验证与测试
        • 手动测试任务
        • 查看任务状态
        • 重启验证
      • 常见问题
        • 任务执行但 Hermes 未启动
        • WSL 启动但立即退出
        • 任务计划报错
        • 用户登录后 Hermes 才启动
      • 管理任务
        • 查看所有任务
        • 禁用任务
        • 启用任务
        • 删除任务
        • 修改任务
      • 配置对比
      • 配置文件速查
        • 完整 PowerShell 命令
      • 相关链接
      • 总结
  • AI技术
  • Hermes系列
liufei379
2026-07-09
目录

Windows 开机自动启动 Hermes

# 前言

在 Linux 服务器上,我们通常使用 systemd 或 cron 的 @reboot 来实现开机自启。但在 Windows + WSL 环境下,情况稍微复杂一些:

  • Windows 重启后,WSL 默认不会自动启动
  • 即使 WSL 启动了,内部的 Hermes 也不会自动运行

本文将介绍如何通过 Windows 任务计划程序,实现"Windows 开机 → WSL 自动启动 → Hermes 自动运行"的完整链路。


# 问题分析

# Windows 重启后的现状

默认情况下,Windows 重启后:

  1. WSL 不启动 - 直到用户第一次打开 WSL 终端,或有程序访问 WSL 网络
  2. Hermes 不运行 - 即使 WSL 启动了,用户目录下的脚本也不会自动执行

注意

使用 NT AUTHORITY\SYSTEM 账户启动 wsl.exe 时,Windows 只唤醒 Linux 内核,不会自动执行 .bashrc 或其他用户脚本。

# 解决思路

将"启动 WSL"和"启动 Hermes"合并为一条命令,让 Windows 任务计划直接执行:

Windows 开机 → 任务计划触发 → 执行 WSL 命令 → WSL 内部启动 Hermes
1

# 完整配置步骤

# 第一步:查看 WSL 分发版名称

在 PowerShell 中运行:

wsl -l -v
1

输出示例:

NAME            STATE           VERSION
Ubuntu          Running         2
Ubuntu-24.04    Stopped         2
1
2
3

记住你要使用的分发版名称(如 Ubuntu 或 Ubuntu-24.04)。

# 第二步:获取 Hermes 绝对路径

进入 WSL,查找 Hermes 的安装路径:

# 进入 WSL
wsl -d Ubuntu

# 查看 hermes 命令位置
which hermes

# 或查看实际 launcher 路径
ls -la ~/.hermes/hermes-agent/venv/bin/hermes
1
2
3
4
5
6
7
8

常见路径:

安装方式 路径
普通用户 /home/<用户名>/.hermes/hermes-agent/venv/bin/hermes
Root 模式 /root/.hermes/hermes-agent/venv/bin/hermes
全局安装 /usr/local/bin/hermes

警告

必须使用绝对路径,不能使用 ./hermes 或 ~/hermes 这种相对路径!

# 第三步:清理旧任务(如有)

如果之前配置过但没有生效,先删除旧任务:

# PowerShell(管理员)
Unregister-ScheduledTask -TaskName "StartWSLHermes" -Confirm:$false
1
2

# 第四步:创建开机自启任务

在 PowerShell(管理员)中运行:

# 创建开机自启任务
Register-ScheduledTask -TaskName "StartWSLHermes" `
    -Trigger (New-ScheduledTaskTrigger -AtStartup) `
    -Action (New-ScheduledTaskAction -Execute "wsl.exe" `
        -Argument "-d Ubuntu -u root -- nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes > /dev/null 2>&1 &") `
    -User "NT AUTHORITY\SYSTEM"
1
2
3
4
5
6

参数说明:

参数 说明
-TaskName 任务名称,自定义即可
-Trigger -AtStartup 开机时触发
-Execute "wsl.exe" 执行 WSL
-Argument WSL 参数(关键!)
-User "NT AUTHORITY\SYSTEM" 使用系统账户运行(无需登录)

Argument 参数详解:

-d Ubuntu                      # 指定分发版名称
-u root                        # 使用 root 用户执行
--                             # WSL 参数结束标记
nohup                          # 后台运行,不随终端关闭而退出
/home/felix/.hermes/.../hermes # Hermes 绝对路径(必须修改!)
> /dev/null 2>&1 &             # 重定向输出,完全后台化
1
2
3
4
5
6

提示

请务必修改:

  1. -d Ubuntu → 改成你的分发版名称
  2. /home/felix/.hermes/... → 改成你的 Hermes 绝对路径

# 进阶配置

# 启动 Hermes Gateway

如果需要启动 Gateway(而非 CLI):

Register-ScheduledTask -TaskName "StartWSLHermesGateway" `
    -Trigger (New-ScheduledTaskTrigger -AtStartup) `
    -Action (New-ScheduledTaskAction -Execute "wsl.exe" `
        -Argument "-d Ubuntu -u root -- nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes gateway > /dev/null 2>&1 &") `
    -User "NT AUTHORITY\SYSTEM"
1
2
3
4
5

# 同时启动多个服务

创建一个启动脚本,一次性启动多个服务:

# 在 WSL 内创建 ~/start-hermes.sh
#!/bin/bash
cd /home/felix
nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes gateway > /tmp/hermes-gateway.log 2>&1 &
nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes desktop > /tmp/hermes-desktop.log 2>&1 &
1
2
3
4
5

然后任务计划执行脚本:

Register-ScheduledTask -TaskName "StartWSLHermes" `
    -Trigger (New-ScheduledTaskTrigger -AtStartup) `
    -Action (New-ScheduledTaskAction -Execute "wsl.exe" `
        -Argument "-d Ubuntu -u root -- bash /home/felix/start-hermes.sh") `
    -User "NT AUTHORITY\SYSTEM"
1
2
3
4
5

# 带环境变量的启动

如果 Hermes 需要特定环境变量:

Register-ScheduledTask -TaskName "StartWSLHermes" `
    -Trigger (New-ScheduledTaskTrigger -AtStartup) `
    -Action (New-ScheduledTaskAction -Execute "wsl.exe" `
        -Argument "-d Ubuntu -u root -- export HERMES_HOME=/home/felix/.hermes && nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes gateway > /dev/null 2>&1 &") `
    -User "NT AUTHORITY\SYSTEM"
1
2
3
4
5

# 验证与测试

# 手动测试任务

# 手动触发任务测试
Start-ScheduledTask -TaskName "StartWSLHermes"

# 等待几秒后检查 WSL
wsl -l -v

# 进入 WSL 检查进程
wsl -d Ubuntu
ps aux | grep hermes
1
2
3
4
5
6
7
8
9

# 查看任务状态

# 查看任务详情
Get-ScheduledTask -TaskName "StartWSLHermes" | Get-ScheduledTaskInfo

# 查看任务历史
Get-ScheduledTask -TaskName "StartWSLHermes" | Select-Object *
1
2
3
4
5

# 重启验证

# 重启 Windows
Restart-Computer

# 重启后检查
wsl -l -v          # WSL 应在运行
wsl -d Ubuntu ps aux | grep hermes  # Hermes 应在运行
1
2
3
4
5
6

# 常见问题

# 任务执行但 Hermes 未启动

原因: 路径错误或权限不足

解决:

# 检查路径是否正确
ls -la /home/felix/.hermes/hermes-agent/venv/bin/hermes

# 检查执行权限
chmod +x /home/felix/.hermes/hermes-agent/venv/bin/hermes
1
2
3
4
5

# WSL 启动但立即退出

原因: nohup 配置不正确

解决: 确保 > /dev/null 2>&1 & 在命令末尾

# 任务计划报错

查看错误:

# 查看任务历史日志
Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational" |
    Where-Object {$_.Message -like "*StartWSLHermes*"} |
    Select-Object -Last 10
1
2
3
4

# 用户登录后 Hermes 才启动

原因: 任务使用了当前用户而非 SYSTEM

解决: 确保使用 -User "NT AUTHORITY\SYSTEM"


# 管理任务

# 查看所有任务

Get-ScheduledTask | Where-Object {$_.TaskName -like "*WSL*"}
1

# 禁用任务

Disable-ScheduledTask -TaskName "StartWSLHermes"
1

# 启用任务

Enable-ScheduledTask -TaskName "StartWSLHermes"
1

# 删除任务

Unregister-ScheduledTask -TaskName "StartWSLHermes" -Confirm:$false
1

# 修改任务

# 更新执行路径
$action = New-ScheduledTaskAction -Execute "wsl.exe" `
    -Argument "-d Ubuntu-24.04 -u root -- nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes gateway > /dev/null 2>&1 &"
Set-ScheduledTask -TaskName "StartWSLHermes" -Action $action
1
2
3
4

# 配置对比

方案 优点 缺点
任务计划(本文) Windows 启动即运行,无需登录 配置稍复杂
WSL cron @reboot Linux原生方式 需要 WSL 先启动
启动脚本 简单直观 需要手动登录后执行

# 配置文件速查

# 完整 PowerShell 命令

# 1. 查看分发版
wsl -l -v

# 2. 清理旧任务(如有)
Unregister-ScheduledTask -TaskName "StartWSLHermes" -Confirm:$false

# 3. 创建任务
Register-ScheduledTask -TaskName "StartWSLHermes" `
    -Trigger (New-ScheduledTaskTrigger -AtStartup) `
    -Action (New-ScheduledTaskAction -Execute "wsl.exe" `
        -Argument "-d Ubuntu -u root -- nohup /home/felix/.hermes/hermes-agent/venv/bin/hermes gateway > /dev/null 2>&1 &") `
    -User "NT AUTHORITY\SYSTEM"

# 4. 测试任务
Start-ScheduledTask -TaskName "StartWSLHermes"

# 5. 验证
wsl -d Ubuntu ps aux | grep hermes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 相关链接

  • Windows 任务计划程序文档:https://docs.microsoft.com/en-us/windows/win32/taskschd (opens new window)
  • WSL 命令参考:https://docs.microsoft.com/en-us/windows/wsl/basic-commands (opens new window)
  • Hermes 文档:https://hermes-agent.nousresearch.com (opens new window)

# 总结

通过 Windows 任务计划程序 + WSL 命令组合,可以实现 Windows 开机后无需任何手动操作,WSL 和 Hermes 就自动在后台运行。关键点:

  1. 使用 -User "NT AUTHORITY\SYSTEM" 确保开机即运行
  2. 使用 -u root 确保 WSL 内有足够权限
  3. 使用绝对路径指定 Hermes
  4. 使用 nohup 和 > /dev/null 2>&1 & 确保后台化

配置完成后,你的 Hermes Agent 就能像服务器上的服务一样,7×24 小时在线运行。

#Hermes#WSL#Windows#自动启动
Telegram 机器人创建与接入指南

← Telegram 机器人创建与接入指南

最近更新
01
Telegram 机器人创建与接入指南
07-09
02
WSL 安装与常用命令
07-09
03
Linux 安装 Hermes Agent
07-09
更多文章>
Theme by Vdoing | Copyright © 2022-2026 Felix
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式