pojęcia dotyczące modernizacji GitHub Copilot

GitHub Copilot modernizacja wykorzystuje ustrukturyzowane podejście do uaktualniania projektów .NET. Zrozumienie sposobu działania agenta, w tym jego scenariuszy, umiejętności, zadań i przepływu pracy, pomaga efektywnie współpracować z agentem i uzyskiwać najlepsze wyniki.

Napiwek

Pomyśl o agencie jako wykwalifikowanym współpracowniku, który głęboko rozumie .NET, podąża za ustrukturyzowanym planem i dostosowuje się do twojej opinii. Im więcej kontekstu, tym lepiej działa agent.

Agent jako kolega z drużyny

Agent wyróżnia się w współpracy, a nie automatyzacji w próżni:

  • Głęboka wiedza o .NET: Agent rozumie pliki projektowe, zależności NuGet, zmiany krytyczne oraz wzorce aktualizacji w dziesiątkach technologii .NET zarówno dla projektów w C#, jak i Visual Basic.
  • Ustrukturyzowany przepływ pracy: Każda aktualizacja przechodzi przez ocenę, planowanie i realizację. Brak losowych zmian, brak niespodzianek.
  • Poznaj swoje preferencje: Gdy mówisz "zawsze używaj jawnych typów zamiast var"" agent zapisuje te preferencje scenario-instructions.md i zapamiętuje je między sesjami.
  • Korygowalny w trakcie: Podjąłeś złą decyzję? Poinformuj agenta. Dostosowuje się i stosuje korektę na przyszłość.
  • Wyjaśnia jego uzasadnienie: Zapytaj "dlaczego wybrałeś to podejście?" , a agent przeprowadzi Cię przez decyzję.

Scenariusze

Scenariusz to zarządzany, kompleksowy przepływ pracy modernizacji od początku do końca. Gdy poinformujesz agenta "uaktualnij moje rozwiązanie do .NET 10", wyzwalasz scenariusz .NET version upgrade.

Sposób odnajdywanego scenariuszy

Nie musisz zapamiętywać nazw scenariuszy. Agent automatycznie odnajduje odpowiednie scenariusze:

  1. Analizuje bazę kodu, aby poznać używane technologie, w tym język, wersję platformy, biblioteki i typy projektów.
  2. Określa, które scenariusze są istotne dla Twoich projektów.
  3. Klasyfikuje scenariusze według ważności i wagi. Najbardziej odpowiednie pojawiają się najpierw.

Możesz również zapytać bezpośrednio: "Jakie scenariusze są dostępne dla mojego rozwiązania?"

Trwałość scenariusza

Każdy aktywny scenariusz ma swój własny folder pod adresem .github/upgrades/{scenarioId}/. Folder scenariusza zawiera plan, postęp zadania, preferencje i dzienniki wykonywania. Folder jest częścią repozytorium Git.

Aby uzyskać pełną listę scenariuszy, zobacz Scenariusze i dokumentacja umiejętności.

Cykl życia przepływu pracy

Każdy scenariusz jest zgodny z tym samym cyklem życia: trzyetapowym przepływem pracy.

Etap 1. Ocena

Agent zbiera wszystkie potrzebne elementy przed rozpoczęciem pracy:

  • Struktura docelowa: Wersja, do której chcesz przeprowadzić uaktualnienie.
  • Strategia Git: Agent sugeruje rozgałęzianie, a Ty kontrolujesz szczegóły: nazwę gałęzi, czy używać gałęzi poszczególnych zadań oraz czas zatwierdzenia.
  • Tryb przepływu: Automatyczny (sterowany przez agenta) lub W trybie z przewodnikiem (ty zatwierdzasz każdy etap).
  • Parametry specyficzne dla scenariusza: W zależności od scenariusza agent może zadać więcej pytań.

Agent inicjuje obszar roboczy scenariusza pod adresem .github/upgrades/{scenarioId}/.

Następnie agent analizuje bazę kodu:

  • graf zależności projektu (kolejność topologiczna)
  • Zgodność pakietu NuGet ze strukturą docelową
  • Zmiany wpływające na zgodność API
  • Pokrycie testowe
  • Złożoność i czynniki ryzyka

Agent zapisuje szczegółowy raport oceny do assessment.md.

Na podstawie oceny agent ocenia rozwiązanie i określa, które decyzje dotyczące uaktualniania są istotne. Przedstawia rozsądne wartości domyślne i umożliwia przeglądanie i zastępowanie dowolnego wyboru.

