Operacje wykonywane przez asystenta AI nad kodem dzielą się na trzy poziomy abstrakcji o rosnącej złożoności i ryzyku. Świadome rozróżnienie tych poziomów jest praktyczne — każdy ma inny profil błędów, inne wymagania weryfikacyjne, inny rozkład czasu pracy programisty.
Uzupełnianie (completion). Najprostszy poziom — model przewiduje kontynuację rozpoczętej już sekwencji znaków lub linii. Używa kontekstu otaczającego kursor, sygnatur funkcji, importów, typów. Klasyczny tryb pracy GitHub Copilota i wszystkich asystentów IDE. Profil błędu: typowo bezpieczny — programista widzi propozycję, akceptuje lub odrzuca w ułamku sekundy. Ryzyko: subtelne błędy, których programista nie zauważa, akceptując propozycję rutynowo.
Generowanie (generation). Drugi poziom — model produkuje większy fragment kodu na podstawie naturalnej instrukcji („napisz funkcję, która...” lub „dodaj endpoint REST dla...”). Zadanie jest zlokalizowane, zwykle w obrębie jednej-trzech funkcji. Profil błędu: średni — propozycja musi być zrecenzowana w całości, błędy logiczne pojawiają się rzadziej niż w completion (model „wie”, że pisze funkcję), ale są kosztowniejsze (cała funkcja do przejrzenia, nie pojedyncza linia). Ryzyko: halucynacja API biblioteki, którą model zna pobieżnie.
Synteza (synthesis). Trzeci poziom — model wykonuje sekwencję operacji obejmującą wiele plików, decyzję o których podejmuje samodzielnie. Klasyczny tryb agentowy: „dodaj nową funkcjonalność X do systemu”, agent czyta strukturę projektu, identyfikuje miejsca wymagające modyfikacji, wprowadza zmiany. Profil błędu: wysoki i strukturalny — błąd we wczesnym kroku decyzji propaguje przez kolejne kroki. Ryzyko: niespójność architektoniczna, niezgodność z konwencjami zespołu, zmiany w plikach, których programista nie spodziewałby się modyfikować.
Praktyczna konsekwencja: poziom weryfikacji wyjścia musi rosnąć wraz z poziomem operacji. Completion można akceptować rutynowo, ale z czujnością na subtelne błędy. Generation wymaga uważnej recenzji całego wygenerowanego fragmentu. Synthesis wymaga przejścia przez całą sekwencję zmian — oznacza diff w narzędziu code review, czytanego z taką samą uwagą, jak diff od kolegi z zespołu.