Tworzenie wielojęzycznego narzędzia do sprawdzania kodu za pomocą równoległych agentów antygrawitacyjnych

1. Wprowadzenie

3072ce11df4b71eb.jpeg

W tym ćwiczeniu utworzysz wielojęzyczny system audytu jakości kodu i automatycznego korygowania błędów przy użyciu równoległej orkiestracji wielu agentów w Antigravity. Zamiast tradycyjnej, ręcznej i liniowej weryfikacji wielu oddzielnych katalogów usług wdrożysz wyspecjalizowane podagenty AI, które będą równolegle sprawdzać różne stosy językowe.

Utworzysz agenta koordynatora, który będzie wykrywać układ projektu, zarządzać podagentami w celu przeprowadzania testów jednostkowych, tworzyć plan audytu, skanować pod kątem zgodności, generować raport z audytu i autonomicznie refaktoryzować w bazie kodu problemy z kodowaniem o wysokim priorytecie.

Czego się nauczysz

  • Odkrywanie projektu: jak wdrożyć agenta koordynatora, aby mapować katalogi i wykrywać języki programowania w złożonej architekturze mikroserwisów.
  • Orchestrated Parallelism: jak równolegle rozdzielać audyty kodu i testy jednostkowe między niezależne podagenty AI w określonych językach.
  • Nadzór z udziałem człowieka: jak poprowadzić agenta koordynującego, aby opracował plan audytu i bezpiecznie wstrzymał jego wykonywanie w celu sprawdzenia i zatwierdzenia.
  • Automatyczne rozwiązywanie problemów: jak wdrażać wyspecjalizowane podagenty deweloperskie, aby autonomicznie refaktoryzować i rozwiązywać problemy z kodowaniem i zgodnością o wysokim priorytecie.
  • Pętle weryfikacji: jak weryfikować zmiany w kodzie wygenerowanym przez AI, automatycznie ponownie uruchamiając zestawy testów, aby upewnić się, że nie wprowadzono żadnych regresji.

Czego potrzebujesz

Aby ukończyć to ćwiczenie, musisz mieć lokalnie zainstalowane te narzędzia:

  • Google Antigravity
  • Git
  • W środowisku musi być skonfigurowany co najmniej jeden z tych języków: Go, Python, C# / .NET, NodeJS, Java.

Zaczynajmy!

2. Konfiguracja środowiska

Najpierw sprawdź, czy masz zainstalowaną aplikację Antigravity.

Następnie sklonuj Online Boutique, czyli przykładową aplikację z mikrousługami w chmurze:

git clone https://github.com/GoogleCloudPlatform/microservices-demo.git

Utwórz nowy projekt w Antigravity za pomocą kodu. W Antigravity po lewej stronie wybierz Create New Project w sekcji Projects:

e8b14447dfcc289b.png

Wybierz folder repozytorium:

b39f0b1843ef1f3d.png

Możesz wybrać tryb Default dla Agent Security Settings, a także użyć tej samej nazwy microservices-demo dla projektu.

3. Odkrywanie

W architekturze mikroserwisów baza kodu zwykle obejmuje wiele usług w wielu folderach lub repozytoriach i stosach programistycznych. Dotyczy to również przykładowej aplikacji Online Boutique.

Zanim uruchomisz agentów, zapoznaj się z układem projektu. W tym pierwszym kroku wdrożysz za pomocą Antigravity agenta koordynatora, który wykrywa różne mikroserwisy w różnych językach w sekcji src/ i koordynuje pracę podagentów w poszczególnych językach, aby w dalszych krokach mogli pracować nad każdym mikroserwisem.

Najpierw poproś agenta koordynującego o przeszukanie bazy kodu i określenie, które usługi znajdują się w których katalogach i jakich języków używają.

W Antigravity rozpocznij nową rozmowę w microservices-demo projekcie utworzonym wcześniej. Jako model możesz wybrać najnowszy model Gemini ze średnim poziomem myślenia:

1a88687c5fe37b04.png

Wypróbuj ten prompt:

Identify all the microservices located under the src/ directory,
detect which programming language each service is written in, and
output the list as a clean markdown table showing: Service Name,
Directory, and Primary Language.

W rezultacie Antigravity powinien zwrócić tabelę usług i ich języka podstawowego, podobną do tej:

2e37b2e607596573.png

4. Wybierz języki

