Next Edit Suggestions: Copilot wie co zrobisz dalej
Jak działa Next Edit Suggestions - funkcja, która przewiduje kolejne logiczne zmiany w kodzie na podstawie Twojego edytowania.
Czego się nauczysz
- Czym Next Edit Suggestions różni się od zwykłego ghost text
- Jak NES przewiduje nie tylko treść zmiany, ale też miejsce kolejnego edytu
- Kiedy NES realnie przyspiesza pracę, a kiedy lepiej go ograniczyć
To nie jest zwykłe autocomplete
Kiedy większość osób słyszy “inline suggestions”, myśli o dokańczaniu bieżącej linii.
To prawda, ale tylko częściowo.
VS Code poszedł krok dalej i dołożył Next Edit Suggestions, czyli tryb, w którym Copilot próbuje przewidzieć nie tylko to, co dopiszesz przy kursorze, ale też jaka powinna być następna logiczna zmiana w istniejącym kodzie.
To jest duża różnica.
Ghost text pomaga kończyć lokalny fragment. NES pomaga utrzymać ciąg zmian.
Dlaczego NES istnieje
Oficjalna dokumentacja trafnie opisuje problem: większość pracy programisty nie polega na pisaniu od zera, tylko na edytowaniu już istniejącego kodu.
A edycje rzadko występują w izolacji.
Zmieniasz nazwę pola i za chwilę trzeba poprawić użycia. Dodajesz parametr i potem trzeba go przepchnąć dalej. Naprawiasz jedną część warunku i nagle pojawiają się dwa kolejne miejsca do poprawki.
NES jest odpowiedzią właśnie na taki workflow.
Zamiast zostawiać Cię po pierwszym edycie, Copilot próbuje odgadnąć, co powinno wydarzyć się dalej.
Co dokładnie przewiduje NES
Najważniejsza różnica względem zwykłych podpowiedzi jest taka, że NES przewiduje dwie rzeczy naraz:
- lokalizację kolejnego edytu
- treść tej zmiany
To znaczy, że system nie tylko sugeruje kod. On również pokazuje, gdzie powinieneś pójść dalej.
W praktyce to daje inny rytm pracy:
- wykonujesz pierwszą zmianę
- Copilot wskazuje kolejne miejsce
- przechodzisz tam klawiszem
Tab - akceptujesz lub odrzucasz następną sugestię
To brzmi drobnie, ale przy zmianach rozsianych po pliku daje realny zysk. Odpada ręczne skakanie po referencjach i szukanie, co jeszcze trzeba poprawić.
Jak wygląda praca z NES w edytorze
Dokumentacja opisuje dwa podstawowe elementy interfejsu:
- strzałkę w gutterze
- nawigację i akceptację przez
Tab
Strzałka mówi, że gdzieś względem bieżącej pozycji istnieje sugerowana kolejna zmiana. Możesz do niej przejść, a potem zaakceptować propozycję. Przy bardziej złożonych edytach NES potrafi zasugerować większy fragment zmian, nie tylko pojedynczy symbol.
To jest ważne, bo zmienia sposób poruszania się po pliku. Zamiast ręcznie polować na następne miejsce, podążasz za logicznym ciągiem edytów.
Gdzie NES sprawdza się najlepiej
Oficjalne use case’i są bardzo trafne i dobrze pokazują charakter tej funkcji.
1. Proste pomyłki
NES potrafi wychwycić literówki i mechaniczne błędy, na przykład złą nazwę słowa kluczowego albo oczywistą niespójność w zapisie.
To nie jest najbardziej spektakularny przypadek, ale bardzo praktyczny. W codziennej pracy takie drobne poprawki pojawiają się cały czas.
2. Błędy logiczne
Dokumentacja pokazuje też przykłady trudniejszych poprawek, na przykład odwróconej logiki warunku albo błędnego operatora.
To ważne, bo NES nie ogranicza się do kosmetyki. On próbuje rozpoznać wzorzec błędu i podpowiedzieć sensowną zmianę w kontekście kodu, a nie tylko na poziomie pojedynczych znaków.
3. Zmiana intencji
To jest jeden z najmocniejszych scenariuszy.
Zmieniasz klasę Point na Point3D, a Copilot zaczyna podpowiadać kolejne miejsca, gdzie trzeba dopisać z albo rozszerzyć obliczenia.
Tu najlepiej widać, że NES nie jest zwykłym kończeniem linii. To mechanizm śledzenia konsekwencji edytu.
4. Refaktoryzacja i dopinanie stylu
Jeśli zmienisz nazwę elementu albo wkleisz kod, który nie pasuje stylistycznie do otoczenia, NES może zasugerować kolejne kroki porządkujące.
I to jest bardzo cenne, bo część codziennej pracy to właśnie domykanie spójności po zmianie, a nie sama pierwsza edycja.
NES dobrze działa tylko wtedy, gdy zmiana ma czytelną logikę
To kluczowe ograniczenie, które warto zrozumieć od razu.
NES nie czyta Ci w myślach. On rozpoznaje wzorzec wynikający z aktualnej zmiany i z kontekstu pliku.
Dlatego najlepiej działa, gdy:
- kod jest spójny
- intencja zmiany jest czytelna
- kolejne miejsca wynikają logicznie z pierwszego edytu
Jeżeli sam kod jest chaotyczny, nazwy są niespójne albo zmieniasz kilka rzeczy naraz bez wyraźnego wzorca, jakość NES spada.
To znów dobrze łączy się z wcześniejszą lekcją o kontekście. Lepszy lokalny porządek daje lepsze przewidywanie.
Ustawienia, które naprawdę mają znaczenie
Dokumentacja i settings reference wskazują kilka ustawień, które warto znać praktycznie, a nie tylko teoretycznie:
github.copilot.nextEditSuggestions.enabledwłącza samą funkcjęgithub.copilot.nextEditSuggestions.fixespozwala podpowiadać poprawki wynikające z diagnostyki, na przykład brakujących importóweditor.inlineSuggest.edits.showCollapsedogranicza wizualny szum, pokazując większe zmiany dopiero przy przejściu do sugestii albo hoverzeeditor.inlineSuggest.edits.renderSideBySidesteruje tym, czy większe sugestie pokazują się obok, czy pod kodemeditor.inlineSuggest.edits.allowCodeShiftingkontroluje, czy kod może zostać przesunięty, by wygodnie pokazać większą sugestię
To są ustawienia, które rzeczywiście wpływają na komfort pracy. Reszta często jest już bardziej kosmetyczna.
Kiedy NES pomaga, a kiedy przeszkadza
NES jest bardzo dobry wtedy, gdy masz serię powiązanych zmian w jednym pliku albo w lokalnym fragmencie kodu.
Sprawdza się przy:
- refaktorach nazw
- propagacji zmian w sygnaturach
- dopinaniu brakujących konsekwencji po jednej edycji
- prostych naprawach wynikających z diagnostyki
Może przeszkadzać, gdy:
- pracujesz eksperymentalnie i sam jeszcze nie wiesz, jaki będzie kolejny krok
- kod jest bardzo nieregularny
- sugestie zasłaniają Ci widok i generują za dużo szumu wizualnego
W takich momentach nie trzeba NES traktować religijnie. Trzeba nim zarządzać.
Mój praktyczny filtr dla NES
Jeśli po pierwszej zmianie w głowie od razu pojawia Ci się myśl: “zaraz będę musiał poprawić jeszcze dwa albo trzy miejsca”, to zwykle jest dobry kandydat na NES.
Jeśli natomiast pracujesz bardziej eksploracyjnie i każda kolejna decyzja zależy od ręcznej oceny, to zwykłe suggestions albo chat bywają lepsze.
Ćwiczenie praktyczne
Zrób mały refaktor w jednym pliku:
- Zmień nazwę zmiennej, pola albo funkcji w jednym miejscu.
- Obserwuj, czy NES pokaże kolejne logiczne punkty edycji.
- Przejdź do nich klawiszem
Tabi zdecyduj, które sugestie rzeczywiście przyspieszają pracę. - Powtórz ćwiczenie z włączonym i wyłączonym
showCollapsed. - Jeśli masz w pliku squiggles, sprawdź też działanie
github.copilot.nextEditSuggestions.fixes.
Po tym ćwiczeniu dobrze widać, że wartość NES nie polega na jednej efektownej sztuczce. Polega na redukowaniu kosztu przechodzenia przez ciąg powiązanych zmian.
Kluczowe wnioski
- NES przewiduje nie tylko treść zmiany, ale też miejsce kolejnego edytu.
- Najmocniej działa przy refaktorach, zmianie intencji i domykaniu konsekwencji jednej edycji.
- To funkcja do pracy na istniejącym kodzie, nie do zwykłego dopisywania bieżącej linii.
- Komfort pracy z NES mocno zależy od ustawień redukujących szum wizualny.
- Dobrze uporządkowany lokalny kontekst daje dużo lepsze sugestie niż chaotyczny kod.
Co dalej
Skoro masz już dwa poziomy pracy inline, czas domknąć trzeci element: jak pisać i organizować kod tak, żeby te sugestie były trafniejsze od samego początku.