𝗪𝗵𝗲𝗻 𝗔𝗜 𝗔𝗴𝗲𝗻𝘁𝘀 𝗝𝗼𝗶𝗻 𝗬𝗷𝘀 𝗥𝗼𝗼𝗺𝘀, 𝗧𝗵𝗿𝗲𝗲 𝗔𝘀𝘀𝘂𝗺𝗽𝘁𝗶𝗼𝗻𝘀 𝗕𝗿𝗲𝗮𝗸
Het toevoegen van een LLM als een 'first-class' Yjs-peer is een slimme architecturale zet. Het doorbreekt echter de impliciete aannames die je samenwerkingsstack maakt over peer-symmetrie.
De meeste systemen gaan ervan uit dat alle peers op menselijke snelheid werken. Wanneer een AI-agent 3.000 woorden per minuut genereert, heeft dit gevolgen voor drie kerngebieden: throughput, undo-eigenaarschap en de cadans van aanwezigheid (presence cadence).
Hier is hoe je dit oplost.
- Stop Write Starvation
In een CRDT-model is er geen centrale server om clients te beperken (throttling). Een agent kan de synchronisatiecyclus overspoelen met constante schrijfacties. Dit ontneemt menselijke gebruikers hun deel van het convergentievenster, wat leidt tot cursor-lag en gemiste updates.
De oplossing moet op de applicatielaag liggen, niet op de transportlaag. Gebruik een token bucket tussen de LLM-stream en de Yjs-schrijfactie om de snelheid van de agent te beperken.
• Stel een capaciteit in voor wachtrij-operaties. • Stel een bijvulsnelheid (refill rate) in om de agent onder de drempelwaarde te houden waarbij menselijke gebruikers worden benadeeld.
- Isoleer de Undo-geschiedenis
Als een agent dezelfde origin deelt als een gebruiker, wordt Ctrl+Z een puinhoop. Je kunt geen onderscheid maken tussen een menselijke fout en een AI-suggestie.
Geef de agent een eigen origin. Gebruik een aparte UndoManager voor de agent.
• De UndoManager van de gebruiker houdt alleen menselijke acties bij. • De UndoManager van de agent handelt AI-specifieke acties af. • Presenteer "AI-suggestie weigeren" als een aparte UI-knop in plaats van het te koppelen aan de standaard Ctrl+Z.
- Voeg Presence-updates samen
Een AI-agent genereert positiewijzigingen sneller dan een mens kan waarnemen. Het uitzenden van elke individuele wijziging zorgt voor ruis in je render-cyclus.
Je moet de aanwezigheid van de agent anders beheren:
• Voeg awareness-updates samen op een vast interval in plaats van per operatie. • Voeg een type-veld toe aan de awareness-status (bijv. type: 'agent'). • Gebruik dit type om je rendering-laag te laten weten dat de cursor anders behandeld moet worden.
Het 'agent-as-peer'-patroon is de juiste manier om te bouwen. De uitdaging is om je aannames expliciet te maken. Behandel rate limiting, undo-isolatie en het samenvoegen van aanwezigheid niet als randgevallen, maar als kernvereisten.
Bron: https://dev.to/norfolkd/when-an-ai-agent-joins-your-yjs-room-three-assumptions-break-50h8