Najlepsze rozwiązania dotyczące modernizacji GitHub Copilot

Postępuj zgodnie z tymi wytycznymi, aby uzyskać najlepsze wyniki z modernizacji GitHub Copilot podczas uaktualniania projektów .NET.

Zanim zaczniesz

Przygotuj projekty przed rozpoczęciem uaktualniania, aby uzyskać najlepsze wyniki.

Sprawdź, czy kompilacje i testy rozwiązania przeszły pomyślnie

Agent weryfikuje zmiany wprowadzone przez uruchomienie kompilacji i testów. Jeśli Twoje rozwiązanie jest już niesprawne przed rozpoczęciem, agent nie może odróżnić istniejących błędów od problemów, które wprowadził.

Zadokumentuj wszystkie znane niepowodzenia testów w scenario-instructions.md, aby agent wiedział, które z nich zignorować.

Zatwierdzanie lub usuwanie niezatwierdzonych prac

Zacznij od czystego katalogu roboczego, aby uniknąć mieszania się niezatwierdzonych zmian z wprowadzonymi przez agenta. Czysta linia bazowa ułatwia przeglądanie lub przywracanie zmian.

git stash
git status

Tworzenie kopii zapasowych repozytoriów innych niż Git

Agent współpracuje również z folderami, które nie są pod kontrolą źródła. Jeśli projekt nie znajduje się w repozytorium Git, agent pomija operacje rozgałęzienia i zatwierdzania. Jeśli tak, wykonaj kopię zapasową folderu projektu przed rozpoczęciem, aby można było go przywrócić w razie potrzeby.

Rozważ zainicjowanie lokalnego repozytorium Git przed rozpoczęciem uaktualniania, nawet jeśli nie wypchniesz go do dostawcy usług w chmurze. Lokalne repozytorium Git umożliwia:

  • Wycofaj poszczególne zmiany za pomocą polecenia git revert.
  • Śledź krok po kroku postęp aktualizacji w historii zatwierdzeń.
  • Kontrolowanie, które zmiany mają być zachowywane lub odrzucane.
  • Przechowuj bezpiecznie oryginalny kod w gałęzi głównej, gdy agent pracuje w oddzielnej gałęzi.
cd your-project-folder
git init
git add .
git commit -m "Baseline before upgrade"

Przejrzyj pokrycie testów

Agent opiera się na testach, aby sprawdzić, czy jego zmiany nie przerywają działania. Projekty z dobrym pokryciem testowym uzyskują uaktualnienia o wyższej niezawodności.

Napiwek

Nie potrzebujesz 100% pokrycia. Skup się na kodzie, który najprawdopodobniej zmieni się, na przykład granice interfejsu API, serializacja, dostęp do bazy danych i uwierzytelnianie.

Rozpocznij od małej

Jeśli używasz agenta po raz pierwszy, wybierz mały projekt o niskim ryzyku jako projekt pilotażowy. Biblioteka klas lub projekt narzędziowy jest idealnym rozwiązaniem. Zaczynanie od małych projektów pozwala zrozumieć przepływ pracy, budować pewność siebie i zidentyfikować wszelkie problemy specyficzne dla repozytorium przed zajęciem się główną aplikacją.

Podczas uaktualniania

Postępuj zgodnie z tymi wytycznymi, gdy agent zarządza procesem uaktualniania.

Korzystanie z trybu z przewodnikiem na potrzeby pierwszego uaktualnienia

Agent obsługuje tryby sterowane i automatyczne. W trybie z przewodnikiem agent wstrzymuje się w kluczowych punktach decyzyjnych, aby umożliwić Twoją ocenę i zatwierdzenie. Zacznij od trybu z przewodnikiem, aby dowiedzieć się, co robi agent i dlaczego. Przełącz się na tryb automatyczny, gdy będziesz zaznajomiony z procesem pracy.

Uważnie przejrzyj ocenę

Ocena jest najlepszą okazją do przechwytywania problemów przed rozpoczęciem wprowadzania zmian przez agenta. Wyszukaj:

  • Projekty, które agent mógł przeoczyć lub błędnie zidentyfikować.
  • Zależności, o których wiesz, że są problematyczne.
  • Cokolwiek niezwykłego w twoim rozwiązaniu, które agent powinien wiedzieć.

Jeśli coś zauważysz, poinformuj agenta na czacie lub dodaj informacje do elementu scenario-instructions.md. Edytuj assessment.md bezpośrednio, aby dodać kontekst, poprawić błędnie zidentyfikowane projekty lub oznaczyć problemy, zanim agent przejdzie do planowania.

Poświęć czas na planowanie

