OpenClaw Windows 升级后出现 findstr 黑框、Gateway Ready/unknown、18789 none found 怎么办
这篇文章复盘 Windows 上 OpenClaw 升级后的典型故障:findstr 端口检测黑框、Gateway 计划任务 Ready、runtime unknown、18789 未监听,并给出命令行排查路径。
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 上 OpenClaw 升级后出现 findstr 黑框或 Gateway Ready/unknown,不要只看计划任务是否存在,要同时检查 18789 listener、计划任务 action、Gateway 日志和残留进程。
Who should read this
适合 OpenClaw Windows 原生用户、维护本机 Gateway 的开发者,以及需要给团队整理 runbook 的 Agent workflow 使用者。
Key check
关键命令包括 openclaw gateway status、Get-NetTCPConnection -LocalPort 18789、Get-ScheduledTask、Get-Process findstr、Invoke-CimMethod Terminate。
Next step
先确认 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 行日志,先脱敏再公开
相关链接
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.
要点总结
- - 计划任务存在不等于 Gateway 正在运行
- - 18789 listener 是判断 Gateway 是否运行的关键证据
- - 清理 findstr 窗口前要确认它确实匹配 OpenClaw 端口检测签名
- - 升级后要重新检查计划任务 action 是否仍是隐藏启动方式
- - 长期方案是把这些步骤沉淀成 post-update 命令或上游 Windows runbook