(最后更新: 2026-05-01T20:30:00+08:00) AI 工具

Windows 上 Hermes Gateway 怎么静默后台启动:企业微信、日志和 PID 排查指南

这篇文章复盘 Windows 原生环境里 Hermes Gateway 连接企业微信后,如何用计划任务和 wscript.exe 静默后台启动,并用 gateway.pid、gateway_state.json 和日志确认状态。

#Hermes#Windows#企业微信#WeCom#PowerShell#开源工具

需要继续找相关内容?

如果你想继续查工具名、术语、对比页或相关问题,可以直接搜全站,不用回到博客列表页重找。

Quick Summary

核心结论

Windows 原生运行 Hermes Gateway 时,可以用 Windows AI Gateway Silence Run 创建隐藏计划任务,让 hermes gateway run 在后台运行,并通过 gateway.pid、gateway_state.json 和日志确认企业微信连接状态。

适合谁看

适合在 Windows 10/11 上原生安装 Hermes,并用企业微信 WeCom 连接 Hermes Gateway 的用户。

关键判断

核心命令是 install、restart、status、logs、errors、follow;Hermes 不依赖固定 18789 端口,状态以 ~/.hermes/gateway.pid 和 gateway_state.json 为准。

下一步建议

先确认 hermes status 可用,再克隆仓库并运行 .\hermes-gateway install / restart / status。

你将学到

  • + 为什么 Hermes 不能照搬 OpenClaw 的 18789 端口检测
  • + Hermes Windows Silence Run 的隐藏启动方式
  • + 企业微信 WeCom 连接状态应该看哪里
  • + 怎么查看 Hermes Gateway 的 PID、日志和错误日志
  • + 第一次切换后台时遇到 Access is denied 怎么处理

Windows 上原生跑 Hermes Gateway,最常见的尴尬不是“跑不起来”,而是“跑起来以后一直占着一个终端”。

如果你已经把 Hermes 接到了企业微信,执行:

hermes gateway run

它可以正常启动,但这个 PowerShell / CMD 窗口就得一直开着。关掉窗口,Gateway 也会跟着退出。

Windows AI Gateway Silence Run 里的 Hermes 脚本,就是为这个场景做的。

本次排查环境和证据边界

项目现场记录
系统环境Windows 原生环境
接入通道企业微信 WeCom
核心问题Gateway 占前台窗口;窗口关闭后企业微信不再回复
主要证据gateway.pidgateway_state.json、任务计划程序、Hermes 日志
不适用判断不把固定端口监听当作唯一标准,因为 Hermes 不一定暴露本地固定端口

所以这篇不是泛泛介绍 Hermes,而是记录一个很具体的 Windows 现场:企业微信已经接通,但 Gateway 运行方式不稳定,需要把它变成可复盘、可重启、可看日志的后台服务。

为什么 Hermes 不能照搬 OpenClaw 的做法

OpenClaw Gateway 默认有 18789 监听端口,所以可以用端口判断:

Get-NetTCPConnection -LocalPort 18789 -State Listen

Hermes 不一样。尤其是只连接企业微信 WeCom WebSocket 时,本地不一定有一个固定监听端口。

所以 Hermes 的排查重点应该放在:

%USERPROFILE%\.hermes\gateway.pid
%USERPROFILE%\.hermes\gateway_state.json
%USERPROFILE%\.hermes\logs\agent.log
%USERPROFILE%\.hermes\logs\errors.log

也就是说,判断 Hermes 是否正常,不是看某个端口,而是看 PID、真实 Windows 进程、平台状态和日志。

Hermes 排障时先看这四层

层级看什么常见问题
Gateway 进程gateway.pid 对应的 Windows 进程是否存在PID 文件还在,但进程已经退出
计划任务Hermes Gateway 任务是否存在、action 是否正确任务创建了,但没有触发或被权限拦住
平台状态gateway_state.json 里的 WeCom 状态Gateway 在跑,但企业微信连接断开
日志agent.logerrors.logtoken、网络、权限或依赖错误

企业微信发消息不回复时,先跑这一组最小复盘命令:

