وقتی ایجنت‌های هوش مصنوعی به اتاق‌های Yjs می‌پیوندند، سه فرض اصلی فرو می‌ریزند

اضافه کردن یک LLM به عنوان یک همتای (peer) درجه‌اول در Yjs، یک حرکت معماری هوشمندانه است. با این حال، این کار فرض‌های ضمنی پشته همکاری (collaboration stack) شما را در مورد تقارن همتایان از بین می‌برد.

اکثر سیستم‌ها فرض می‌کنند که همه همتایان با سرعت انسان کار می‌کنند. وقتی یک ایجنت هوش مصنوعی در دقیقه ۳۰۰۰ کلمه تولید می‌کند، سه حوزه اصلی را مختل می‌کند: نرخ پردازش (throughput)، مالکیت عملیات لغو (undo ownership) و آهنگ حضور (presence cadence).

در اینجا روش اصلاح آن‌ها آورده شده است.

۱. جلوگیری از گرسنگی نوشتاری (Write Starvation)

در مدل CRDT، هیچ سرور مرکزی برای محدود کردن سرعت کلاینت‌ها وجود ندارد. یک ایجنت می‌تواند با نوشتن‌های مداوم، چرخه همگام‌سازی (sync cycle) را پر کند. این امر باعث می‌شود کاربران انسانی سهم خود را از پنجره همگرایی (convergence window) از دست بدهند که منجر به تأخیر نشانگر (cursor lag) و از دست رفتن به‌روزرسانی‌ها می‌شود.

راه حل باید در لایه اپلیکیشن باشد، نه در لایه انتقال (transport layer). از یک الگوی توکن باکت (token bucket) بین جریان LLM و عملیات نوشتن در Yjs استفاده کنید تا سرعت ایجنت را محدود کنید.

• ظرفیتی برای عملیات‌های در صف تعیین کنید. • یک نرخ بازسازی (refill rate) تعیین کنید تا ایجنت را پایین‌تر از آستانه گرسنگی کاربران انسانی نگه دارید.

۲. جداسازی تاریخچه لغو (Undo History)

اگر یک ایجنت با یک کاربر منشأ (origin) مشترک داشته باشد، استفاده از Ctrl+Z به آشفتگی تبدیل می‌شود. شما نمی‌توانید بین اشتباه انسان و پیشنهاد هوش مصنوعی تمایز قائل شوید.

به ایجنت منشأ مخصوص به خود را بدهید. از یک UndoManager مجزا برای ایجنت استفاده کنید.

• UndoManager کاربر فقط اقدامات انسانی را دنبال می‌کند. • UndoManager ایجنت اقدامات مخصوص هوش مصنوعی را مدیریت می‌کند. • به جای گره زدن آن به Ctrl+Z پیش‌فرض، گزینه "Reject AI suggestion" را به عنوان یک دکمه مجزا در رابط کاربری (UI) نمایش دهید.

۳. تجمیع به‌روزرسانی‌های حضور (Presence Updates)

یک ایجنت هوش مصنوعی تغییرات موقعیت را سریع‌تر از آنچه انسان بتواند ببیند، تولید می‌کند. پخش کردن (broadcasting) تک‌تک تغییرات، باعث ایجاد نویز در چرخه رندر شما می‌شود.

شما باید حضور ایجنت را به گونه‌ای متفاوت مدیریت کنید:

• به‌روزرسانی‌های آگاهی (awareness updates) را به جای هر عملیات، در فواصل زمانی ثابت تجمیع کنید. • یک فیلد نوع (type) به وضعیت آگاهی اضافه کنید (مثلاً type: 'agent'). • از این نوع استفاده کنید تا به لایه رندر خود بگویید با نشانگر (cursor) متفاوت رفتار کند.

الگوی «ایجنت به عنوان همتا» (agent-as-peer) روش درستی برای ساختن است. چالش اصلی، صریح کردن فرض‌هاست. با محدودسازی نرخ (rate limiting)، جداسازی لغو (undo isolation) و تجمیع حضور (presence coalescing) به عنوان موارد استثنایی (edge cases) برخورد نکنید. آن‌ها را به عنوان الزامات اصلی در نظر بگیرید.

Source: https://dev.to/norfolkd/when-an-ai-agent-joins-your-yjs-room-three-assumptions-break-50h8