Tăng Cường Cron Add & Đồng Bộ Schema
Bối cảnh
Log của Gateway gần đây cho thấy lỗi cron.add lặp đi lặp lại với các tham số không hợp lệ (thiếu sessionTarget, wakeMode, payload, và schedule bị sai định dạng). Điều này cho thấy có ít nhất một client (có thể là đường dẫn tool call của Agent) đang gửi các job payload bị wrap hoặc chỉ định một phần. Ngoài ra, còn có sự khác biệt giữa các enum provider của cron trong TypeScript, schema Gateway, flag CLI, và kiểu form UI, cộng thêm sự không khớp trong UI cho cron.status (mong đợi jobCount trong khi Gateway trả về jobs).
Mục tiêu
- Ngăn chặn spam lỗi INVALID_REQUEST từ
cron.addbằng cách chuẩn hóa các wrapper payload phổ biến và suy luận các trườngkindcòn thiếu. - Đồng bộ danh sách cron provider trên Gateway schema, cron types, tài liệu CLI, và form UI.
- Làm rõ schema công cụ cron của Agent để LLM tạo ra các job payload đúng.
- Sửa hiển thị số lượng job trong cron status của Control UI.
- Thêm test để cover việc chuẩn hóa và hành vi của công cụ.
Không phải mục tiêu
- Thay đổi ngữ nghĩa lập lịch cron hoặc hành vi thực thi job.
- Thêm các loại schedule mới hoặc phân tích cú pháp biểu thức cron.
- Đại tu UI/UX cho cron ngoài các sửa chữa trường cần thiết.
Phát hiện (các khoảng trống hiện tại)
CronPayloadSchematrong Gateway loại trừsignal+imessage, trong khi các kiểu TS có chứa chúng.- Control UI CronStatus mong đợi
jobCount, nhưng Gateway trả vềjobs. - Schema công cụ cron của Agent cho phép các object
jobtùy ý, dẫn đến input sai định dạng. - Gateway validate
cron.addmột cách nghiêm ngặt mà không chuẩn hóa, nên các payload bị wrap sẽ thất bại.
Những gì đã thay đổi
cron.addvàcron.updategiờ đây chuẩn hóa các dạng wrapper phổ biến và suy luận các trườngkindcòn thiếu.- Schema công cụ cron của Agent khớp với schema Gateway, giúp giảm các payload không hợp lệ.
- Các enum Provider được đồng bộ trên Gateway, CLI, UI, và macOS picker.
- Control UI sử dụng trường đếm
jobscủa Gateway cho status.
Hành vi hiện tại
- Chuẩn hóa: các payload
data/jobbị wrap được unwrap;schedule.kindvàpayload.kindđược suy luận khi an toàn. - Giá trị mặc định: các giá trị mặc định an toàn được áp dụng cho
wakeModevàsessionTargetkhi thiếu. - Provider: Discord/Slack/Signal/iMessage giờ được hiển thị nhất quán trên CLI/UI.
Xem Cron jobs để biết dạng đã chuẩn hóa và các ví dụ.
Xác minh
- Theo dõi log Gateway để thấy lỗi
cron.addINVALID_REQUEST giảm đi. - Xác nhận Control UI cron status hiển thị số lượng job sau khi refresh.
Các bước tiếp theo tùy chọn
- Smoke test thủ công Control UI: thêm một cron job cho mỗi provider + xác minh số lượng job trong status.
Câu hỏi mở
cron.addcó nên chấp nhậnstaterõ ràng từ client không (hiện tại bị schema không cho phép)?- Chúng ta có nên cho phép
webchatlàm delivery provider rõ ràng không (hiện tại bị lọc trong delivery resolution)?