---
read_when:
    - การอัปเดตลักษณะการลองใหม่หรือค่าเริ่มต้นของผู้ให้บริการ
    - การแก้ไขข้อผิดพลาดในการส่งของผู้ให้บริการหรือการจำกัดอัตรา
summary: นโยบายการลองใหม่สำหรับการเรียกผู้ให้บริการขาออก
title: นโยบายการลองใหม่
x-i18n:
    generated_at: "2026-07-12T16:08:19Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 9be2bcb5af829b90042bfcbc5c0e5f5cc5a3cb03dd5472737c80fa0f15803361
    source_path: concepts/retry.md
    workflow: 16
---

## เป้าหมาย

- ลองใหม่แยกตามคำขอ HTTP แต่ละรายการ ไม่ใช่ตามโฟลว์หลายขั้นตอน
- รักษาลำดับโดยลองใหม่เฉพาะขั้นตอนปัจจุบัน
- หลีกเลี่ยงการทำซ้ำสำหรับการดำเนินการที่ไม่เป็นไอดempotent

## ค่าเริ่มต้น

| การตั้งค่า                  | ค่าเริ่มต้น |
| -------------------------- | ----------- |
| จำนวนครั้งที่พยายาม         | 3           |
| ขีดจำกัดเวลาหน่วงสูงสุด     | 30000 ms    |
| ค่าความแปรผันแบบสุ่ม         | 0.1 (10%)   |
| เวลาหน่วงขั้นต่ำของ Telegram | 400 ms      |
| เวลาหน่วงขั้นต่ำของ Discord  | 500 ms      |

## ลักษณะการทำงาน

### ผู้ให้บริการโมเดล

- OpenClaw ให้ SDK ของผู้ให้บริการจัดการการลองใหม่ระยะสั้นตามปกติ
- สำหรับ SDK ที่ใช้ Stainless เช่น Anthropic และ OpenAI การตอบกลับที่ลองใหม่ได้ (`408`, `409`, `429` และ `5xx`) อาจมี `retry-after-ms` หรือ `retry-after` เมื่อระยะเวลารอนั้นนานกว่า 60 วินาที OpenClaw จะแทรก `x-should-retry: false` เพื่อให้ SDK แสดงข้อผิดพลาดทันที และให้การสลับโมเดลเมื่อเกิดข้อผิดพลาดหมุนไปใช้โปรไฟล์การยืนยันตัวตนอื่นหรือโมเดลสำรองได้
- กำหนดขีดจำกัดใหม่ด้วย `OPENCLAW_SDK_RETRY_MAX_WAIT_SECONDS=<seconds>` ตั้งค่าเป็น `0`, `false`, `off`, `none` หรือ `disabled` เพื่อให้ SDK ปฏิบัติตามระยะเวลาพักที่ยาวนานจาก `Retry-After` ภายใน SDK เอง

### Discord

- ลองใหม่เมื่อเกิดข้อผิดพลาดจากการจำกัดอัตรา (HTTP 429), คำขอหมดเวลา, การตอบกลับ HTTP 5xx และความล้มเหลวชั่วคราวของการรับส่งข้อมูล เช่น การค้นหา DNS ล้มเหลว การเชื่อมต่อถูกรีเซ็ต ซ็อกเก็ตปิด และการดึงข้อมูลล้มเหลว
- ใช้ `retry_after` ของ Discord เมื่อมี มิฉะนั้นใช้การหน่วงเวลาแบบเอ็กซ์โพเนนเชียล

### Telegram

- ลองใหม่เมื่อเกิดข้อผิดพลาดชั่วคราว (429, หมดเวลา, การเชื่อมต่อ/รีเซ็ต/ปิด, ไม่พร้อมใช้งานชั่วคราว)
- ใช้ `retry_after` เมื่อมี มิฉะนั้นใช้การหน่วงเวลาแบบเอ็กซ์โพเนนเชียล
- จะไม่ลองใหม่เมื่อเกิดข้อผิดพลาดในการแยกวิเคราะห์ HTML/Markdown แต่จะเปลี่ยนไปใช้ข้อความธรรมดาในการพยายามครั้งแรก

## การกำหนดค่า

กำหนดนโยบายการลองใหม่แยกตามผู้ให้บริการใน `~/.openclaw/openclaw.json`:

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

## หมายเหตุ

- การลองใหม่มีผลแยกตามคำขอแต่ละรายการ (ส่งข้อความ อัปโหลดสื่อ การแสดงปฏิกิริยา แบบสำรวจ สติกเกอร์)
- โฟลว์แบบประกอบจะไม่ลองทำขั้นตอนที่เสร็จสมบูรณ์แล้วใหม่

## เนื้อหาที่เกี่ยวข้อง

- [การสลับโมเดลเมื่อเกิดข้อผิดพลาด](/th/concepts/model-failover)
- [คิวคำสั่ง](/th/concepts/queue)
