บทเรียนราคาแพง: สคริปต์มอนิเตอร์ค่าใช้จ่าย AI เงียบหาย
สคริปต์ติดตามค่าใช้จ่าย Claude Code พลาดแสดงยอด $234 แทนที่จะเป็น $48 ก่อนจะถูก set -euo pipefail ตัดจบจนหน้าจอว่างเปล่าถึงหนึ่งสัปดาห์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- สคริปต์มอนิเตอร์ค่าใช้จ่ายเคยคำนวณตัวเลขผิดพลาดสูงถึง 4-6 เท่าจากการรวมข้อมูลซ้ำซ้อน
- การใช้ set -euo pipefail ทำให้สคริปต์หยุดทำงานทันทีเมื่อเกิด timeout และทำให้สถานะหน้าจอหายไปเฉยๆ
- แนวทางออกแบบใหม่คือ fail-open โดยพิมพ์สัญลักษณ์ ⚫ n/a และ exit 0 เพื่อไม่ให้หน้าจอมืดสนิท
- สคริปต์ขนาด 212 บรรทัดนี้ผสมผสาน Bash และ Python3 เพื่อช่วยคุมงบประมาณระบบอัตโนมัติ
การมีสคริปต์มอนิเตอร์ที่หยุดทำงานไปเงียบๆ อาจแย่ยิ่งกว่าการไม่มีระบบติดตามเสียอีก โดยประสบการณ์ตรงของผู้พัฒนาได้พิสูจน์ให้เห็นถึงสองครั้ง ครั้งแรกคือการที่ระบบรายงานยอดใช้จ่ายในรอบ 7 วัน สูงถึง 234 ดอลลาร์สหรัฐ ทั้งที่ตัวเลขจริงจาก ccusage daily อยู่ที่ 48 ดอลลาร์สหรัฐ ซึ่งเกิดจากการนับซ้ำของบรรทัดล็อกสะสม ก่อนจะได้รับการปรับแก้จนช่องว่างเหลือเพียง 2.3% เท่านั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ปัญหาครั้งที่สองเกิดขึ้นหลังจากที่ผู้พัฒนาพยายามเพิ่มความปลอดภัยให้รัดกุมยิ่งขึ้นด้วยการใส่คำสั่ง set -euo pipefail ส่งผลให้เมื่อเกิดปัญหา ccusage timeout เพียงครั้งเดียว ตัวงานทั้งหมดก็ถูกยุติการทำงานด้วยรหัสข้อผิดพลาด 1 ทันที ทำให้แถบสถานะ (status bar) บนหน้าจอว่างเปล่าไปนานถึงหนึ่งสัปดาห์เต็ม โดยที่เจ้าของระบบไม่ทันสังเกตเห็นเลยว่าช่วงเวลาทำงานแบบ 5 ชั่วโมงถึงสองบล็อกได้ล่วงเลยขีดจำกัดวิกฤตไปแล้ว
ทางออกของปัญหาทั้งสองกรณีนี้คือการตัดสินใจทางสถาปัตยกรรมแบบเดียวกัน นั่นคือการออกแบบระบบให้เลือกเปิดรับความผิดพลาด (fail-open) พิมพ์สัญลักษณ์ ⚫ n/a ออกมา และจบการทำงานด้วยรหัส 0 บทความนี้จึงพาไปเจาะลึกสคริปต์ความยาว 212 บรรทัดที่ใช้รันระบบมอนิเตอร์ค่าใช้จ่ายในปัจจุบัน พร้อมหลักการเบื้องหลังที่ว่าห้ามปล่อยให้หน้าจอแดชบอร์ดเงียบหายไปเด็ดขาด
"The property you need from a monitoring script isn't accuracy. It's never going quiet."
Dev.to
การออกแบบระบบมอนิเตอร์ในสภาพแวดล้อมที่ขับเคลื่อนด้วย AI เช่น Claude Code มีความท้าทายสำคัญตรงที่งบประมาณสามารถพุ่งสูงได้อย่างรวดเร็ว แนวคิดแบบ fail-open ที่ยอมแสดงสถานะไม่ทราบค่า (unknown) ดีกว่าปล่อยให้หน้าจอดับไปเฉยๆ ช่วยให้ผู้ดูแลระบบแยกแยะระหว่างระบบที่กำลังทำงานปกติกับระบบที่ขาดข้อมูลการเชื่อมต่อออกจากกันได้ทันที ซึ่งเป็นหัวใจสำคัญของการป้องกันความเสียหายทางการเงินในระบบอัตโนมัติ
โครงสร้างของสคริปต์ token-budget-advisor.sh ประกอบด้วยการทำงานแบบผสมผสานระหว่าง Bash และ Python3 โดยมีขั้นตอนการดึงข้อมูลจากแหล่งทางการอย่าง ccusage blocks --json เป็นลำดับแรก และสำรองด้วยไฟล์ล็อกส่วนตัว $HOME/.claude/logs/cost-log.jsonl หากเกิดข้อผิดพลาดในชั้นใด ชั้นถัดไปก็จะยังคงทำงานต่อได้โดยไม่ทำให้สคริปต์พังทลายลงทั้งหมด
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น