Cron ของผมบอกว่า OK แต่กลับไม่ทำอะไรเลย

เมื่อวันอังคารที่ผ่านมา OpenClaw agent ของผมได้รันการตรวจสอบความปลอดภัย (security audit)

แดชบอร์ดแสดงไฟสีเขียว ระบุสถานะว่า: ok ไม่มีข้อผิดพลาดและไม่มีการแจ้งเตือนใดๆ

แต่ agent กลับไม่ได้ทำอะไรเลย

agent เกิดการ crash ระหว่างทำงาน เนื่องจากเกิดข้อผิดพลาด MiniMax overload แต่ตัว framework ภายนอกกลับตรวจไม่พบ ทำให้ framework มองว่าการทำงานเสร็จสิ้นสมบูรณ์ ทั้งที่จริงๆ แล้ว agent ล้มเหลว

ผมเพิ่งมาพบข้อผิดพลาดนี้ในอีกสามวันต่อมา เมื่อผมเข้าไปตรวจสอบ session transcript ด้วยตัวเอง

ผมจึงต้องการวิธีที่จะตรวจหาการ crash แบบเงียบ (silent crashes) เหล่านี้ ผมเลยเขียนสคริปต์ตรวจสอบความยาวเพียง 30 บรรทัดเพื่อแก้ปัญหานี้

ปัญหา

Framework ต่างๆ สามารถตรวจจับ network timeout และความล้มเหลวในการยืนยันตัวตน (auth failures) ได้ แต่พวกมันไม่สามารถตรวจจับสิ่งที่เกิดขึ้นภายใน agent turn ได้ เมื่อ sub-agent เกิดการ crash ระบบมักจะแสดงข้อความเฉพาะเจาะจงออกมาว่า: "[assistant turn failed before producing content]"

สำหรับ framework แล้ว ข้อความนี้ดูเหมือนข้อความปกติ สถานะจึงยังคงเป็น "ok" นี่คือความล้มเหลวแบบเงียบ (silent failure) ซึ่งเป็นข้อผิดพลาดประเภทที่หาตัวจับยากที่สุด

วิธีแก้ไข

ผมได้เพิ่มสคริปต์เพื่อตรวจสอบเนื้อหาใน transcript จริงๆ แทนที่จะดูแค่ status code เพียงอย่างเดียว

สคริปต์จะค้นหาข้อความความล้มเหลวที่เฉพาะเจาะจงนั้น และยังใช้ regular expression เพื่อดึงข้อความ error ที่ถูกต้องออกมาจากข้อความด้วย

สิ่งนี้ช่วยให้สคริปต์แสดงสาเหตุที่แท้จริงได้ เช่น:

  • overloaded_error
  • rate_limit_exceeded
  • context_length_exceeded

เมื่อผมเห็นรายละเอียดของ error ผมก็พบสาเหตุที่แท้จริง การ crash เกิดขึ้นจาก model fallback chain ผมจึงลบ free fallback model ที่เป็นต้นเหตุของความล้มเหลวแบบต่อเนื่อง (cascading failures) ออกไป การลบมันออกทำให้ cron ของผมทำงานได้เร็วขึ้นและเสถียรขึ้น

ผลลัพธ์

ตอนนี้สคริปต์จะทำงานทุกคืน โดยจะตรวจสอบ transcript ของวันก่อนหน้า หากพบการ crash แบบเงียบ มันจะส่งการแจ้งเตือนไปยัง Telegram ของผม

ผมไม่ต้องรอเป็นวันๆ เพื่อที่จะพบข้อผิดพลาดอีกต่อไป เพราะผมจะเห็นมันในทุกเช้า

บทเรียน

แดชบอร์ดสีเขียวไม่ได้หมายความว่า agent ของคุณทำงานสำเร็จ สถานะของ framework และผลลัพธ์ของ agent เป็นคนละเรื่องกัน

หากคุณรัน agent แบบอัตโนมัติ อย่าพึ่งพาแค่ status code เพียงอย่างเดียว ให้ตรวจสอบ transcript ด้วย และสร้างเครื่องมือขึ้นมาเพื่อตรวจสอบ transcript ให้คุณ เพราะความล้มเหลวแบบเงียบคือสิ่งที่สร้างความเสียหายได้มากที่สุด

Source: https://dev.to/mrclaw207/my-openclaw-cron-said-ok-but-did-nothing-i-fixed-it-with-a-30-line-review-script-33ll

Optional learning community: https://t.me/GyaanSetuAi