Agent generuje plan na podstawie oceny. Przed kontynuowaniem przejrzyj plan:

  • Czy kolejność ma sens dla bazy kodu?
  • Czy istnieją zależności, o których agent może nie wiedzieć?
  • Czy jakiekolwiek projekty powinny być wykluczone lub obsługiwane inaczej?

Poproś agenta o zmianę kolejności zadań, pominięcie projektów lub zmianę podejścia. Znasz bazę kodu lepiej niż agent, więc użyj tej wiedzy. plan.md Edytuj plik bezpośrednio, aby dostosować kolejność zadań, dodać zadania lub usunąć zadania.

Ostrzeżenie

Należy zachować ostrożność podczas bezpośredniej edycji plan.md. Agent może nie w pełni interpretować zmian, jeśli one tworzą sprzeczne instrukcje. Na przykład usunięcie projektu zależności przy zachowaniu projektów, które są od niego zależne.

Prześlij opinię natychmiast

Agent uczy się na podstawie twoich poprawek w ramach sesji. Jeśli agent dokona wyboru, nie zgadzasz się z:

  • Powiedz to od razu: "Nie używaj tego wzorca, zamiast tego użyj języka X".
  • Dodaj trwałe wskazówki do scenario-instructions.md, aby agent zapamiętywał w różnych zadaniach i sesjach.

Bądź zaangażowany podczas wykonywania

Wykonywanie wymaga zaangażowania. Przed uruchomieniem agenta zapoznaj się z zawartością tasks.md:

  • Czy kolejność zadań ma sens dla bazy kodu?
  • Czy istnieją zadania, które chcesz pominąć lub przeprowadzić ponowne sekwencjonowanie?
  • Czy brakuje zadań?

Poproś agenta o dostosowanie listy zadań lub edycję tasks.md bezpośrednio przed rozpoczęciem wykonywania. Po rozpoczęciu wykonywania, jeśli agent popełni błąd w trakcie zadania, poinformuj go natychmiast — zastosuje poprawkę przy kolejnych działaniach.

Wiesz, że baza kodu jest lepsza niż agent, więc używaj tej wiedzy na każdym etapie.

Typowe pułapki

Poszukaj tych typowych problemów, które mogą spowalniać lub komplikować uaktualnienie.

Duże rozwiązania z ponad 50 projektami

Agent działa w projekcie po projekcie, więc duże rozwiązania zajmują trochę czasu. Bądź cierpliwy i monitoruj postęp. Rozważ rozpoczęcie od jednego reprezentatywnego projektu od początku do końca przed zatwierdzeniem pełnego rozwiązania. Na wczesnym etapie pilotażu pojedynczego projektu występują problemy systemowe.

Prywatne kanały informacyjne NuGet

W przypadku prywatnych źródeł danych NuGet uwierzytelnij się przed rozpoczęciem uaktualniania (na przykład za pośrednictwem dostawcy poświadczeń organizacji lub konfiguracji źródła danych). Bez uwierzytelnienia niepowodzenie w przywracaniu pakietów blokuje postęp.

Niestandardowe cele i importy programu MSBuild

Złożone dostosowania kompilacji, takie jak pliki niestandardowe .targets , import warunkowy lub niestandardowa logika kompilacji, mogą mylić ocenę i powodować nieoczekiwane błędy kompilacji. Jeśli twoje rozwiązanie ma te dostosowania, podaj je na czacie lub w scenario-instructions.md taki sposób, aby agent mógł je uwzględnić.

Przekroczenia czasu sesji

Długotrwałe uaktualnienia mogą obejmować wiele sesji. Agent śledzi postęp w plikach przepływu pracy (w katalogu .github/upgrades/), aby mógł kontynuować od miejsca, w którym został przerwany. Po rozpoczęciu nowej sesji wskaż, gdzie byłeś: "Kontynuuj uaktualnienie .NET 10. Byłem w środku projektu Data.Access."

Efektywna współpraca

Jakość interakcji bezpośrednio wpływa na jakość wyników.

Określanie zakresu

Tym bardziej szczegółowe informacje, tym lepiej działa agent:

Zamiast Spróbuj
"Uaktualnij wszystko" "Uaktualnianie projektu Data.Access do .NET 10"
"Napraw kompilację" "Naprawiono błąd kompilacji w CustomerService.cs powiązany z usuniętym interfejsem API"
"Uaktualnij elementy bazy danych" "Uaktualnianie programu Entity Framework 6 do programu EF Core w projekcie repozytorium"

Udostępnij swoje ograniczenia

Poinformuj agenta o rzeczywistych ograniczeniach z góry:

  • "Nie możemy utracić zgodności z poprzednimi wersjami w publicznym interfejsie API."
  • "Mamy termin wydania w ciągu dwóch tygodni, więc nadaj priorytet projektom internetowym".
  • "Starszy moduł raportowania powinien zostać wykluczony z tego uaktualnienia".

