Windows 开机自启的 OpenClaw 重启失败?Telegram 报错?三步定位 + 五步复现(含完整命令)
本文解决一个非常具体的问题:Windows 电脑重启后,OpenClaw(Gateway 模式)虽然“好像在跑”,但 Telegram 通道一直报错,或者你不知道它到底怎么启动的、怎么正确重启。最终目标:把问题收敛成一条可复现的 SOP:**定位开机自启入口 → 修正 Telegram Token 注入 → 按端口查 PID 并重启网关。

Windows 开机自启的 OpenClaw 重启失败?Telegram 报错?三步定位 + 五步复现(含完整命令)
本文解决一个非常具体的问题:Windows 电脑重启后,OpenClaw(Gateway 模式)虽然“好像在跑”,但 Telegram 通道一直报错,或者你不知道它到底怎么启动的、怎么正确重启。
最终目标:把问题收敛成一条可复现的 SOP:定位开机自启入口 → 修正 Telegram Token 注入 → 按端口查 PID 并重启网关。
0)我遇到的现象(你可能和我一模一样)
我这边是 Windows 本机部署 OpenClaw,开机后会自动启动 Gateway,默认监听端口:
- Gateway:
18789 - Browser control:
18791
但重启电脑后经常出现:
- 打开 OpenClaw “看起来失败 / Telegram 不可用”
- 日志里 Telegram 一直刷:
deleteWebhook failedsetMyCommands failedNetwork request failed
- 我想重启,但发现:PID 每次都变,用旧 PID kill 会提示“找不到进程”

1)第一步:先搞清楚 OpenClaw 是怎么“开机自启”的(否则你永远不知道该重启谁)
1.1 用 PowerShell 直接查任务计划
在 PowerShell 执行:
schtasks /query /fo LIST /v | findstr /i openclaw
我查到的关键信息:
- 任务名:
\OpenClaw Gateway - 执行脚本:
C:\Users\Assert\.openclaw\gateway.cmd
结论: OpenClaw 是通过 Windows 任务计划程序开机自启的;真正启动入口不是你手动敲的某条命令,而是 gateway.cmd。

2)第二步:读懂 gateway.cmd(你要改什么、怎么改,答案都在这里)
gateway.cmd 本质是一个启动器,核心结构一般是:
- 设置临时目录
TMPDIR - 重写 PATH(确保 node、python、mysql 等可执行文件可被找到)
- 设置 Gateway 端口
OPENCLAW_GATEWAY_PORT=18789 - 设置 Gateway 访问 token(重要,别泄露)
- 最后一行用 Node 启动 OpenClaw Gateway,例如:
E:\AIS\App\NOde\node.exe E:\AIS\App\NOde\node_global\node_modules\openclaw\dist\index.js gateway --port 18789
补充说明:
这也解释了为什么你在命令行执行 where openclaw 可能找不到命令——因为我这套是 node 入口,不是 openclaw.exe 形式的 CLI。
3)第三步:定位 Telegram 报错的“第一原因”——Token 没对齐/没注入
日志里常见的 Telegram 报错长这样:
telegram deleteWebhook failedtelegram setMyCommands failedNetwork request failed
我的经验是:先从最常见的 Token 问题排起(尤其是你重启后配置没加载、或者 token 被重置/写错)。
3.1 用 PowerShell 先验证 Telegram Bot API(最关键的 10 秒检查)
把 token 换成自己的:
$token = "xxxx:yyyy"
irm "https://api.telegram.org/bot$token/getMe"
- 返回
ok=true→ token 正常 - 返回 401/404 或直接失败 → token 有问题(建议去 BotFather 重置)
安全提醒(强烈建议写进你的教程):token 一旦在截图/博客里泄露,等于机器人控制权公开。发现泄露:立刻去 BotFather 重置 token。
4)可实现目标(按官方思路拆成“动作 + 验收”)
我给自己定了一个 10 分钟内可完成、并且能稳定复现的目标:
✅ 目标:让 Telegram 私聊稳定可用(通过配对 + 能正常收发消息)
验收标准:
- OpenClaw Gateway 启动后,日志不再持续刷
setMyCommands/deleteWebhook的 Network failed - 你私聊 bot 发送任意消息,OpenClaw 能回复
- 配对模式下,
openclaw pairing approve telegram <CODE>执行后,“access not configured”消失(或至少不阻止你使用)
5)按步骤执行(含截图位置)
Step 1:重置 Telegram bot token(如果你怀疑 token 失效/泄露)
- 去 @BotFather →
/token→ 重置 - 在本机 PowerShell 验证 token:
$token="新token"
irm "https://api.telegram.org/bot$token/getMe"


Step 2:把 token 正确提供给 OpenClaw(两选一)
官方通常提供两种方式:
- 环境变量:
TELEGRAM_BOT_TOKEN=... - 或配置:
channels.telegram.botToken: "..."(配置优先)
我这边最省事方案:直接改 gateway.cmd(因为它就是开机自启入口)
在 gateway.cmd 里加一行(放在启动 node 之前):
将gateway.cmd 重命名为txt格式,然后新增代码,再改回cmd格式
set "TELEGRAM_BOT_TOKEN=你的新token"
更长期更规范的做法:写到
~/.openclaw/openclaw.json的channels.telegram.botToken,别写在 cmd 里。但你要先把配置文件位置确认好。

6)解决方案一(核心 SOP):先查再杀,再启动(不要写死 PID)
关键点:PID 每次都会变化,所以你必须“按端口找 PID”,而不是写死
14576这种旧值。
第一步:先查 PID(按端口)
netstat -ano | findstr :18789
你会看到最后一列就是 PID(比如 19468)。

第二步:杀死旧进程(按 PID)
taskkill /PID 19468 /F
注意:这里的
19468必须换成你刚刚查到的 PID。
第三步:再次确认端口已经释放(验证你 kill 对了)
netstat -ano | findstr :18789
如果没有 LISTENING 输出,说明端口已释放。

第四步:重新启动任务计划(等于重启 OpenClaw)
schtasks /run /tn "\OpenClaw Gateway"
第五步:验收(端口起来 + 日志正常)
netstat -ano | findstr :18789
18789 是 OpenClaw Gateway 监听端口,只要端口 LISTENING,就说明网关启动成功。
成功演示:

最后,直接在 Telegram 跟它聊天:当它能回复、并且你在 OpenClaw 输出里能看到对应日志,说明整条链路有效。

7)常见坑总结
- ❌ 在 PowerShell 里用 cmd 的
for /f语法 → 会报MissingOpenParenthesisAfterKeyword - ❌ taskkill 写
taskkill /PID <PID> /F→< >在 PowerShell 里是重定向符号,会报错
✅ 正确是:把<PID>换成真实数字,或按端口先查出 PID - ❌ 写死 PID
✅ 永远按端口找 PID
8)总结与思考
Windows 开机自启的 OpenClaw,本质是任务计划执行
gateway.cmd。重启时不要写死 PID:用netstat按端口 18789 找 PID →taskkill杀掉 →schtasks重新运行任务计划 → 再用netstat验收端口 LISTENING。
更多推荐

所有评论(0)