跳到內容

設定 OpenClaw 的 Retry 策略:解決 API 請求失敗

寫 API 整合最怕遇到網路抖動或是突然被限流。如果你沒有處理好重試邏輯,訊息可能發不出去,或者更糟的是,因為重試邏輯寫太爛,導致同一個動作重複執行好幾次。

這篇文章會教你如何設定 OpenClaw 的重試機制。這套機制是針對單次 HTTP 請求設計的,只會重試當前失敗的那一步,不會影響到已經完成的流程,幫你省掉不少麻煩。

  • 你需要有編輯 ~/.openclaw/openclaw.json 的權限
  • 一個已經設定好的 Telegram 或 Discord 頻道

OpenClaw 預設會嘗試 3 次,最大延遲上限是 30000 ms。你可以直接在設定檔中針對不同的 Provider 進行微調。

貼上這段範例到你的 ~/.openclaw/openclaw.json:

{
channels: {
telegram: {
retry: {
attempts: 3,
minDelayMs: 400,
maxDelayMs: 30000,
jitter: 0.1,
},
},
discord: {
retry: {
attempts: 3,
minDelayMs: 500,
maxDelayMs: 30000,
jitter: 0.1,
},
},
},
}

這套策略的重點在於:

  • 針對單次請求(發送訊息、上傳媒體、表情回應、投票、貼圖)進行重試。
  • 複合式流程中,已經成功的步驟不會被重複觸發。

每個平台對錯誤的處理方式不太一樣,如果你發現重試沒有觸發,可以檢查一下是不是遇到了以下情況:

  • 只在 429 錯誤時重試:Discord 只有在遇到 Rate-limit(HTTP 429)時才會觸發重試。
  • 優先使用官方回傳時間:如果 Discord 有回傳 retry_after,系統會優先使用該時間;如果沒有,才會使用 Exponential backoff。
  • 處理暫時性錯誤:Telegram 會在遇到 429、Timeout、連線重置(Reset/Closed)或服務暫時不可用時進行重試。
  • Markdown 錯誤不重試:如果是因為 Markdown 語法解析錯誤,系統不會重試,而是會直接降級改用 Plain text 發送訊息。

有任何設定上的疑問,可以直接詢問 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。