在这里插入图片描述

Windows 开机自启的 OpenClaw 重启失败?Telegram 报错?三步定位 + 五步复现(含完整命令)

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


0)我遇到的现象(你可能和我一模一样)

我这边是 Windows 本机部署 OpenClaw,开机后会自动启动 Gateway,默认监听端口:

  • Gateway:18789
  • Browser control:18791

但重启电脑后经常出现:

  • 打开 OpenClaw “看起来失败 / Telegram 不可用”
  • 日志里 Telegram 一直刷:
    • deleteWebhook failed
    • setMyCommands failed
    • Network 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 failed
  • telegram setMyCommands failed
  • Network 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 私聊稳定可用(通过配对 + 能正常收发消息)

验收标准:

  1. OpenClaw Gateway 启动后,日志不再持续刷 setMyCommands/deleteWebhook 的 Network failed
  2. 你私聊 bot 发送任意消息,OpenClaw 能回复
  3. 配对模式下,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.jsonchannels.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。


Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