Messages and delivery

นโยบายการลองใหม่

เป้าหมาย

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

ค่าเริ่มต้น

  • จำนวนครั้งที่พยายาม: 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 ที่ยาวภายในตัวเอง

Discord

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

Telegram

  • ลองใหม่เมื่อเกิดข้อผิดพลาดชั่วคราว (429, หมดเวลา, เชื่อมต่อ/รีเซ็ต/ปิด, ไม่พร้อมใช้งานชั่วคราว)
  • ใช้ retry_after เมื่อมีให้ใช้ มิฉะนั้นจะใช้ exponential backoff
  • ข้อผิดพลาดในการแยกวิเคราะห์ 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,
      },
    },
  },
}

หมายเหตุ

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

ที่เกี่ยวข้อง