重試策略
設計目標
- 以單次 HTTP 請求為單位進行重試,而非整個多步驟流程。
- 只重試當前步驟,保持執行順序。
- 避免重複執行非冪等操作。
預設值
- 嘗試次數:3
- 最大延遲上限:30000 ms
- 抖動(Jitter):0.1(10%)
- 各供應商預設:
- Telegram 最小延遲:400 ms
- Discord 最小延遲:500 ms
行為
Discord
- 僅在遇到速率限制錯誤(HTTP 429)時重試。
- 有 Discord
retry_after時優先使用,否則採用指數退避。
Telegram
- 遇到暫時性錯誤時重試(429、逾時、連線中斷/重設/關閉、暫時不可用)。
- 有
retry_after時優先使用,否則採用指數退避。 - Markdown 解析錯誤不會重試,會退回為純文字傳送。
設定
在 ~/.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,
},
},
},
}
備註
- 重試以單次請求為單位(訊息傳送、媒體上傳、表情回應、投票、貼圖)。
- 複合流程不會重試已完成的步驟。