Po zmapowaniu bazy kodu musisz wybrać języki, w których chcesz pracować. Musisz mieć kompilatory lub narzędzia potrzebne do wybranych języków (np. dotnet w przypadku C#, javac w przypadku Javy itp.).

Po wybraniu języków, w których chcesz pracować, konieczne jest sprawdzenie stanu obecnej bazy kodu przez uruchomienie odpowiednich testów jednostkowych dla danego języka.

Możesz używać wyspecjalizowanych, równoległych podagentów do uruchamiania zestawów testów w każdym języku. Podkreśla to podstawową zaletę przepływu pracy z wieloma agentami: równoczesne przeprowadzanie odseparowanych testów w oddzielnych obszarach roboczych w różnych językach.

Dostosuj i uruchom w swoim środowisku ten prompt:

I have [C#, Python, Go, Java, Node.js] setup locally. 
Run the unit tests for services in these languages 
in parallel subagents and report back in a clean markdown 
on their pass/fail status.

Powinno być widocznych kilku agentów przeprowadzających testy w każdym języku. Sprawdź każdego subagenta, który prosi o uprawnienia do uruchamiania narzędzi, jak pokazano poniżej:

a3c1834909975020.png

Po zakończeniu pracy wszystkich podprocesów otrzymasz raport z testów jednostkowych podobny do tego:

e8ce8e16f195ea8c.png

5. Planowanie kontroli

Abonament

W przypadku złożonych przepływów pracy wprowadzanie zmian w kodzie bez planu może prowadzić do konfliktów. Chcemy stworzyć uporządkowany i przejrzysty plan tego, co zamierzamy sprawdzić. Poproś koordynatora o opracowanie planu audytu obejmującego sprawdzanie jakości kodu, obsługę wyjątków, sprawdzanie poprawności zapytań itp.

Aby zapewnić nadzór człowieka (human-in-the-loop), koordynator zapisze plan w artefakcie i natychmiast wstrzyma działanie, aby umożliwić Ci sprawdzenie.

Aby opracować plan kontroli, wypróbuj ten prompt:

We want to audit these microservices for code quality, 
exception handling and database query formatting standards 
for the languages I have set up locally. Design an audit plan 
detailing what you will check and save it as an Audit Plan artifact.
Do not execute the audit yet. Stop after writing the plan and wait
for my instructions.

Na czacie powinien pojawić się artefakt Plan audytu:

a7eb6b75b28fd788.png

Sprawdź

Teraz możesz sprawdzić wygenerowany plan audytu, aby upewnić się, że obejmuje on odpowiednie pliki i standardy. Opcjonalnie możesz dodać niestandardowe ograniczenia (np. sprawdzanie komentarzy w tekście lub przewodników po stylu), zanim zatwierdzisz dalsze działania.

Kliknij wygenerowany plan audytu, aby wyświetlić szczegółowy plan:

9b36c0ca827fdc53.png

Opcjonalnie: możesz dodać do planu komentarze (np. „upewnij się, że wszystkie metody publiczne są dobrze udokumentowane”), jeśli chcesz wprowadzić zmiany i je iteracyjnie poprawiać, aż będziesz zadowolony(-a) z planu.

6. Przeprowadź kontrolę

Wykonaj

Po zatwierdzeniu planu kontroli możemy ją przeprowadzić. Agent koordynujący utworzy niezależne, równoległe subagenty dla każdego stosu językowego. Każdy agent działa jednocześnie w osobnym folderze usługi, co zapobiega konfliktom plików i przyspiesza proces skanowania. Koordynator połączy wyniki w ujednoliconym panelu jakości.

Oto kolejny prompt do wypróbowania:

Execute the audit plan by spawning the parallel language subagents.
Once they finish scanning, collect their findings into an audit 
report artifact, sorted by language and then priority. Include the 
file paths, line ranges, snippets, and explanation of why it is a 
finding. Stop after writing the report.

Powinno być widocznych kilku agentów:

9c282924eb33cc34.png

Sprawdź każdego subagenta i przyznaj mu uprawnienia potrzebne do przeprowadzenia audytu. Na koniec powinien pojawić się artefakt raportu z audytu:

6706295f5cf7292b.png

Sprawdź

Po otwarciu raportu z audytu powinny być widoczne szczegółowe wyniki dla każdego języka. Oto przykład problemu o wysokim priorytecie z cartservice w C#:

aca90d0da393bffc.png

Zapoznaj się z pozostałą częścią raportu z audytu, aby zobaczyć wyniki.

7. Jakie podjąć działania

Diagnozowanie problemów z jakością kodu to tylko połowa sukcesu. Teraz użyjemy agentów, aby rozwiązać problemy. Zamiast ręcznie pisać kod, możemy przekazać refaktoryzację podagentom deweloperów, którzy znają dany język i mogą przepisać kod tak, aby był zgodny z najlepszymi praktykami.

Możesz to zrobić na kilka sposobów:

  1. Możesz utworzyć agenta dla każdego języka i pozwolić wszystkim agentom rozwiązać wszystkie problemy naraz. Może to zadziałać, ale może też być zbyt trudne do śledzenia i sprawdzania jednocześnie.
  2. Możesz utworzyć 1 agenta dla 1 języka naraz i pozwolić mu rozwiązywać problemy w tym języku. Będzie to łatwiejsze w zarządzaniu, ale nadal musisz mieć pewność, że agent wprowadzi wiele zmian w wielu plikach.
  3. Możesz zlecić jednemu agentowi rozwiązanie jednego problemu naraz, a potem sprawdzić wynik, zanim przejdziesz do następnego problemu. To bardziej ostrożne podejście, ale dzięki niemu będziesz na bieżąco z każdą zmianą.

Zastosujemy bardziej ostrożne podejście nr 3 i użyjemy tego prompta:

Select the top high-priority finding in [pick a language, e.g., C#]
and remediate the finding. Show me the code changes once complete.

Po kilku sekundach zobaczysz, jak agent pracuje nad problemem o najwyższym priorytecie w wybranym języku i go rozwiązuje.

Na koniec możesz też otrzymać przewodnik pokazujący, co zmienił agent:

9e79c7bb1e102aee.png

Opcjonalnie: na tym etapie możesz poprosić agenta o zmianę implementacji lub, jeśli zmiany Ci odpowiadają, możesz poprosić go o dodanie nowego testu jednostkowego, który obejmie te zmiany.

8. Weryfikacja

W procesie tworzenia oprogramowania poprawka nie jest ukończona, dopóki nie zostanie zweryfikowana. W tym ostatnim kroku możemy poprosić pracownika o uruchomienie pakietu testów, aby upewnić się, że zmiany w kodzie nie spowodowały regresji, oraz ponownie uruchomić skaner audytu, aby sprawdzić, czy problem został w pełni rozwiązany.

Ten krok pokazuje pełną automatyczną pętlę informacji zwrotnych obejmującą planowanie, skanowanie, naprawianie i weryfikowanie.

Uruchom ten prompt:

Rerun the unit tests for the changed language. If they pass, rerun
the relevant audit agent to check if the finding is resolved. If it 
is resolved, mark the issue as resolved in the audit report.

Powinien pojawić się podagent Test Runner, który uruchomi testy, a następnie podagent Auditor, który zaktualizuje raport z audytu. Na koniec zobaczysz zaktualizowany raport kontrolny z najnowszym stanem:

36ac20baa92d1602.png

Jeden problem rozwiązany. Teraz możesz przejrzeć pozostałe problemy, być może stosując tym razem mniej zachowawcze podejście, w którym pozwolisz agentom wykonać więcej pracy, zanim ją sprawdzisz.

9. Gratulacje

Gratulacje! Właśnie zakończono złożoną weryfikację kodu w wielu językach i zautomatyzowany proces naprawy za pomocą Antigravity.

Dzięki architekturze Antigravity z wieloma agentami nie tylko zautomatyzowano statyczne sprawdzanie, ale też stworzono zautomatyzowany zespół ds. zapewnienia jakości. Podczas gdy wyspecjalizowani agenci językowi pracowali równocześnie nad problemami związanymi z językiem, agent koordynujący opracowywał scentralizowany plan i raport, a następnie zarządzał ukierunkowanym refaktoryzowaniem kodu.

Podsumowanie

  • Orchestrated Parallelism: dowiesz się, jak rozdzielać audyty i testy między niezależne podagenty w różnych językach, które działają równolegle, aby uniknąć wąskich gardeł w procesie weryfikacji liniowej.
  • Human-in-the-Loop sprawdzając i opatrując adnotacjami wygenerowany plan kontroli przed jego wykonaniem, zachowujesz nadzór nad autonomicznymi operacjami.
  • Automatyczne usuwanie problemów i weryfikacja: pokazaliśmy, jak agenci AI mogą nie tylko diagnozować rozbieżności w jakości kodu, ale też refaktoryzować kod i weryfikować własne zmiany w lokalnych zestawach testów.