Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

การเสริมความแข็งแกร่งของ Cron Add และการปรับสคีมาให้สอดคล้อง

บริบท

บันทึกล็อกของเกตเวย์ล่าสุดแสดงความล้มเหลวของ cron.add ซ้ำ ๆ พร้อมพารามิเตอร์ไม่ถูกต้อง (ขาด sessionTarget, wakeMode, payload และ schedule มีรูปแบบไม่ถูกต้อง) ซึ่งบ่งชี้ว่ามีไคลเอนต์อย่างน้อยหนึ่งตัว (น่าจะเป็นเส้นทางการเรียกใช้เครื่องมือของเอเจนต์) กำลังส่งเพย์โหลดงานที่ถูกห่อ (wrapped) หรือระบุข้อมูลไม่ครบถ้วน นอกจากนี้ ยังมีความไม่สอดคล้องกันของ enum ผู้ให้บริการ cron ระหว่าง TypeScript, สคีมาของเกตเวย์, แฟล็กของ CLI และชนิดฟอร์มของ UI รวมถึงความไม่ตรงกันใน UI สำหรับ cron.status (คาดหวัง jobCount ในขณะที่เกตเวย์ส่งกลับเป็น jobs)

เป้าหมาย

  • หยุดสแปม INVALID_REQUEST ของ cron.add โดยทำให้เพย์โหลดที่ถูกห่อทั่วไปเป็นรูปแบบปกติและอนุมานฟิลด์ kind ที่ขาดหาย
  • ทำให้รายการผู้ให้บริการ cron สอดคล้องกันในสคีมาของ Gateway(เกตเวย์), ชนิด cron, เอกสาร CLI และฟอร์ม UI
  • ทำให้สคีมาเครื่องมือ cron ของเอเจนต์ชัดเจน เพื่อให้ LLM สร้างเพย์โหลดงานที่ถูกต้อง
  • แก้ไขการแสดงผลจำนวนงานสถานะ cron ใน Control UI
  • เพิ่มการทดสอบเพื่อครอบคลุมการทำให้เป็นรูปแบบปกติและพฤติกรรมของเครื่องมือ

สิ่งที่ไม่ครอบคลุม (Non-goals)

  • เปลี่ยนความหมายการตั้งเวลา cron หรือพฤติกรรมการรันงาน
  • เพิ่มชนิดตารางเวลาใหม่หรือการพาร์ส cron expression
  • ปรับโฉม UI/UX ของ cron เกินกว่าการแก้ไขฟิลด์ที่จำเป็น

ผลการค้นพบ (ช่องว่างปัจจุบัน)

  • CronPayloadSchema ใน Gateway(เกตเวย์)ไม่รวม signal + imessage ขณะที่ชนิด TS รวมไว้
  • CronStatus ของ Control UI คาดหวัง jobCount แต่ Gateway(เกตเวย์)ส่งกลับ jobs
  • สคีมาเครื่องมือ cron ของเอเจนต์อนุญาตอ็อบเจ็กต์ job ใดๆ ทำให้เกิดอินพุตที่ผิดรูปแบบได้
  • Gateway(เกตเวย์)ตรวจสอบ cron.add อย่างเคร่งครัดโดยไม่มีการทำให้เป็นรูปแบบปกติ จึงทำให้เพย์โหลดที่ถูกห่อล้มเหลว

สิ่งที่เปลี่ยนไป

  • cron.add และ cron.update ทำการทำให้รูปแบบการห่อทั่วไปเป็นรูปแบบปกติและอนุมานฟิลด์ kind ที่ขาดหาย
  • สคีมาเครื่องมือ cron ของเอเจนต์ตรงกับสคีมาของ Gateway(เกตเวย์) ซึ่งช่วยลดเพย์โหลดที่ไม่ถูกต้อง
  • enum ของผู้ให้บริการถูกทำให้สอดคล้องกันทั่วทั้ง Gateway(เกตเวย์), CLI, UI และตัวเลือกบน macOS
  • Control UI ใช้ฟิลด์นับ jobs ของ Gateway(เกตเวย์)สำหรับสถานะ

พฤติกรรมปัจจุบัน

  • การทำให้เป็นรูปแบบปกติ: เพย์โหลด data/job ที่ถูกห่อจะถูกแกะออก; schedule.kind และ payload.kind จะถูกอนุมานเมื่อปลอดภัย
  • ค่าเริ่มต้น: ใช้ค่าเริ่มต้นที่ปลอดภัยสำหรับ wakeMode และ sessionTarget เมื่อขาดหาย
  • ผู้ให้บริการ: Discord/Slack/Signal/iMessage แสดงอย่างสอดคล้องกันทั่วทั้ง CLI/UI

ดู Cron jobs สำหรับรูปแบบที่ทำให้เป็นปกติและตัวอย่าง

การยืนยันผล

  • เฝ้าดูบันทึกล็อกของ Gateway(เกตเวย์)เพื่อยืนยันว่าข้อผิดพลาด INVALID_REQUEST ของ cron.add ลดลง
  • ยืนยันว่า Control UI แสดงจำนวนงานสถานะ cron หลังรีเฟรช

งานติดตามเพิ่มเติม (ทางเลือก)

  • ทดสอบ Control UI แบบ smoke ด้วยตนเอง: เพิ่มงาน cron ต่อผู้ให้บริการหนึ่งรายการ + ตรวจสอบจำนวนงานสถานะ

คำถามที่เปิดอยู่

  • ควรให้ cron.add ยอมรับ state แบบระบุชัดจากไคลเอนต์หรือไม่ (ปัจจุบันไม่อนุญาตโดยสคีมา)?
  • ควรอนุญาต webchat เป็นผู้ให้บริการการส่งมอบแบบระบุชัดหรือไม่ (ปัจจุบันถูกกรองในขั้นตอนการแก้ไขการส่งมอบ)?