Child and robot interacting with projected bubbles

用 OpenClaw 跑自动化任务,最麻烦的不是配置,而是"跑着跑着突然不工作了"。这篇文章整理我遇到过的故障和解决方法。

Gateway 相关

Gateway 服务未启动

症状:Telegram 发消息没反应,AI 助手不回复。

检查:

openclaw gateway status

常见原因和解法:

原因解法
进程挂了openclaw gateway restart
Bot Token 过期去 BotFather 重新获取 token,更新配置
端口冲突lsof -i :端口号 找占用进程,kill 掉
Windows 开机未自启任务计划程序加入自启

Windows 特别注意:Windows 上 Gateway 不会随系统自动启动,每次重启后需要手动运行:

openclaw gateway start

建议做成 Windows 任务计划程序的开机自启任务。


Gateway 启动后几小时自动断开

症状:刚开始好的,过一段时间 Telegram 又不响应了。

原因:Telegram 的 long-polling 连接超时,Gateway 没有自动重连。

解法:用 cron 或 systemd 做保活:

# Linux - 用 systemd service
# /etc/systemd/system/openclaw-gateway.service
[Unit]
Description=OpenClaw Gateway
After=network.target

[Service]
User=as
ExecStart=/usr/local/bin/openclaw gateway start
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl enable openclaw-gateway
sudo systemctl start openclaw-gateway

消息推送相关

openclaw message send 没反应

检查顺序:

  1. 确认 openclaw 可执行:

    which openclaw  # 确认路径
    openclaw --version
    
  2. 手动测试推送:

    openclaw message send --channel telegram --target 你的用户ID --message "test"
    
  3. 查看 openclaw 日志:

    tail -f ~/.openclaw/logs/openclaw.log
    
  4. cron 里的 PATH 问题:cron 的环境变量 PATH 比登录 shell 少很多,openclaw 可能找不到。解法:

    # 在 cron 文件顶部加完整 PATH
    PATH=/usr/local/bin:/usr/bin:/bin:/home/as/.npm-global/bin
    

    或者用绝对路径:

    /home/as/.npm-global/bin/openclaw message send ...
    

发消息成功但图片(PDF)没有收到

原因:--media 参数路径错误,或文件不存在。

检查:

ls -la /path/to/your/report.pdf
# 确认文件存在且可读

注意:路径必须是绝对路径,不能用 ~ 或相对路径(在 cron 环境里 ~ 不展开)。


Telegram Bot 隐私模式问题

症状:Bot 在群组里收不到普通消息(只能收到 /命令)。

原因:Telegram Bot 默认开启隐私模式,只接收 / 开头的命令。

解法:去 BotFather → 你的 Bot → Bot Settings → Group Privacy → 关闭。

关闭后,Bot 才能接收群组内的普通消息,OpenClaw 才能响应群组 @。


Skill 相关

Skill 安装后调用失败

症状:安装了 github Skill,让 AI 查 Issue,AI 说"我没有访问 GitHub 的能力"。

原因:Skill 安装后需要配置 API Token。

openclaw skill config github
# 按提示输入 GitHub Personal Access Token

每个 Skill 都有自己的配置要求,安装后执行 openclaw skill config <name> 完成配置。


obsidian Skill 找不到文件

问题:让 AI 读我的 Obsidian 笔记,它说找不到。

原因:Obsidian Skill 需要配置 vault 路径。

openclaw skill config obsidian
# vault_path: ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/你的库名

macOS 上 iCloud 同步的 Obsidian 库路径比较长,需要确认实际路径。


量化脚本相关

matplotlib 在服务器上报错

症状:

_tkinter.TclError: no display name and no $DISPLAY environment variable

原因:服务器没有图形界面,matplotlib 默认用 Tk 后端。

解法:在脚本开头加:

import os
os.environ["MPLBACKEND"] = "Agg"
import matplotlib
matplotlib.use("Agg")

或者在 cron 环境变量里加 MPLBACKEND=Agg。


PDF 中文显示方块(乱码)

症状:生成的 PDF 里中文都变成方块。

原因:服务器没有中文字体。

解法:

sudo apt-get install -y fonts-noto-cjk
# 安装后重启相关进程

reportlab 生成 PDF 时需要指定字体文件路径,确认字体路径:

fc-list | grep -i noto

yfinance 拉数据超时

症状:策略脚本卡住,log 里有 timeout 或 Connection reset。

原因:yfinance 连接雅虎财经服务器不稳定(VPS 所在地区网络问题)。

解法:

  1. 加 retry 逻辑:

    for attempt in range(3):
        df = yf.download(symbol, ...)
        if not df.empty:
            break
        time.sleep(5)
    
  2. 换用代理节点(让 VPS 流量走代理服务器,这个配置看我的代理架构文章)

  3. 如果某个品种频繁失败,临时从 ASSETS 列表里移除,避免阻塞其他品种。


日志分析

养成看日志的习惯,大部分问题日志里都有:

# 实时看策略日志
tail -f ~/.openclaw/workspace/.openclaw/signal_monitor.log

# 看最近 50 行错误
grep -i "error\|exception\|failed" ~/.openclaw/workspace/.openclaw/signal_monitor.log | tail -50

# 看 openclaw 自身日志
tail -f ~/.openclaw/logs/openclaw.log

遇到没列出的问题,欢迎在 Telegram 找我,一起排查。


📷 封面图 · Flux Schnell AI 生成 · panshi.io 品牌风格