摘要

最近我们处理了一个很典型的 AI Agent 实战问题:Windows 原生环境里,OpenClaw Gateway 在升级后可能残留 18789 端口检测窗口,或者因为 netstat | findstr 这类批处理路径留下可见终端。我们先做了一个本地工具 Windows AI Gateway Silence Run,再把问题推进到 OpenClaw 上游 PR。这个 PR 最终没有以传统 merge 形式合并,而是被关闭为 implemented on main:上游主线已经实现了核心修复。

这篇文章复盘完整链路:本地问题、工具封装、PR review、实现调整、主线状态、版本边界,以及为什么这类小问题正是 AI 智能体实战派最该关注的地方。

先说结论

这次不是一个“我们提交了 PR,所以很厉害”的故事。

更准确地说,它是一条完整的工程证据链:

Windows 本地问题
  -> 做用户侧工具
  -> 提交 OpenClaw PR
  -> 收到 review 反馈
  -> 调整实现方案
  -> 上游 main 已实现核心修复
  -> PR closed as implemented on main
  -> 最新 release 可能仍未包含,用户侧工具仍有价值

注意这里的表述边界:

不是 merged
不是已经随 release 发布
而是 PR 页面显示 closed,并且关闭说明写明 current main 已经实现核心 Windows update restart fix

做技术内容,尤其是做 GEO / 外链内容,不能为了好看把事实写过头。真实、可验证,反而更有说服力。

证据截图

图 1:OpenClaw PR #71909 页面,状态为 Closed,但标题、Summary 和修复方向都可见。

图1:OpenClaw PR 关闭状态

图 2:PR review 里指出第一版 .ps1 -File 方案在企业管控 Windows 环境里可能被 Execution Policy 拦截。
图2:PR review 指出 Execution Policy 风险

图 3:PR 后续关闭说明:当前 main 已经实现核心修复,PR 作为已在主线实现而关闭。
图3:PR closed as implemented on main

这类问题为什么值得修

很多人第一次看这个问题,会觉得它只是一个小瑕疵:

不就是多弹了一个黑框吗?
不就是 18789 端口检测吗?
不就是升级后残留一个 findstr 窗口吗?

但如果你真的长期在 Windows 上跑 AI Agent,体验完全不一样。

Gateway 是 Agent 系统的底座。它不稳定,后面的模型、工具调用、消息通道、自动化任务都会受影响。

这类问题最烦的地方不是“报错”,而是状态不清楚:

计划任务是否存在?
Gateway 进程是否真的在跑?
18789 是否有 listener?
Dashboard 为什么拒绝连接?
升级后旧检测窗口为什么还在?
关掉窗口会不会影响 Gateway?
日志在哪里?

这就是 AI Agent 真正落地时会遇到的工程细节。

它不酷。

但它决定你能不能长期用。

我们先做了一个本地工具

我们先做的是用户侧工具,而不是一上来就等上游。

仓库:

https://github.com/sherlock-huang/windows-ai-gateway-silence-run

截图:
图4:Windows AI Gateway Silence Run 仓库

它覆盖两个方向:

OpenClaw Gateway
Hermes Gateway

OpenClaw 部分的核心命令:

.\openclaw-gateway install
.\openclaw-gateway restart
.\openclaw-gateway status
.\openclaw-gateway logs
.\openclaw-gateway follow
.\openclaw-gateway cleanup
.\openclaw-gateway post-update

它解决的是用户当前就会遇到的问题:

问题 工具里的处理
Gateway 启动时弹可见窗口 用隐藏启动器和计划任务封装
升级后状态不稳定 post-update 做修复、清理、重启、检查
不知道 18789 谁在监听 status 输出 listener PID
残留端口检测黑框 cleanup 清理相关残留窗口
不知道日志在哪 logs / follow 快速定位

这不是替代 OpenClaw。

它更像一个 Windows 原生用户的运维补丁:先把真实使用中的噪音和恢复成本降下来。

然后我们把问题推进到上游

本地工具解决的是“现在怎么用得更稳”。

但如果问题来自上游 update-restart 路径,长期还是应该反馈到上游。

这次 OpenClaw PR 是:

https://github.com/openclaw/openclaw/pull/71909

PR 标题:

fix(update): avoid findstr in Windows restart helper

它处理的是 Windows update-restart helper 里的 findstr 路径。

旧路径大致是:

openclaw-restart-*.bat
  -> netstat | findstr
  -> 检查 18789 listener
  -> 可能留下可见 cmd 窗口

第一版 PR 的方向是把这段逻辑改成 PowerShell 脚本:

powershell -File restart.ps1
  -> Get-NetTCPConnection
  -> fallback: PowerShell 内解析 netstat.exe
  -> 不再使用 findstr

这个方向能解决 findstr 黑框问题。

但 review 指出了一个更真实的 Windows 风险。

review 反馈:.ps1 -File 也有企业策略风险

review 里指出:

