𝗪𝗵𝗲𝗻 𝗔𝗜 𝗔𝗴𝗲𝗻𝘁𝘀 𝗝𝗼𝗶𝗻 𝗬𝗷𝘀 𝗥𝗼𝗼𝗺𝘀, 𝗧𝗵𝗿𝗲𝗲 𝗔𝘀𝘀𝘂𝗺𝗽𝘁𝗶𝗼𝗻𝘀 𝗕𝗿𝗲𝗮𝗸
Thêm một LLM như một peer hạng nhất trong Yjs là một bước đi kiến trúc thông minh. Tuy nhiên, nó phá vỡ những giả định ngầm định mà ngăn xếp cộng tác (collaboration stack) của bạn đưa ra về tính đối xứng giữa các peer.
Hầu hết các hệ thống đều giả định rằng tất cả các peer đều hoạt động với tốc độ của con người. Khi một AI agent tạo ra 3.000 từ mỗi phút, nó sẽ phá vỡ ba lĩnh vực cốt lõi: thông lượng (throughput), quyền sở hữu lệnh hoàn tác (undo ownership) và nhịp độ hiện diện (presence cadence).
Dưới đây là cách khắc phục chúng.
- Ngăn chặn tình trạng "đói" ghi dữ liệu (Write Starvation)
Trong mô hình CRDT, không có máy chủ trung tâm để điều tiết (throttle) các client. Một agent có thể làm tràn ngập chu kỳ đồng bộ hóa bằng các lệnh ghi liên tục. Điều này khiến người dùng là con người bị mất đi phần cửa sổ hội tụ (convergence window) của họ. Điều này dẫn đến tình trạng giật lag con trỏ và mất các bản cập nhật.
Giải pháp nằm ở tầng ứng dụng (application layer), chứ không phải tầng truyền tải (transport layer). Hãy sử dụng cơ chế token bucket giữa luồng LLM và lệnh ghi Yjs để giới hạn tốc độ của agent.
• Thiết lập dung lượng cho các thao tác được xếp hàng (queued operations). • Thiết lập tốc độ nạp lại (refill rate) để giữ agent dưới ngưỡng gây ảnh hưởng đến con người.
- Cô lập lịch sử hoàn tác (Undo History)
Nếu một agent dùng chung một origin với người dùng, Ctrl+Z sẽ trở nên hỗn loạn. Bạn không thể phân biệt được đâu là lỗi của con người và đâu là gợi ý của AI.
Hãy cấp cho agent một origin riêng. Sử dụng một UndoManager riêng biệt cho agent.
• UndoManager của người dùng chỉ theo dõi các hành động của con người. • UndoManager của agent xử lý các hành động đặc thù của AI. • Hiển thị "Từ chối gợi ý AI" dưới dạng một nút UI riêng biệt thay vì gắn nó vào phím Ctrl+Z mặc định.
- Hợp nhất các cập nhật hiện diện (Presence Updates)
Một AI agent tạo ra các thay đổi về vị trí nhanh hơn mức con người có thể nhìn thấy. Việc phát sóng (broadcasting) mọi thay đổi đơn lẻ sẽ tạo ra nhiễu trong chu kỳ render của bạn.
Bạn phải quản lý sự hiện diện của agent theo cách khác:
• Hợp nhất các cập nhật awareness theo một khoảng thời gian cố định thay vì theo từng thao tác.
• Thêm một trường type vào trạng thái awareness (ví dụ: type: 'agent').
• Sử dụng loại này để yêu cầu lớp render xử lý con trỏ theo cách khác.
Mô hình "agent-as-peer" là hướng đi đúng đắn để xây dựng. Thách thức nằm ở việc làm cho các giả định của bạn trở nên rõ ràng. Đừng coi việc giới hạn tốc độ (rate limiting), cô lập hoàn tác (undo isolation) và hợp nhất hiện diện (presence coalescing) là các trường hợp ngoại lệ (edge cases). Hãy coi chúng là các yêu cầu cốt lõi.
Source: https://dev.to/norfolkd/when-an-ai-agent-joins-your-yjs-room-three-assumptions-break-50h8