Wyjaśnienie architektury

Agent analizuje strukturę kodu, ale nie zna modelu psychicznego twojego zespołu. Pomóż agentowi zrozumieć:

  • Project A to nasza wspólna biblioteka. B, C i D wszystko zależy od niego."
  • "Projekt WebApi jest naszym publicznym interfejsem API; Internal.Api jest przeznaczony tylko dla usług wewnętrznych".
  • "Projekt Models jest generowany automatycznie na podstawie naszej specyfikacji interfejsu OpenAPI. Nie modyfikuj go bezpośrednio".

Zapytaj, dlaczego

Agent może wyjaśnić jego rozumowanie. Jeśli decyzja nie wygląda prawidłowo, zapytaj:

  • "Dlaczego wybrano kolejność od dołu?"
  • "Dlaczego uaktualniasz ten pakiet do wersji X zamiast Y?"
  • "Dlaczego podzieliłeś to na podzadania?"

Zrozumienie rozumowania pomaga przekazać lepszą opinię.

Wczesne zapisywanie preferencji

Jeśli masz silne preferencje dotyczące stylu kodowania, wzorców lub podejść, dodaj je do scenario-instructions.md w pierwszej sesji. Ten plik jest utrwalany między sesjami i zawsze znajduje się w kontekście agenta, co czyni go najbardziej niezawodnym sposobem wpływania na zachowanie.

Odzyskiwanie po problemach

Użyj tych strategii, gdy uaktualnienie nie przebiega zgodnie z oczekiwaniami.

Błędy kompilacji po zadaniu

Powiedz agentowi: "Kompilacja kończy się niepowodzeniem po ostatnim zadaniu". Agent analizuje błąd i próbuje go naprawić. Jeśli agent nie może rozwiązać problemu:

  1. Podaj poprawkę ręczną i poinformuj agenta o tym, co zrobiłeś. Agent uczy się z twojej poprawki.
  2. Przywróć zatwierdzenie (git revert lub przywróć poprzednie zatwierdzenie) i poproś agenta o wypróbowanie innego podejścia.
  3. Pomiń problematyczne zadanie i wróć do niego później.

Wybrana niewłaściwa strategia

Jeśli ogólne podejście agenta nie działa dla bazy kodu, uruchom ponownie etap planowania:

  • "Wykonajmy ponownie plan. Chcę najpierw uaktualnić projekty internetowe, zamiast stosować podejście oddolne.
  • "Zmień strategię, aby uaktualnić wszystkie biblioteki udostępnione w jednej operacji".

Agent zablokowany w pętli

Jeśli agent powtarza tę samą poprawkę bez postępu, powiedz "Zatrzymaj" i opisz, co obserwujesz, lub ręcznie zatrzymaj sesję. Agent może zresetować swoje podejście i spróbować coś innego.

Cofnij wszystkie zmiany

Jeśli do uaktualnienia użyto gałęzi Git, cofnij wszystko, przełączając się z powrotem do oryginalnej gałęzi:

git checkout your-original-branch
git branch -D upgrade-branch

Oryginalny kod pozostaje nietknięty. Jeśli pracujesz bez kontroli źródła, przywróć kopię zapasową utworzoną przed rozpoczęciem.

Bezpieczeństwo i prywatność

  • Fragmenty kodu: GitHub Copilot przetwarza je zgodnie z zasadami ochrony prywatności GitHub Copilot i nie zachowuje ich poza bieżącą sesją.
  • Pliki przepływu pracy (scenario-instructions.mdniestandardowe zadania, preferencje) pozostają w repozytorium w obszarze .github/upgrades/. GitHub nie przesyła tych plików do usług zewnętrznych.
  • Folder .github/upgrades/ jest częścią repozytorium. Zatwierdź folder, ponieważ zawiera informacje o postępie i stanie aktualizacji. Aby wznowić pracę między sesjami, agent potrzebuje folderu. Można go usunąć po zakończeniu uaktualniania.
  • Telemetria: wyłącz za pomocą ustawień telemetrii środowiska IDE.

Porady dotyczące wydajności

  • Zamknij niepotrzebne pliki i karty: agent analizuje aktywny obszar roboczy, a mniej otwartych plików oznacza mniej szumu.
  • Uaktualnianie w etapach dla bardzo dużych rozwiązań: Zamiast uaktualniać wszystkie projekty naraz, należy je grupować. Na przykład najpierw uaktualnij wszystkie biblioteki, a następnie wszystkie projekty internetowe, a następnie testy.
  • Użyj buforowania kompilacji: agent uruchamia wiele przyrostowych procesów kompilacji podczas weryfikacji. Rozgrzane pamięci podręczne kompilacji znacznie przyspieszają walidację. Unikaj czyszczenia danych wyjściowych kompilacji między zadaniami.