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 品牌風格