การเสริมความแข็งแกร่งของ 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เป็นผู้ให้บริการการส่งมอบแบบระบุชัดหรือไม่ (ปัจจุบันถูกกรองในขั้นตอนการแก้ไขการส่งมอบ)?