Gdy agenci AI dołączają do pokoi Yjs, trzy założenia przestają działać

Dodanie LLM jako pełnoprawnego partnera (peer) w Yjs to inteligentny ruch architektoniczny. Jednak narusza to ciche założenia, jakie Twój stos narzędzi do współpracy (collaboration stack) przyjmuje względem symetrii partnerów.

Większość systemów zakłada, że wszyscy partnerzy pracują z ludzką prędkością. Gdy agent AI generuje 3000 słów na minutę, narusza to trzy kluczowe obszary: przepustowość (throughput), własność operacji undo oraz rytm obecności (presence cadence).

Oto jak to naprawić.

  1. Zapobieganie „głodzeniu” zapisów (Write Starvation)

W modelu CRDT nie ma centralnego serwera, który ograniczałby (throttle) klientów. Agent może zalać cykl synchronizacji nieustannymi zapisami. Powoduje to „głodzenie” ludzkich użytkowników, odbierając im ich część okna zbieżności (convergence window). Prowadzi to do opóźnień kursora i pomijania aktualizacji.

Rozwiązanie należy wprowadzić na warstwie aplikacji, a nie na warstwie transportu. Użyj mechanizmu token bucket pomiędzy strumieniem LLM a zapisem w Yjs, aby ograniczyć prędkość agenta.

• Ustaw pojemność dla kolejkowanych operacji. • Ustaw tempo uzupełniania (refill rate), aby utrzymać agenta poniżej progu „głodzenia” użytkowników.

  1. Izolacja historii undo

Jeśli agent współdzieli to samo źródło (origin) z użytkownikiem, Ctrl+Z staje się chaosem. Nie można odróżnić błędu człowieka od sugestii AI.

Nadaj agentowi własne źródło. Użyj osobnego UndoManager dla agenta.

• UndoManager użytkownika śledzi tylko działania człowieka. • UndoManager agenta obsługuje działania specyficzne dla AI. • Wyświetl „Odrzuć sugestię AI” jako osobny przycisk w interfejsie, zamiast wiązać go z domyślnym skrótem Ctrl+Z.

  1. Agregacja aktualizacji obecności (Presence Updates)

Agent AI generuje zmiany pozycji szybciej, niż człowiek jest w stanie je dostrzec. Rozgłaszanie każdej pojedynczej zmiany wprowadza szum w cyklu renderowania.

Musisz zarządzać obecnością agenta w inny sposób:

• Agreguj aktualizacje świadomości (awareness updates) w stałych odstępach czasu, a nie przy każdej operacji. • Dodaj pole type do stanu świadomości (np. type: 'agent'). • Użyj tego typu, aby poinstruować warstwę renderującą, by inaczej traktowała kursor.

Wzorzec „agent-jako-partner” (agent-as-peer) to właściwy sposób budowania. Wyzwaniem jest uczynienie założeń jawnymi. Nie traktuj ograniczania prędkości (rate limiting), izolacji undo i agregacji aktualizacji obecności jako przypadków brzegowych. Traktuj je jako kluczowe wymagania.

Źródło: https://dev.to/norfolkd/when-an-ai-agent-joins-your-yjs-room-three-assumptions-break-50h8