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

OpenClaw Windows 升级后出现 findstr 黑框、Gateway Ready/unknown、18789 none found 怎么办

这篇文章复盘 Windows 上 OpenClaw 升级后的典型故障:findstr 端口检测黑框、Gateway 计划任务 Ready、runtime unknown、18789 未监听,并给出命令行排查路径。

#OpenClaw#Windows#Gateway#故障排查#PowerShell

需要继续找相关内容?

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

Quick Summary

核心结论

如果 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: unknownTask state: ReadyListener 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: unknownCLI 没确认到稳定运行态查 gateway status 和日志
Listener process: none found18789 没有监听进程恢复 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 runtime
  • Task state
  • Probe URL
  • Log file
  • Listener 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。

OpenClaw issue 60490 evidence

这里要注意一个边界:这不等于“所有 Windows 机器都不会再遇到 Gateway 问题”,而是说明上游已经把“不能只看计划任务注册成功,还要确认实际 listener”纳入了后续修复路径。

另外,之前围绕升级后 18789findstr 残留窗口的 PR,也被官方以主线已有实现的方式关闭。它没有合并成我们的原始 PR,但问题方向和修复路径被上游吸收了。

OpenClaw PR 71909 evidence

如果你在更新版本里仍然复现,建议带着这些材料重新开 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

评论