Opcje mogą obejmować:

  • Strategia uaktualniania: Od dołu do góry, od góry do dołu lub jednocześnie.
  • Projektowe podejście do uaktualniania: przepisywanie w miejscu lub równolegle dla aplikacji internetowych; w miejscu lub z wieloplatformowym przeznaczeniem dla bibliotek.
  • Modernizacja technologii: Opcje uaktualniania, wstrzykiwania zależności, rejestrowania i konfiguracji programu Entity Framework.
  • Zarządzanie pakietami: Czy i kiedy należy wdrożyć centralne zarządzanie pakietami.
  • Obsługa zgodności: Jak adresować nieobsługiwane interfejsy API i pakiety.

Agent zapisuje potwierdzone decyzje do upgrade-options.md.

W trybie z przewodnikiem agent wstrzymuje się tutaj w celu przejrzenia przed kontynuowaniem.

Etap 2. Planowanie

Agent tworzy plan zadań na podstawie oceny i potwierdzonych opcji. Planowanie tworzy trzy kluczowe pliki:

  • plan.md: Plan uaktualniania ze strategią i opisami zadań.
  • scenario-instructions.md: Twoje preferencje, decyzje i pamięć agenta.
  • tasks.md — uporządkowana lista zadań wykonywanych przez agenta.

Etap 3. Wykonanie

Agent realizuje zadania w kolejności sekwencyjnej. Dla każdego zadania w tasks.md, agent postępuje zgodnie z cyklem: uruchamianie, wykonywanie, weryfikacja (kompilacja i testowanie) i ukończenie. Określasz, kiedy i jak agent zatwierdza zmiany: na zadanie, na grupę zadań lub na końcu. Agent podczas działania aktualizuje tasks.md za pomocą bieżących wskaźników stanu, aby można było śledzić postęp.

Strategie uaktualniania

Podczas etapu oceny agent ocenia rozwiązanie i zaleca jedną z następujących strategii:

Strategia Najlepsze dla Jak to działa
Dolna góra Duże rozwiązania z głębokimi grafami zależności Rozpocznij od projektów liści (bez zależności), pracuj w górę.
Od góry do dołu Szybka opinia na temat głównej aplikacji Rozpocznij od projektu aplikacji, popraw zależności zgodnie z potrzebami.
Wszystkie na raz Małe, proste rozwiązania Zaktualizuj wszystko za jednym razem.

Napiwek

Agent wyświetla tylko decyzje, które są istotne dla projektu. Prosta aplikacja konsolowa nie widzi opcji struktury sieci Web, a projekt bez programu Entity Framework nie widzi opcji uaktualniania bazy danych.

Umiejętności

Umiejętności to mniejsze możliwości modernizacji, ukierunkowane na konkretne cele. Gdy agent napotka kod EF6 podczas uaktualniania, ładuje moduł EF6-to-EF-Core ze szczegółowymi, krok po kroku instrukcjami aktualizacji. Wywołaj umiejętności bezpośrednio podczas uaktualniania: "uaktualnij usługi WCF w moim projekcie do platformy CoreWCF".

Agent jest dostarczany z ponad 30 wbudowanymi funkcjami, podzielonymi według domeny.

  • Dostęp do danych: Aktualizacja z EF6 do EF Core (code-first i EDMX), LINQ to SQL i SqlClient
  • Web/ASP.NET: Identity, Global.asax, OWIN, routing/filtry/pakietowanie MVC i WCF do CoreWCF
  • Serializacja: Newtonsoft.Json na System.Text.Json
  • Cloud: Azure Functions przechodzą z modelu w procesie do modelu izolowanego pracownika
  • Biblioteki: Od ADAL do MSAL, SignalR, PowerShell SDK i nie tylko

Umiejętności ładują się automatycznie na podstawie tego, co agent wykrywa w bazie kodu. Nie musisz zarządzać ładowaniem funkcji. Wystarczy opisać to, czego potrzebujesz.

Aby uzyskać pełną listę, zobacz Scenariusze i dokumentacja umiejętności.

Zadania

Zadania to atomowe jednostki pracy w scenariuszu. Każde zadanie reprezentuje określony, ograniczony fragment uaktualnienia, taki jak "Uaktualnij bibliotekę CommonLib z .NET 6 do .NET 10" lub "Uaktualnij użycie programu EF6 w elemerze danych do platformy EF Core".

Cykl życia zadania

