जब AI एजेंट Yjs रूम में शामिल होते हैं, तो तीन धारणाएं टूट जाती हैं
एक LLM को first-class Yjs peer के रूप में जोड़ना एक स्मार्ट आर्किटेक्चरल कदम है। हालाँकि, यह आपके कोलैबोरेशन स्टैक द्वारा peer symmetry के बारे में की जाने वाली मौन धारणाओं को तोड़ देता है।
अधिकांश सिस्टम यह मानकर चलते हैं कि सभी peers मानवीय गति से काम करते हैं। जब एक AI एजेंट प्रति मिनट 3,000 शब्द जेनरेट करता है, तो यह तीन मुख्य क्षेत्रों को प्रभावित करता है: throughput, undo ownership, और presence cadence।
इन्हें ठीक करने का तरीका यहाँ दिया गया है।
- Write Starvation को रोकें
एक CRDT मॉडल में, क्लाइंट्स को थ्रॉटल (throttle) करने के लिए कोई केंद्रीय सर्वर नहीं होता है। एक एजेंट लगातार writes के साथ सिंक साइकिल को भर सकता है। इससे मानवीय उपयोगकर्ताओं को कन्वर्जेंस विंडो (convergence window) का उनका हिस्सा नहीं मिल पाता। इसके परिणामस्वरूप कर्सर लैग (cursor lag) और अपडेट्स ड्रॉप होने की समस्या होती है।
इसका समाधान एप्लिकेशन लेयर पर होना चाहिए, न कि ट्रांसपोर्ट लेयर पर। एजेंट की गति को सीमित करने के लिए LLM स्ट्रीम और Yjs write के बीच एक token bucket का उपयोग करें।
• कतारबद्ध (queued) ऑपरेशन्स के लिए एक क्षमता निर्धारित करें। • एजेंट को मानवीय starvation threshold से नीचे रखने के लिए एक refill rate सेट करें।
- Undo History को अलग करें
यदि कोई एजेंट किसी उपयोगकर्ता के साथ एक ही origin साझा करता है, तो Ctrl+Z एक समस्या बन जाता है। आप मानवीय गलती और AI सुझाव के बीच अंतर नहीं कर पाएंगे।
एजेंट को अपना स्वयं का origin दें। एजेंट के लिए एक अलग UndoManager का उपयोग करें।
• उपयोगकर्ता का UndoManager केवल मानवीय कार्यों को ट्रैक करता है। • एजेंट का UndoManager AI-विशिष्ट कार्यों को संभालता है। • इसे डिफ़ॉल्ट Ctrl+Z से जोड़ने के बजाय, "Reject AI suggestion" को एक अलग UI बटन के रूप में दिखाएं।
- Presence Updates को मर्ज (Coalesce) करें
एक AI एजेंट मानवीय दृष्टि की तुलना में बहुत तेज़ी से पोजीशन परिवर्तन (position changes) उत्पन्न करता है। हर एक बदलाव को ब्रॉडकास्ट करने से आपके रेंडर साइकिल (render cycle) में शोर (noise) पैदा होता है।
आपको एजेंट प्रेजेंस (agent presence) को अलग तरह से प्रबंधित करना होगा:
• प्रति-ऑपरेशन के बजाय एक निश्चित अंतराल पर awareness updates को मर्ज करें। • awareness state में एक type फ़ील्ड जोड़ें (जैसे, type: 'agent')। • अपने रेंडरिंग लेयर को कर्सर के साथ अलग तरह से व्यवहार करने के लिए कहने हेतु इस type का उपयोग करें।
'agent-as-peer' पैटर्न ही निर्माण का सही तरीका है। चुनौती अपनी धारणाओं को स्पष्ट करने में है। rate limiting, undo isolation, और presence coalescing को edge cases न समझें। इन्हें मुख्य आवश्यकताओं (core requirements) के रूप में मानें।
Source: https://dev.to/norfolkd/when-an-ai-agent-joins-your-yjs-room-three-assumptions-break-50h8