Windows 上 Hermes Gateway 怎么静默后台启动:企业微信、日志和 PID 排查指南
Hermes Gateway 后台运行怎么做?本文复盘 Windows 原生环境连接企业微信后,如何用计划任务和 wscript.exe 静默启动,并用 gateway.pid、gateway_state.json、日志和 PID 判断为什么企业微信不回复。
Find related content
Search the site for tools, terms, comparison pages, or related troubleshooting notes without going back to the blog index.
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.pid、gateway_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.log 和 errors.log | token、网络、权限或依赖错误 |
企业微信发消息不回复时,先跑这一组最小复盘命令:
.\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
处理方式很简单:
- 手动关闭那个旧的 Hermes 前台终端;
- 回到工具目录;
- 再执行:
.\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 已经把 Windows 原生环境做成完整官方支持平台,而是把我们真实遇到的企业微信 Gateway 场景,收敛成可审查的脚本、状态文件和恢复策略。对普通用户来说,最有价值的是这三点:
- 不再依赖一个必须常开的前台 PowerShell 窗口;
- 用
gateway.pid、gateway_state.json和日志判断真实状态; - 任务计划程序只做 best-effort 恢复,真正排障仍然要看日志和进程。
相关链接
Continue exploring
Use a tool first
If you need to format JSON, XML, YAML, or prompts, start with the online tools.
See implementation projects
If you want to see how these methods enter real builds and experiments, continue with projects.
Get checklists and templates
If you need checklists, resource entries, or SOP starter packs, continue with resources.
Download reusable skills
If you want repeatable judgment, search, and cleanup actions, continue with the skill market.
要点总结
- - Hermes Gateway 没有固定本地监听端口,不能只靠 Get-NetTCPConnection 判断
- - 更可靠的状态来源是 ~/.hermes/gateway.pid、gateway_state.json 和 ~/.hermes/logs/
- - 隐藏启动器真实执行 hermes gateway run --replace --accept-hooks
- - 如果旧前台进程权限更高,第一次需要手动关闭旧终端一次
- - 公开日志前必须检查 token、secret、webhook、cookie 等敏感字段