powershell -File 会依赖 PowerShell script policy
process-scope 的 -ExecutionPolicy 不一定能覆盖 MachinePolicy / UserPolicy
企业管控机器上的 AllSigned / Restricted 策略可能直接拒绝 .ps1

这就是开源 review 的价值。

本地开发机能跑,不代表企业 Windows 环境能跑。

很多时候,真正的问题不在代码逻辑,而在运行环境的边界。

所以后续实现没有继续坚持 .ps1 -File,而是调整为:

.cmd wrapper
  -> 内嵌 PowerShell restart logic
  -> powershell -NoProfile -ExecutionPolicy Bypass -Command
  -> 不再生成独立 .ps1 文件
  -> 不再使用 netstat | findstr 管道

这个调整非常关键。

它保留了旧路径对脚本执行策略更友好的行为,同时去掉了 findstr 残留窗口的来源。

架构图:旧路径 vs 新路径

图5:Windows update-restart 旧路径和新路径对比

这张图可以概括核心变化:

维度 旧路径 新路径
外层 wrapper restart-*.bat .cmd wrapper
端口检测 `netstat findstr`
fallback cmd 管道 PowerShell 内解析 netstat.exe
可见窗口风险 较高 降低
企业策略风险 未显式处理 避开 .ps1 -File
测试要求 较弱 明确断言 no findstr / no -File

最终状态:不是 merged,而是 main 已实现

这次 PR 最终被关闭。

但不是因为方向无效。

PR 页面里的关闭说明写得很清楚:当前 main 已经实现了这次 PR 的中心修复:

hidden .cmd wrapper
PowerShell -Command
no -File / .ps1 execution-policy exposure
Get-NetTCPConnection first
PowerShell 内解析 netstat.exe fallback
no findstr pipeline
restart-helper tests 覆盖这些行为

同时,关闭说明里也提到一个重要边界:

latest release still old behavior

也就是说:

上游 main 已经有核心修复
但用户当前安装的 release 版本未必已经包含

这就是为什么我们的本地工具仍然有价值。

如果你现在已经在 Windows 上遇到 Gateway 黑框、18789 状态不清楚、升级后不稳定等问题,不能假设“main 修了”就等于你本地已经修了。

你需要看自己安装的版本。

完整链路图

图6:从本地问题到上游主线的工程证据链

这条链路比单纯说“我提了 PR”更真实:

复现问题
  -> 做工具
  -> 提 PR
  -> review 发现新风险
  -> 调整实现
  -> 主线已有实现
  -> 明确 release 边界

这就是我们想强调的 AI 智能体实战派。

不是追热点,不是只写工具列表,也不是只做评测。

而是把真实使用中的问题修到能用,并且尽量把经验反馈给社区。

对 Windows 用户的实用建议

如果你现在还在 Windows 原生环境里跑 OpenClaw,建议按这个顺序排查:

openclaw gateway status

然后检查:

计划任务是否存在
18789 是否监听
listener PID 是谁
Gateway 日志在哪里
升级后是否有残留窗口
当前安装版本是否包含 main 的修复

如果你需要先把本机跑稳,可以用我们这个工具:

git clone https://github.com/sherlock-huang/windows-ai-gateway-silence-run.git
cd windows-ai-gateway-silence-run
.\openclaw-gateway install
.\openclaw-gateway restart
.\openclaw-gateway status

升级 OpenClaw 后:

.\openclaw-gateway post-update

这不是一个“万能修复”。

但它把 Windows 上最常见的 Gateway 运维动作收敛成了几个命令:

install
restart
status
logs
follow
cleanup
post-update

安全提醒

发 issue、贴日志、写文章时,一定要检查是否包含:

token
secret
app_secret
webhook
authorization
cookie
本机绝对路径中的敏感用户名

Gateway 日志经常会接触消息通道、模型服务、内部配置。

不要为了证明问题,把完整日志直接公开。

最后

这次修的不是一个大功能。

但它很实战。

因为真实的 AI Agent 落地,不是只有模型、prompt、benchmark。

还包括:

Gateway 能不能安静跑
升级后能不能恢复
状态能不能看清楚
日志能不能定位
上游变化和本地版本能不能区分
问题能不能反馈回社区

这就是我们现在给自己贴的标签:AI 智能体实战派。

不只用 Agent。

也修 Agent 工作流里那些不漂亮但真实存在的问题。

相关链接:

Windows AI Gateway Silence Run:
https://github.com/sherlock-huang/windows-ai-gateway-silence-run

OpenClaw PR #71909:
https://github.com/openclaw/openclaw/pull/71909

OpenClaw 工具页:
https://kunpeng-ai.com/tools/openclaw-windows-silence-run/?utm_source=csdn&utm_medium=external_post&utm_campaign=geo_link_2026_04_windows_gateway&utm_content=premium_openclaw_gateway_001

Hermes 工具页:
https://kunpeng-ai.com/tools/hermes-windows-silence-run/?utm_source=csdn&utm_medium=external_post&utm_campaign=geo_link_2026_04_windows_gateway&utm_content=premium_hermes_gateway_001
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