Automatyzacja modernizacji starszych systemów na dużą skalę za pomocą potoków opartych na agentach i Antigravity

1. Orienting Your modernization journey

Automatyzacja modernizacji starszych systemów na dużą skalę 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ścistopniowym 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

auditing-api-contracts

Śledzi starsze trasy, aby dokumentować dokładne koperty odpowiedzi JSON.

auditing-data-models

Analizuje schematy Mongoose, aby wyodrębnić relacje, wymagane pola i wartości domyślne.

auditing-business-logic

Dokumentacja niejawnych skutków ubocznych, przepływów uwierzytelniania paszportu i reguł oprogramowania pośredniczącego.

auditing-ui-archeology

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

docs/API_Contracts.md

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.

docs/Business_Logic_Rules.md

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.

docs/Data_Models.md

Ten dokument zawiera kompleksową analizę starszych schematów Mongoose z legacy-app/app/models/ oraz plan nowoczesnej warstwy dostępu do danych z bezpiecznym typem, która korzysta z natywnej bazy danych MongoDB i biblioteki Zod.

docs/UI_Inventory.md

W tym dokumencie znajdziesz szczegółową analizę starszego interfejsu użytkownika opartego na Pug w legacy-app oraz opis nowoczesnej, opartej na komponentach architektury frontendowej Next.js w modern-app.

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:

  1. Faza 2 (konfiguracja TDD): orkiestrator wywołuje generating-api-tests subagenta, który odczytuje docs/API_Contracts.md i 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.
  2. Faza 3 (szkielet backendu): podagenci szkieletowi zaczynają pisać nowoczesne moduły obsługi tras Next.js i ścisłe schematy weryfikacji Zod.
  3. Pętla samokorekty: gdy deterministyczny moduł Vitest oceni nowy kod i zwróci błąd (np. oczekiwany błąd weryfikacji 422 zwróci 500), 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ńczenia 0.

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

generating-api-tests

Generuje zestawy integracji Vitest, które nie działają.

scaffolding-nextjs-foundation

Inicjuje podstawowy układ routera aplikacji Next.js.

scaffolding-test-foundation

Konfiguruje lokalne środowisko narzędzia do uruchamiania testów Vitest.

scaffolding-data-layer

Tłumaczy stare modele Mongoose na schematy MongoDB + Zod.

scaffolding-api-routes

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

scaffolding-ui-components

Przekształca artefakt UI_Component_Inventory.md w nowoczesne komponenty ShadCN i Tailwind ORAZ w w pełni przygotowane strony Next.js.

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:

  1. Równoległe działanie: auditing-parity subagent 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.
  2. 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.
  3. 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

auditing-parity

Przeprowadza w czasie działania testy weryfikacji równoległej.

adversarial-verification

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:

Podziel się z nami swoją opinią

Co najbardziej Cię ekscytuje w kontekście orkiestracji agentów?

Weryfikacja przeglądarki pod kątem ataków Autonomiczne pętle refaktoryzacji Rozszerzalna architektura umiejętności Orkiestracja wielu agentów Uniwersalna niezależność od języka

Dziękujemy za tworzenie z użyciem Google Antigravity.