(最后更新: 2026-05-09T13:10:00+08:00) AI 工具

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

Hermes Gateway 后台运行怎么做?本文复盘 Windows 原生环境连接企业微信后,如何用计划任务和 wscript.exe 静默启动,并用 gateway.pid、gateway_state.json、日志和 PID 判断为什么企业微信不回复。

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

Find related content

Search the site for tools, terms, comparison pages, or related troubleshooting notes without going back to the blog index.

Quick Summary

Main answer

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

Who should read this

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

Key check

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

Next step

先确认 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 Gateway 后台运行”或“企业微信发给 Hermes 没反应”,先别急着改模型配置:先确认 Gateway 进程、计划任务、gateway_state.json 和 WeCom 连接状态。

如果你已经把 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 恢复,真正排障仍然要看日志和进程。

相关链接

Continue exploring

要点总结

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

Comments