1. Orienting Your modernization journey
To obszerne ćwiczenie w Codelabs jest praktycznym uzupełnieniem artykułu How to automate modernization with Antigravity and multi-agent orchestration (Jak zautomatyzować modernizację za pomocą Antigravity i orkiestracji wielu agentów). Jako konkretny przykład wykorzystujemy klasyczną zamianę platformy Node.js, ale podstawowe wzorce projektowe, struktury katalogów i procesy orkiestracji agentów, które tu poznasz, są całkowicie niezależne od języka i uniwersalnie stosowane w każdym projekcie modernizacji starszych systemów na dużą skalę.
W przeciwieństwie do standardowych asystentów kodowania, którzy jedynie uzupełniają wiersze w jednym pliku, dowiesz się, jak wykorzystać funkcje Google Antigravity oparte na agentach do zarządzania autonomicznymi zespołami wyspecjalizowanych subagentów AI. Agenci ci mogą niezależnie przeprowadzać inżynierię wsteczną starszych baz kodu, pisać rygorystyczne zestawy testów, tworzyć nowoczesne architektury i samodzielnie poprawiać własne błędy kompilatora za pomocą pętli refleksyjnych, a Ty zachowasz pełną kontrolę jako architekt wyższego poziomu.
Czego się nauczysz
- Mapowanie procesu: jak prawidłowo klasyfikować i oddzielać deterministyczne zadania konfiguracyjne od złożonych heurystycznych wyzwań związanych z refaktoryzacją.
- Architektura umiejętności: jak skonstruować rozszerzalny pakiet umiejętności agenta za pomocą progresywnego ujawniania informacji i metadanych routingu YAML.
- Orkiestracja wzorców projektowych: jak przeprowadzać refaktoryzację na dużą skalę, łącząc wzorce projektowe Router, Planowanie i wykonywanie oraz Refleksja.
- Sztywne umowy dotyczące danych wejściowych i wyjściowych: jak egzekwować jasne granice danych wejściowych, umiejętności i danych wyjściowych w wielofazowych potokach inżynierii wstecznej i rusztowania docelowego.
- Weryfikacja równości cen: jak wykorzystać subagenta przeglądarki Antigravity do przeprowadzenia testu równości cen w przeglądarce Chrome.
Co utworzysz
Zorganizujesz w pełni zautomatyzowany potok refaktoryzacji od podstaw, który przekształci kultowy, przestarzały monolit CRUD Express i Mongoose („madhums demo”) i autonomicznie przebuduje go od zera w ściśle typowaną aplikację Next.js App Router opartą na MongoDB, ścisłej walidacji Zod i dostępnych komponentach interfejsu ShadCN.
Czego potrzebujesz
- Google Antigravity IDE zainstalowane lokalnie (dostępne na stronie antigravity.google).
- Node.js (wersja 18 lub nowsza) zainstalowany lokalnie.
- Przeglądarka Chrome do automatycznej weryfikacji interfejsu.
- Klon demonstracyjnego monorepo modernizing-expressjs typu open source.
2. Konfigurowanie środowiska modernizacji
Zanim udostępnimy autonomiczne agenty w przypadku starszego kodu, musimy utworzyć czyste i wysoce stabilne środowisko monorepo. Zapewnienie asystentowi AI czystej linii bazowej sprawi, że będzie się on w pełni koncentrować na generowaniu nowoczesnego kodu wysokiej jakości, zamiast marnować tokeny na zwalczanie luk w zabezpieczeniach pakietów sprzed dziesięciu lat lub niezgodności kompilatora.
Mapowanie starszej architektury Express na nowoczesną architekturę Next.js
Komponent | Starsza wersja | Nowoczesna wymiana | Uzasadnienie |
Architektura | Express Monolith | Router aplikacji Next.js | Oddzielenie logiki w komponentach serwera w celu zoptymalizowania renderowania i wydajności komponentów serwera React (RSC). |
Logika danych | Mongoose (ODM) | MongoDB + Zod | Zastąpienie niejawnych elementów ORM jawnymi, bezpiecznymi pod względem typów schematami Zod i surową wydajnością sterownika. |
Język | CommonJS / JavaScript | TypeScript (ESM) | Wymuszanie bezpieczeństwa w czasie kompilacji i przejście na nowoczesne standardy modułów. |
Frontend | Pug/EJS (widok serwera) | ShadCN UI + Tailwind | Przejście od sztywnych szablonów do systemu projektowania opartego na komponentach, dostępnego i skupionego na użyteczności. |
Auth | Passport.js | NextAuth | Ulepszyliśmy zarządzanie sesjami dzięki wbudowanej obsłudze Edge i nowoczesnych dostawców. |
Bezpieczeństwo | Ręczne oprogramowanie pośredniczące | Zod (ścisła weryfikacja) | Wdrożenie „jednego źródła wiarygodnych danych” do weryfikacji danych w całym stosie. |
Inicjowanie centrum modernizacji
Pierwszym działaniem deterministycznym jest sklonowanie wyizolowanej struktury monorepo. Dzięki temu kod starszego typu dostępny tylko do odczytu jest oddzielony od nowego repozytorium docelowego, co zapobiega przypadkowym zmianom w oryginalnej aplikacji.
Otwórz terminal Antigravity i uruchom te polecenia konfiguracyjne:
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos/other/modernizing-expressjs
Po sklonowaniu otwórz folder modernizing-expressjs bezpośrednio w Eksploratorze IDE Antigravity. Zobaczysz ten odseparowany układ:
/modernizing-expressjs/ ├── .agents/ # Skills metadata and checklists │ └── skills/ ├── docs/ # Target directory for reverse-engineered markdown artifacts ├── legacy-app/ # Read-only root of the legacy Express monolith ├── modern-app/ # Greenfield target repository for the Next.js rewrite ├── GEMINI.md # Project-wide agent constitution └── README.md # Companion documentation
Obejrzyj ten krótki film, aby dowiedzieć się, jak przygotować i odizolować środowisko monorepo w sposób deterministyczny:
3. Pakiety umiejętności i wzorce agenta AI Architect
Tworzenie zaawansowanej umiejętności agenta różni się zasadniczo od pisania standardowego promptu na czacie. Tworząc pakiet umiejętności, projektujesz modułowe oprogramowanie, które będzie autonomicznie wykonywane przez bazowy LLM. Aby zapobiec halucynacjom agenta lub „podatkowi od okna kontekstu”, wprowadzamy pakiet umiejętności orkiestracji Greenfield Orchestration Skill Pack o otwartym kodzie źródłowym jako rozszerzalny szablon do tworzenia treści, który opiera się na 2 zasadach: zwięzłości i stopniowym ujawnianiu informacji.
Stopniowe odkrywanie za pomocą routingu metadanych YAML
Zamiast umieszczać wszystkie reguły kierowania w jednym monolitycznym promcie systemowym, rozdzielamy instrukcje na różne katalogi. Każdy katalog umiejętności zawiera punkt wejścia SKILL.md opakowany w blok YAML routing frontmatter.
Otwórz .agents/skills/orchestrating-greenfield-migration/SKILL.md i sprawdź metadane routera:
---
name: orchestrating-greenfield-migration
description: >
Manages the end-to-end modernization of legacy Express
monoliths into Next.js architectures. Orchestrates subagents
for auditing, scaffolding, and verification. Use when starting
or managing a greenfield rewrite project.
---
Zakodowanie na stałe wzorca planowania i wykonywania
Aby zapobiec dryfowaniu agenta autonomicznego, rozpraszaniu uwagi przez ciekawe starsze oprogramowanie pośredniczące lub próbom nieautoryzowanej zamiany bazy danych, zastępujemy standardowe planowanie otwarte przez zakodowanie wzorca Planowanie i wykonywanie bezpośrednio w instrukcjach.
Sprawdź dosłowną listę kontrolną Markdown osadzoną w głównym koordynatorze:
### Phase 1: The AI audit (reverse engineering)
Dispatch subagents to produce specifications while identifying project-specific test scenarios.
* [ ] Init `docs/verification/Verification_Plan.md` to create baseline template.
* [ ] Run `auditing-data-models` -> Append Data Integrity Stress-Tests.
* [ ] Run `auditing-api-contracts` -> Append API Parity & Edge Case Probes.
* [ ] Run `auditing-business-logic` -> Append Logic & Authorization Stress-Tests.
* [ ] Run `auditing-ui-archeology` -> Append Interaction & Layout Targets.
Dzięki sformatowaniu procesu jako listy kontrolnej z odwołaniami do umiejętności w tekście agent kopiuje tę dokładną mapę drogową do planu zadań, przełączając się w tryb „tylko wykonanie”, w którym systematycznie odznacza pola i wywołuje wysoce wyspecjalizowane podagenty dokładnie wtedy, gdy jest to potrzebne.
4. Faza 1. Inżynieria wsteczna starszego monolitu (audyt)
Możemy już uruchomić główną sekwencję orkiestracji. W pierwszej fazie wyodrębniamy z monolitu starszego typu reguły biznesowe, schematy danych i ładunki interfejsu API, zapisując je jako przejrzyste artefakty w formacie Markdown. Pozbywamy się w ten sposób dziesięcioletniego długu technicznego.
Uruchamianie sekwencji autonomicznej refaktoryzacji
W panelu czatu Antigravity Agent Manager wpisz to niestandardowe polecenie po ukośniku i naciśnij Enter:
/orchestrating-greenfield-migration
Teraz spójrz na konsolę terminala. Zobaczysz, jak główny agent odczytuje prompt systemowy, dopasowuje Twoje żądanie do metadanych Orchestratora, wyświetla 5-etapową listę kontrolną i natychmiast zaczyna równolegle wysyłać wyspecjalizowanych subagentów „Auditor”.
Umowa dotycząca danych wejściowych, umiejętności i danych wyjściowych
W fazie 1 agent wykonuje ścisły potok inżynierii wstecznej, który jest związany z tym kontraktem instrukcyjnym:
Dane wejściowe: pliki kodu źródłowego starszego typu tylko do odczytu znajdujące się w legacy-app/.
Wywołane umiejętności:
Umiejętność | Opis |
| Śledzi starsze trasy, aby dokumentować dokładne koperty odpowiedzi JSON. |
| Analizuje schematy Mongoose, aby wyodrębnić relacje, wymagane pola i wartości domyślne. |
| Dokumentacja niejawnych skutków ubocznych, przepływów uwierzytelniania paszportu i reguł oprogramowania pośredniczącego. |
| Skanuje starsze szablony Pug, aby mapować ogólne „intencje interfejsu” (paski nawigacyjne, formularze). |
Wygenerowane artefakty: wysoce ustrukturyzowane specyfikacje Markdown wygenerowane bezpośrednio w folderze docs/.
Artefakt | Opis |
| W tym dokumencie znajdziesz szczegółowe informacje o obszarze interfejsu API starszej aplikacji Express, który został odtworzony metodą inżynierii wstecznej. Skorzystaj z tego katalogu, aby zapewnić ścisłą zgodność podczas przebudowywania ścieżek w zmodernizowanej aplikacji Next.js. |
| W tym dokumencie rejestrujemy zweryfikowane zachowania, konfiguracje i ścisłe reguły starszej aplikacji Express dotyczące uwierzytelniania (AuthN), autoryzacji (AuthZ), globalnych funkcji pośredniczących, zarządzania sesjami i efektów ubocznych. |
| Ten dokument zawiera kompleksową analizę starszych schematów Mongoose z |
| W tym dokumencie znajdziesz szczegółową analizę starszego interfejsu użytkownika opartego na Pug w |
Obejrzyj nagranie z terminala na żywo, które pokazuje działanie autonomicznego audytu inżynierii wstecznej:
5. Etap 2 i 3 – narzędzie TDD i szkielet backendu od podstaw
Po pełnym audycie i udokumentowaniu starszej aplikacji główny orkiestrator przechodzi do tworzenia szkieletu nowoczesnego backendu docelowego. Na tym etapie wprowadzamy najpotężniejszy wzorzec projektowania opartego na agentach w naszym zestawie narzędzi: zamkniętą pętlę Reflexion (samoocena) opartą na ścisłym podejściu TDD (Test-Driven Development).
Wymuszanie samonaprawiającego się kodu za pomocą pętli Reflexion
Pisanie nowoczesnego kodu jest proste, ale zapewnienie jego prawidłowej kompilacji i spełnienia rygorystycznych ograniczeń weryfikacyjnych wymaga oceny w zamkniętej pętli. Aranżer obsługuje to autonomicznie, przekazując dane wyjściowe testu bezpośrednio do okna kontekstu subagenta:
- Faza 2 (konfiguracja TDD): orkiestrator wywołuje
generating-api-testssubagenta, który odczytujedocs/API_Contracts.mdi zapisuje wyczerpujące zestawy testów integracyjnych Vitest, które potwierdzają dokładne wymagane kody stanu HTTP i ładunki JSON. Zgodnie z oczekiwaniami w TDD testy te początkowo kończą się niepowodzeniem. - Faza 3 (szkielet backendu): podagenci szkieletowi zaczynają pisać nowoczesne moduły obsługi tras Next.js i ścisłe schematy weryfikacji Zod.
- Pętla samokorekty: gdy deterministyczny moduł Vitest oceni nowy kod i zwróci błąd (np. oczekiwany błąd weryfikacji
422zwróci500), agent nie ulegnie awarii. Odzwierciedla to błąd w danych wyjściowych, ponownie otwiera procedurę obsługi trasy docelowej, poprawia strukturę ładunku schematu Zod i ponownie uruchamia testy. Działa autonomicznie, dopóki nie osiągnie kodu zakończenia0.
Umowa dotycząca danych wejściowych, umiejętności i danych wyjściowych
Wykorzystane dane wejściowe: artefakty specyfikacji uzyskane metodą inżynierii wstecznej (docs/API_Contracts.md, docs/Data_Models.md).
Wywołane umiejętności:
Umiejętność | Opis |
| Generuje zestawy integracji Vitest, które nie działają. |
| Inicjuje podstawowy układ routera aplikacji Next.js. |
| Konfiguruje lokalne środowisko narzędzia do uruchamiania testów Vitest. |
| Tłumaczy stare modele Mongoose na schematy MongoDB + Zod. |
| Przekształca trasy Express w procedury obsługi tras Next.js i modułowe strażniki tras. |
Wygenerowane dane wyjściowe: początkowe nieudane zestawy Vitest, w pełni określone typy schematów Zod, działające moduły obsługi tras Next.js i czyste, udane wykonania zestawów testów.
Obserwuj automatyczne generowanie szkieletu testu TDD:
Obserwuj w czasie rzeczywistym działanie pętli samokorygującej Reflexion, która stanowi rusztowanie dla docelowego backendu:
6. Etap 4. Tworzenie szkieletu nowoczesnego interfejsu (komponenty interfejsu)
Po pełnym zabezpieczeniu warstwy weryfikacji backendu i pomyślnym przejściu testów integracyjnych główny koordynator zmienia kontekst, aby zmodernizować prezentację wizualną. Szablony renderowane po stronie serwera są odrzucane na rzecz wysoce dostępnego systemu komponentów opartego na funkcjonalności.
Tłumaczenie intencji interfejsu na widoki kompozycyjne
Zamiast próbować tłumaczyć CSS wiersz po wierszu, podagent interfejsu odczytuje wyodrębnione zasoby reklamowe „UI Intent” i mapuje elementy strukturalne bezpośrednio na nowoczesne odpowiedniki o wysokiej wierności.
Umowa dotycząca danych wejściowych, umiejętności i danych wyjściowych
Dane wejściowe: artefakt zasobów reklamowych frontendu, który został odtworzony na podstawie kodu (docs/UI_Inventory.md).
Wywołane umiejętności:
Umiejętność | Opis |
| Przekształca artefakt |
Wygenerowane dane wyjściowe: gotowe do wdrożenia strony frontendu Next.js utworzone przy użyciu wysoce dostępnych komponentów interfejsu ShadCN i układów narzędziowych Tailwind CSS.
Obejrzyj autonomiczne generowanie zmodernizowanej warstwy widoku frontendu:
7. Faza 5. Weryfikacja i testy z użyciem szkodliwych danych wejściowych
Proces refaktoryzacji kończy się rygorystycznym sprawdzaniem jakości. Główny aranżer przechodzi od statycznej analizy kodu do aktywnego testowania środowiska wykonawczego, aktywnie próbując uszkodzić nową aplikację docelową, aby udowodnić jej pełną równoważność funkcjonalną ze starszą wersją.
Przeprowadzanie testu z 2 kartami i aktywowanie przeglądarki
Faza weryfikacji wykorzystuje zintegrowane funkcje wizualne i DOM platformy Antigravity, aby samodzielnie potwierdzić sukces bez konieczności ręcznego klikania formularzy:
- Równoległe działanie:
auditing-paritysubagent instruuje lokalny program uruchamiający, aby jednocześnie uruchomił zarówno starszą aplikację monolityczną Express, jak i zmodernizowaną aplikację Next.js, sprawdzając identyczną prezentację wizualną i renderowanie danych. - Testowanie zabezpieczeń: koordynator wywołuje
adversarial-verification, który uruchamia Antigravity Browser Subagent. Ten wyspecjalizowany agent bezpośrednio steruje przeglądarką – wpisuje dane, przesyła formularze i sprawdza, czy nie występują regresje zabezpieczeń, uszkodzone pliki cookie sesji lub nieobsługiwane przypadki brzegowe. - Generowanie ścieżki audytu: podagent przeglądarki automatycznie rejestruje zrzuty wideo WebP z działań w sesji i dołącza je bezpośrednio do końcowego raportu migracji jako weryfikowalny „dowód wykonania pracy”.
Umowa dotycząca danych wejściowych, umiejętności i danych wyjściowych
Dane wejściowe: starsze i nowoczesne aplikacje działające obok siebie w lokalnych środowiskach wykonawczych.
Wywołane umiejętności:
Umiejętność | Opis |
| Przeprowadza w czasie działania testy weryfikacji równoległej. |
| Sprawdzanie błędów logicznych i regresji funkcjonalnych za pomocą automatycznego działania przeglądarki. |
Wygenerowane dane wyjściowe: kompleksowa ścieżka audytu równoważności funkcji w połączeniu z nagranymi sesjami przeglądarki potwierdzającymi pełny sukces.
Obserwuj, jak automatyczny subagent przeglądarki aktywnie weryfikuje zmodernizowaną aplikację:
8. Gotowość środowiska produkcyjnego po migracji i dalsze kroki
Gratulacje! Udało Ci się zorganizować wysoce zaawansowany, autonomiczny potok refaktoryzacji oparty na agentach, aby od podstaw zmodernizować starszy monolit. W tym procesie udało Ci się zdobyć uniwersalne, łatwe do przeniesienia umiejętności, takie jak stopniowe ujawnianie informacji, listy kontrolne „Zaplanuj i wykonaj” oraz pętle refleksji z mechanizmem samonaprawy.
Przygotowanie do wdrożenia w środowisku produkcyjnym
Po pełnej weryfikacji i audycie aplikacji Next.js możesz przejść do integracji produkcyjnej. Rozważ wdrożenie tych standardowych w branży kolejnych kroków:
- Stopniowe przekierowywanie: wdróż serwer proxy (np. wzorzec Strangler Fig), aby stopniowo przekierowywać ruch z starszej aplikacji Express do nowoczesnego miejsca docelowego.
- Zachowanie SEO: mapuj starsze trasy Express na stałe przekierowania Next.js (
_redirects.yaml), aby zachować dotychczasową autorytet domeny. - Strumieniowe przesyłanie danych: przejdź od statycznego wypełniania bazy danych do strumieniowego przesyłania danych produkcyjnych na żywo, które jest bezpiecznie weryfikowane w czasie działania za pomocą ścisłych schematów Zod.
- Dostrzegalność: zastąp narzędzia do logowania imperatywnego uporządkowanymi platformami OpenTelemetry.
Pogłębiaj wiedzę na temat modernizacji
Aby poznać pełne bazy kodu, instrukcje dotyczące umiejętności niestandardowych i wyczerpujące uzasadnienie teoretyczne tego potoku, przeczytaj cały artykuł nadrzędny:
Dołączanie do społeczności Agentic Builder
Mam nadzieję, że te uniwersalne wzorce refaktoryzacji i potoki oparte na agentach okazały się przydatne. Bądź na bieżąco z przyszłymi pakietami umiejętności open source, szczegółowymi treściami technicznymi i nadchodzącymi wystąpieniami na konferencjach. Obserwuj mnie na kanałach profesjonalnych:
- Obserwuj na LinkedIn: linkedin.com/in/jamesor
- Obserwuj na X (Twitterze): x.com/JamesOR
Podziel się z nami swoją opinią
Co najbardziej Cię ekscytuje w kontekście orkiestracji agentów?
Dziękujemy za tworzenie z użyciem Google Antigravity.