OpenClaw Windows 升级后出现 findstr 黑框、Gateway Ready/unknown、18789 none found 怎么办
这篇文章复盘 Windows 上 OpenClaw 升级后的典型故障:findstr 端口检测黑框、Gateway 计划任务 Ready、runtime unknown、18789 未监听,并给出命令行排查路径。
需要继续找相关内容?
如果你想继续查工具名、术语、对比页或相关问题,可以直接搜全站,不用回到博客列表页重找。
核心结论
如果 Windows 上 OpenClaw 升级后出现 findstr 黑框或 Gateway Ready/unknown,不要只看计划任务是否存在,要同时检查 18789 listener、计划任务 action、Gateway 日志和残留进程。
适合谁看
适合 OpenClaw Windows 原生用户、维护本机 Gateway 的开发者,以及需要给团队整理 runbook 的 Agent workflow 使用者。
关键判断
关键命令包括 openclaw gateway status、Get-NetTCPConnection -LocalPort 18789、Get-ScheduledTask、Get-Process findstr、Invoke-CimMethod Terminate。
下一步建议
先确认 18789 是否监听;如果没有监听,启动 Gateway;如果有残留 findstr 窗口,再按端口检测窗口精确清理。
你将学到
- + Ready/unknown/none found 分别说明什么
- + 怎么确认 18789 是否真的有 listener
- + findstr 黑框为什么和升级后的端口检测有关
- + 如何用纯命令行恢复 Gateway
- + 什么时候可以使用 openclaw-windows-silence-run 自动化这些步骤
Windows 上升级 OpenClaw 后,如果你看到这样的状态:
Service runtime : unknown
Task state : Ready
Probe URL : ws://127.0.0.1:18789
Listener process: none found
它不是“看起来有点怪”,而是 Gateway 当前没有正常监听。
再加上桌面上如果残留一个标题类似这样的黑框:
findstr /R /C:":18789 .*LISTENING"
基本可以判断:升级后的 Windows Gateway 重启链路没有完整收尾。
本次排查环境和证据边界
| 项目 | 现场记录 |
|---|---|
| 系统环境 | Windows 原生环境,不是 WSL |
| 触发场景 | OpenClaw 升级后,Gateway 自动恢复没有完整闭环 |
| 关键状态 | Service runtime: unknown、Task state: Ready、Listener process: none found |
| 关键端口 | ws://127.0.0.1:18789 |
| 处理目标 | 先确认 listener,再恢复 Gateway,最后清理残留 findstr 窗口 |
这类问题最容易误判的地方是:计划任务显示 Ready,并不代表 Gateway 已经在后台运行。真正要看的,是 18789 端口有没有 listener,以及 OpenClaw 自己的 gateway status 是否能看到运行进程。
三个状态不要混在一起
| 看到的状态 | 更接近的含义 | 下一步 |
|---|---|---|
Task state: Ready | 计划任务存在,处于可运行状态 | 继续看 listener,不要直接判定正常 |
Service runtime: unknown | CLI 没确认到稳定运行态 | 查 gateway status 和日志 |
Listener process: none found | 18789 没有监听进程 | 恢复 Gateway |
findstr :18789 黑框 | 端口检测命令残留在桌面 | 确认 Gateway 已恢复后再清理 |
第一步:先看 18789 有没有监听
不要只看计划任务是否存在。先看端口:
Get-NetTCPConnection -LocalPort 18789 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,State,OwningProcess
如果没有输出,说明 Gateway 没有监听。
如果有输出,继续查 PID:
Get-Process -Id <OwningProcess>
正常情况下应该能看到 node.exe。
第二步:看 OpenClaw 自己的状态
openclaw gateway status
openclaw gateway status --json
重点看:
Service runtimeTask stateProbe URLLog fileListener process
如果 Listener process: none found,优先恢复 Gateway。
如果要留给团队复盘,建议把这几段输出一起保存:
openclaw gateway status --deep
Get-ScheduledTask -TaskName "OpenClaw Gateway" |
Select-Object TaskName,State,@{Name="Execute";Expression={$_.Actions.Execute}},@{Name="Arguments";Expression={$_.Actions.Arguments}}
Get-NetTCPConnection -LocalPort 18789 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,State,OwningProcess
openclaw logs --plain --local-time --limit 100
这样后面不管是自己排查、发论坛、还是给上游开 issue,都能把“任务存在”和“服务实际在线”分开讲清楚。
第三步:启动 Gateway
先用 OpenClaw 命令:
openclaw gateway start
Start-Sleep -Seconds 3
openclaw gateway status
如果计划任务存在但仍然没有起来,尝试直接运行计划任务:
schtasks /Run /TN "OpenClaw Gateway"
Start-Sleep -Seconds 3
openclaw gateway status
再复核端口:
Get-NetTCPConnection -LocalPort 18789 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,State,OwningProcess
第四步:检查计划任务 action
Get-ScheduledTask -TaskName "OpenClaw Gateway" |
Select-Object TaskName,State,@{Name="Execute";Expression={$_.Actions.Execute}},@{Name="Arguments";Expression={$_.Actions.Arguments}}
如果你希望它静默启动,推荐让 action 指向:
C:\Windows\System32\wscript.exe
参数指向:
C:\Users\<you>\.openclaw\start-gateway-hidden.vbs
这个 VBS 文件内部再隐藏执行 OpenClaw 自己生成的 gateway.cmd。
第五步:清理残留 findstr 黑框
先精确匹配窗口标题:
$stale = Get-Process -Name findstr -ErrorAction SilentlyContinue |
Where-Object { $_.MainWindowTitle -match 'findstr.*:18789 .*LISTENING' }
$stale | Select-Object Id,ProcessName,MainWindowTitle,StartTime
如果确认是 OpenClaw 更新后的端口检测窗口,再清理:
$stale | ForEach-Object {
Stop-Process -Id $_.Id -Force -ErrorAction SilentlyContinue
}
如果 Windows 返回 Access is denied,可以对同一个 PID 使用 WMI:
$stale | ForEach-Object {
$cim = Get-CimInstance Win32_Process -Filter "ProcessId=$($_.Id)"
if ($cim) {
Invoke-CimMethod -InputObject $cim -MethodName Terminate | Out-Null
}
}
清理后必须再查 Gateway:
openclaw gateway status
Get-NetTCPConnection -LocalPort 18789 -State Listen -ErrorAction SilentlyContinue |
Select-Object LocalAddress,LocalPort,State,OwningProcess
更省事的做法
如果你不想每次手动敲这些命令,可以使用我们整理的开源小工具:
git clone https://github.com/kunpeng-ai-lab/windows-ai-gateway-silence-run.git
cd windows-ai-gateway-silence-run
.\openclaw-gateway post-update
它会自动完成:
- 修复隐藏启动计划任务;
- 清理残留
findstr :18789窗口; - 如果端口没监听,启动 Gateway;
- 输出状态、日志路径和 listener PID。
什么时候还需要继续排查日志
如果执行启动后仍然没有 listener,看日志:
openclaw logs --plain --local-time --limit 100
注意公开分享日志前先检查敏感字段,例如:
token
secret
app_secret
webhook
authorization
cookie
和上游反馈怎么对应
这次问题不是只停留在本地修脚本。我们把 Windows Gateway 的恢复链路反馈到了 OpenClaw 社区,后续官方把相关 issue 关闭为 implemented。

这里要注意一个边界:这不等于“所有 Windows 机器都不会再遇到 Gateway 问题”,而是说明上游已经把“不能只看计划任务注册成功,还要确认实际 listener”纳入了后续修复路径。
另外,之前围绕升级后 18789 和 findstr 残留窗口的 PR,也被官方以主线已有实现的方式关闭。它没有合并成我们的原始 PR,但问题方向和修复路径被上游吸收了。

如果你在更新版本里仍然复现,建议带着这些材料重新开 issue:
openclaw gateway status --deep- Task Scheduler 里
OpenClaw Gateway的状态和 action Get-NetTCPConnection -LocalPort 18789的输出- Gateway 最近 100 行日志,先脱敏再公开
相关链接
继续延伸
要点总结
- - 计划任务存在不等于 Gateway 正在运行
- - 18789 listener 是判断 Gateway 是否运行的关键证据
- - 清理 findstr 窗口前要确认它确实匹配 OpenClaw 端口检测签名
- - 升级后要重新检查计划任务 action 是否仍是隐藏启动方式
- - 长期方案是把这些步骤沉淀成 post-update 命令或上游 Windows runbook