.\hermes-gateway status

Get-Content "$env:USERPROFILE\.hermes\gateway_state.json" -Raw

$pidPath = "$env:USERPROFILE\.hermes\gateway.pid"
if (Test-Path $pidPath) {
  Get-Process -Id (Get-Content $pidPath) -ErrorAction SilentlyContinue
}

.\hermes-gateway errors

这几步能快速区分:是 Gateway 没跑、计划任务没生效、企业微信通道掉线,还是 Hermes 自己报错。

首次使用

先确认 Hermes 在当前 PowerShell 里可用:

hermes status

然后克隆工具仓库:

git clone https://github.com/kunpeng-ai-lab/windows-ai-gateway-silence-run.git
cd windows-ai-gateway-silence-run

安装隐藏计划任务:

.\hermes-gateway install

切到静默后台运行:

.\hermes-gateway restart

查看状态:

.\hermes-gateway status

正常情况下,你会看到类似:

Task name       : Hermes Gateway
Task state      : Ready
Runtime source  : scheduled task
Gateway PID     : 12345
Gateway state   : running
Platforms:
  wecom: connected

常用命令

查看状态:

.\hermes-gateway status

查看普通日志:

.\hermes-gateway logs

查看错误日志:

.\hermes-gateway errors

实时跟随日志:

.\hermes-gateway follow

停止后台 Gateway:

.\hermes-gateway stop

卸载计划任务:

.\hermes-gateway uninstall

它实际做了什么

脚本会创建一个 Windows 计划任务:

Hermes Gateway

计划任务执行:

C:\Windows\System32\wscript.exe

wscript.exe 再隐藏运行:

%USERPROFILE%\.hermes\start-gateway-hidden.ps1

真实 Gateway 命令仍然是:

hermes gateway run --replace --accept-hooks

隐藏启动器的外层日志在:

%USERPROFILE%\.hermes\logs\gateway-hidden-yyyy-MM-dd.log

Access is denied 怎么办

第一次从前台 hermes gateway run 切到静默后台时,如果旧进程是由更高权限的终端启动的,普通 PowerShell 可能无法停止它。

这时状态里可能显示:

Runtime source  : external or foreground process

处理方式很简单:

  1. 手动关闭那个旧的 Hermes 前台终端;
  2. 回到工具目录;
  3. 再执行:
.\hermes-gateway restart
.\hermes-gateway status

之后就会由计划任务接管。

注意日志安全

企业微信和其他消息平台的报错日志里,可能出现 token、secret、webhook、cookie 或用户 ID。

公开求助前,至少先检查:

token
secret
app_secret
webhook
authorization
cookie

不要把完整 .env 或完整日志直接贴到公开平台。

和上游 PR 的关系

这类问题后来也整理成了给 Hermes 上游的 Windows best-effort 支持 PR。它关注的是同一条链路:Windows 原生环境里,Gateway 如何后台运行、如何写状态、如何在计划任务里尽量自动恢复。

Hermes PR 15846 evidence

这里也要讲清楚边界:这不是宣称 Hermes 已经把 Windows 原生环境做成完整官方支持平台,而是把我们真实遇到的企业微信 Gateway 场景,收敛成可审查的脚本、状态文件和恢复策略。对普通用户来说,最有价值的是这三点:

  • 不再依赖一个必须常开的前台 PowerShell 窗口;
  • gateway.pidgateway_state.json 和日志判断真实状态;
  • 任务计划程序只做 best-effort 恢复,真正排障仍然要看日志和进程。

相关链接

继续延伸

要点总结

  • - Hermes Gateway 没有固定本地监听端口,不能只靠 Get-NetTCPConnection 判断
  • - 更可靠的状态来源是 ~/.hermes/gateway.pid、gateway_state.json 和 ~/.hermes/logs/
  • - 隐藏启动器真实执行 hermes gateway run --replace --accept-hooks
  • - 如果旧前台进程权限更高,第一次需要手动关闭旧终端一次
  • - 公开日志前必须检查 token、secret、webhook、cookie 等敏感字段

评论