Zadania przechodzą przez następujące stany:

  • Dostępne: Gotowe do uruchomienia, wszystkie zależności spełnione.
  • W toku: Agent aktywnie pracuje nad zadaniem.
  • Zakończone: Zastosowane zmiany kodu, kompilacja zakończona pomyślnie, testy zakończone pomyślnie.

Dla każdego zadania agent:

  1. Ładuje powiązane umiejętności i kontekst.
  2. Ocenia złożoność i decyduje, czy zadanie wymaga podzadań.
  3. Zapisuje podsumowanie zakresu do tasks/{taskId}/task.md.
  4. Wykonuje zmiany kodu.
  5. Sprawdza poprawność, uruchamiając kompilację i testy.
  6. Rejestruje wyniki w pliku tasks/{taskId}/progress-details.md.
  7. Zatwierdza zmiany i przechodzi do następnego zadania.

Zarządzanie stanem

Agent utrzymuje stan trwały, dzięki czemu można zatrzymać i wznowić działanie w dowolnym momencie. Wszystko znajduje się w repozytorium pod .github/upgrades/{scenarioId}/.

Plik Purpose
scenario-instructions.md Twoje preferencje, decyzje i instrukcje niestandardowe. Pamięć trwała agenta.
upgrade-options.md Potwierdzone decyzje dotyczące aktualizacji
plan.md Plan uaktualniania z opisami strategii i zadań
tasks.md Panel wizualnego postępu przedstawiający stan zadania
execution-log.md Szczegółowy dziennik wszystkich zmian i decyzji
tasks/{taskId}/task.md Zakres i kontekst poszczególnych zadań
tasks/{taskId}/progress-details.md Uwagi i wyniki wykonywania poszczególnych zadań

Wznawianie

Zamknij czat, zamknij środowisko IDE lub wróć następnego dnia. Agent kontynuuje tam, gdzie przerwano.

  1. W następnej interakcji agent automatycznie sprawdza bieżący stan obszaru roboczego.
  2. Agent wykrywa istniejący scenariusz i pokazuje bieżący postęp, taki jak "3 z 8 ukończonych zadań".
  3. Agent wykrywa nieaktualne zadania (zablokowane w toku z poprzedniej przerwanej sesji) i oferuje ich wznowienie lub ponowne uruchomienie.
  4. Agent ponownie ładuje preferencje z pliku scenario-instructions.md.

Ciągłość między środowiskami IDE

Ponieważ stan znajduje się w Git, można przełączać się między programem VS Code, Visual Studio i Copilot CLI w trakcie aktualizacji. Folder .github/upgrades/ jest stanem udostępnionym, który rozumieją oba środowiska IDE.

Napiwek

Zatwierdź folder .github/upgrades/ na swoją gałąź. Prześlij gałąź do zdalnego repozytorium, aby umożliwić członkom zespołu wyświetlanie postępu lub kontynuację aktualizacji na innej maszynie.

Tryby przepływu

Agent obsługuje dwa tryby przepływu, które kontrolują, ile masz nadzoru: tryb automatyczny i tryb z przewodnikiem.

Tryb automatyczny

Agent działa przez wszystkie etapy (ocena, planowanie i wykonywanie) bez zatrzymywania się na zatwierdzenie. Przedstawia kluczowe ustalenia i aktualizacje postępu, ale nieustannie pnie się naprzód.

Idealne dla doświadczonych użytkowników, prostych modernizacji i małych rozwiązań.

Tryb z przewodnikiem

Agent zatrzymuje się na granicy każdego etapu, aby umożliwić przegląd.

  • Po ocenie: "Oto, co znalazłem. Czy mogę kontynuować opcje uaktualniania?"
  • Po planowaniu: "Oto plan zadania. Czy chcesz, abym rozpoczął wykonywanie?"
  • Przed złożonymi podziałami zadań: "To zadanie jest złożone. Oto, jak bym go rozbił."

Najlepsze dla osób korzystających po raz pierwszy, przy złożonych rozwiązaniach oraz gdy chcesz nauczyć się procesu.

Przełączanie trybów w dowolnym momencie

  • Powiedz "wstrzymaj" lub "przełącz się do trybu z przewodnikiem", aby przełączyć się do trybu z przewodnikiem.
  • Powiedz "kontynuuj" lub "przejdź do przodu" , aby przełączyć się do trybu automatycznego.

Napiwek

Zacznij od trybu z przewodnikiem, aby zapoznać się z pierwszym uaktualnieniem, aby zrozumieć przepływ pracy, a następnie przełącz się na automatyczny, gdy będziesz komfortowo.