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

1. Wprowadzenie do modernizacji

Automatyzacja modernizacji starszych systemów na dużą skalę To obszerne ćwiczenie z programowania jest praktycznym uzupełnieniem artykułu o architekturze Jak zautomatyzować modernizację za pomocą Antigravity i orkiestracji wieloagentowej. Jako konkretny przykład używamy klasycznej zamiany 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 mają uniwersalne zastosowanie w przypadku każdego projektu modernizacji starszego systemu na dużą skalę.

W przeciwieństwie do standardowych asystentów kodowania, którzy jedynie uzupełniają wiersze w jednym pliku, dowiesz się, jak wykorzystać możliwości Google Antigravity oparte na agentach do orkiestracji autonomicznych zespołów wyspecjalizowanych podagentó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ć błędy kompilatora za pomocą pętli refleksji. Ty natomiast zachowasz pełną kontrolę jako architekt na wysokim poziomie.

Czego się nauczysz

  • Mapowanie przepływu pracy: jak prawidłowo klasyfikować i oddzielać deterministyczne zadania konfiguracyjne od złożonych heurystycznych wyzwań związanych z refaktoryzacją.
  • Architektura umiejętności: jak strukturyzować rozszerzalny pakiet umiejętności agenta przy użyciu stopniowego odkrywania 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 wieloetapowych potokach inżynierii wstecznej i tworzenia szkieletu docelowego.
  • Weryfikacja parzystości: jak wykorzystać podagenta przeglądarki Antigravity do przeprowadzania testów parzystości obok siebie w przeglądarce Chrome.

Co stworzysz

Będziesz orkiestrować w pełni zautomatyzowany potok refaktoryzacji Greenfield, który przyjmuje kultowy, przestarzały monolit CRUD Express i Mongoose (tzw. „madhums demo”) i autonomicznie przebudowuje go od podstaw w ściśle typowaną aplikację Next.js App Router opartą na MongoDB, ścisłej weryfikacji Zod i dostępnych komponentach ShadCN UI.

Czego potrzebujesz

  • Zainstalowane lokalnie IDE Google Antigravity (dostępne na stronie antigravity.google).
    • Zainstalowane lokalnie Node.js (wersja 18 lub nowsza).
  • Przeglądarka Chrome do automatycznej weryfikacji interfejsu.
  • Kopia monorepo demonstracyjnego modernizującego Express.js o otwartym kodzie źródłowym.

2. Konfigurowanie środowiska modernizacji

Zanim pozwolisz autonomicznym agentom działać na starzejącej się bazie kodu, musisz utworzyć czyste i stabilne środowisko monorepo. Dzięki temu asystent AI będzie mógł skupić się wyłącznie na generowaniu wysokiej jakości nowoczesnego kodu, zamiast marnować tokeny na walkę z lukami w zabezpieczeniach pakietów sprzed dekady lub niezgodnościami kompilatora.

Mapowanie starszej architektury Express na nowoczesną architekturę Next.js

Komponent

Starszy stos

Nowoczesny zamiennik

Uzasadnienie

Architektura

Monolit Express

Next.js App Router

Oddzielenie logiki do komponentów serwera w celu zoptymalizowania renderowania i wydajności komponentów serwera React (RSC).

Logika danych

Mongoose (ODM)

MongoDB + Zod

Zastąpienie niejawnych haków ORM jawnymi, bezpiecznymi typowo schematami Zod i 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 opartego na narzędziach.

Uwierzytelnianie

Passport.js

NextAuth

Modernizacja zarządzania sesjami dzięki wbudowanej obsłudze Edge i współczesnych dostawców.

Bezpieczeństwo

Oprogramowanie pośredniczące konfigurowane ręcznie

Zod (ścisła weryfikacja)

Wdrożenie „jednego źródła prawdy” do weryfikacji danych w całym stosie.

Inicjowanie centrum modernizacji

Naszym pierwszym deterministycznym działaniem jest sklonowanie izolowanej struktury monorepo. Dzięki temu starszy kod tylko do odczytu jest oddzielony od nowego repozytorium docelowego, co zapewnia, że nie dojdzie do przypadkowych zmian 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 izolowany 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 deterministycznie przygotować i odizolować środowisko monorepo:

3. Projektowanie pakietów umiejętności i wzorców agentów AI

Tworzenie solidnej umiejętności agenta zasadniczo różni się od pisania standardowego prompta czatu. Gdy tworzysz pakiet umiejętności, projektujesz modułowy fragment oprogramowania, który będzie autonomicznie wykonywany przez bazowy LLM. Aby zapobiec halucynacjom agenta lub "podatkowi na okno kontekstu", wprowadzamy pakiet umiejętności orkiestracji Greenfield o otwartym kodzie źródłowym jako rozszerzalny szablon tworzenia oparty na 2 zasadach, które nie podlegają negocjacjom: zwięzłości i stopniowym odkrywaniu.

Stopniowe odkrywanie za pomocą routingu metadanych YAML

Zamiast umieszczać wszystkie reguły docelowe w jednym monolitycznym prompcie systemowym, rozdzielamy instrukcje na katalogi. Każdy katalog umiejętności zawiera punkt wejścia SKILL.md opakowany w blok frontmatter routingu YAML.

Otwórz plik .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.
---

Wkodowanie wzorca planowania i wykonywania

Aby zapobiec dryfowaniu autonomicznego agenta, rozpraszaniu się przez ciekawe starsze oprogramowanie pośredniczące lub próbom nieautoryzowanych zamian bazy danych, zastępujemy standardowe planowanie otwarte przez wkodowanie wzorca Planowanie i wykonywanie bezpośrednio w instrukcjach.

Sprawdź dosłowną listę kontrolną Markdown osadzoną w głównym orkiestratorze:

### 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.

Formatując przepływ pracy jako jawną listę kontrolną z odwołaniami do umiejętności w tekście, agent kopiuje tę dokładną mapę drogową do swojego planu zadań, blokując ją w trybie „tylko wykonywanie”, który 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 reguły biznesowe, schematy danych i ładunki API ze starszego monolitu, przechowując je jako czyste artefakty Markdown, a jednocześnie pozbywając się dekady imperatywnego długu technicznego.

Uruchamianie autonomicznej sekwencji refaktoryzacji

W panelu czatu Menedżera agentów Antigravity wpisz to niestandardowe polecenie po ukośniku i naciśnij Enter:

/orchestrating-greenfield-migration

Teraz obserwuj konsolę terminala. Zobaczysz, jak główny agent odczytuje swój prompt systemowy, dopasowuje Twoje żądanie do metadanych orkiestratora, wyświetla listę kontrolną 5 faz i natychmiast zaczyna równolegle wysyłać wyspecjalizowane podagenty „Auditor”.

Umowa instruktażowa dotycząca danych wejściowych, umiejętności i danych wyjściowych

W fazie 1 agent wykonuje ścisły potok inżynierii wstecznej związany tą umową instruktażową:

Dane wejściowe: pliki kodu źródłowego tylko do odczytu znajdujące się w katalogu legacy-app/.

Wywoływane umiejętności:

Umiejętność

Opis

auditing-api-contracts

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

auditing-data-models

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

auditing-business-logic

Dokumentuje niejawne efekty uboczne, przepływy uwierzytelniania Passport i reguły oprogramowania pośredniczącego.

auditing-ui-archeology

Skanuje starsze szablony Pug, aby mapować elementy strukturalne „intencji interfejsu” (paski nawigacyjne, formularze).

Wygenerowane artefakty: wysoce ustrukturyzowane specyfikacje Markdown wygenerowane bezpośrednio w folderze docs/.

Artefakt

Opis

docs/API_Contracts.md

Ten dokument zawiera szczegółowe informacje o powierzchni API starszej aplikacji Express. Użyj tego katalogu, aby zapewnić ścisłą parzystość podczas przebudowywania tras w zmodernizowanej aplikacji Next.js.

docs/Business_Logic_Rules.md

Ten dokument rejestruje zweryfikowane zachowania, konfiguracje i ścisłe reguły starszej aplikacji Express dotyczące uwierzytelniania (AuthN), autoryzacji (AuthZ), globalnego oprogramowania pośredniczącego, zarządzania sesjami i efektów ubocznych.

docs/Data_Models.md

Ten dokument zawiera kompleksową analizę starszych schematów Mongoose z katalogu legacy-app/app/models/ oraz plan nowoczesnej warstwy dostępu do danych bezpiecznej typowo, która korzysta z natywnego MongoDB i Zod.

docs/UI_Inventory.md

Ten dokument zawiera szczegółową analizę starszego interfejsu użytkownika opartego na Pug w katalogu legacy-app oraz plan nowoczesnej architektury frontendowej Next.js opartej na komponentach w katalogu modern-app.

Obejrzyj ten film z terminala na żywo, aby zobaczyć, jak działa autonomiczny audyt inżynierii wstecznej:

5. Faza 2 i 3. Wykorzystanie TDD i tworzenie szkieletu backendu Greenfield

Po pełnym audycie i udokumentowaniu starszej aplikacji główny orkiestrator przechodzi do tworzenia szkieletu nowoczesnego backendu docelowego. W tej fazie wprowadzamy najpotężniejszy wzorzec projektowy oparty na agentach w naszym zestawie narzędzi: pętlę zamkniętą Refleksja (samoocena) opartą na ścisłym rozwoju sterowanym testami (TDD).

Tworzenie kodu samonaprawiającego się za pomocą pętli refleksji

Pisanie nowoczesnego kodu jest proste, ale zapewnienie, że będzie się on kompilować bezbłędnie i przejdzie ścisłe ograniczenia weryfikacji, wymaga oceny w pętli zamkniętej. Orkiestrator zajmuje się tym autonomicznie, przekazując dane wyjściowe testu bezpośrednio do okna kontekstu podagenta:

  1. Faza 2 (konfiguracja TDD): orkiestrator wywołuje podagenta generating-api-tests, który odczytuje plik docs/API_Contracts.md i zapisuje wyczerpujące zestawy testów integracyjnych Vitest, które sprawdzają dokładne wymagane kody stanu HTTP i ładunki JSON. Zgodnie z oczekiwaniami w TDD te testy początkowo się nie powiodą.
  2. Faza 3 (tworzenie szkieletu backendu): podagenty tworzące szkielet zaczynają pisać nowoczesne moduły obsługi tras Next.js i ścisłe schematy weryfikacji Zod.
  3. Pętla samokorekty: gdy deterministyczne narzędzie Vitest oceni nowy kod i zwróci błąd (np. oczekiwany błąd weryfikacji 422 zwrócił 500), agent nie ulegnie awarii. Zastanawia się nad obiektywnymi danymi wyjściowymi błędu, ponownie otwiera moduł obsługi trasy docelowej, poprawia strukturę ładunku schematu Zod i ponownie uruchamia testy. Iteruje autonomicznie, aż osiągnie kod zakończenia 0.

Umowa instruktażowa dotycząca danych wejściowych, umiejętności i danych wyjściowych

Dane wejściowe: artefakty specyfikacji inżynierii wstecznej (docs/API_Contracts.md, docs/Data_Models.md).

Wywoływane umiejętności:

Umiejętność

Opis

generating-api-tests

Generuje nieudane zestawy integracyjne Vitest.

scaffolding-nextjs-foundation

Inicjuje podstawowy układ Next.js App Router.

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

Przebudowuje trasy Express na moduły obsługi tras Next.js i modułowe strażniki tras.

Wygenerowane dane wyjściowe: początkowe nieudane zestawy Vitest, w pełni typowane schematy Zod, funkcjonalne moduły obsługi tras Next.js oraz czyste, pomyślne wykonania zestawu testów.

Obserwuj automatyczne generowanie narzędzia do uruchamiania testów TDD:

Obserwuj wykonywanie w czasie rzeczywistym pętli refleksji samokorekty, która tworzy szkielet backendu docelowego:

6. Faza 4. Tworzenie szkieletu nowoczesnego frontendu (komponenty interfejsu)

Gdy warstwa weryfikacji backendu jest w pełni zabezpieczona i przechodzi testy integracyjne, główny orkiestrator zmienia kontekst, aby zmodernizować prezentację wizualną. Imperatywne szablony renderowane przez serwer są odrzucane na rzecz wysoce dostępnego systemu projektowania komponentów opartego na narzędziach.

Tłumaczenie intencji interfejsu na widoki oparte na komponentach

Zamiast próbować tłumaczyć CSS wiersz po wierszu, podagent frontendu odczytuje wyodrębniony spis „intencji interfejsu” i mapuje elementy strukturalne bezpośrednio na nowoczesne odpowiedniki o wysokiej wierności.

Umowa instruktażowa dotycząca danych wejściowych, umiejętności i danych wyjściowych

Dane wejściowe: artefakt spisu frontendu inżynierii wstecznej (docs/UI_Inventory.md).

Wywoływane umiejętności:

Umiejętność

Opis

scaffolding-ui-components

Tłumaczy artefakt UI_Component_Inventory.md na nowoczesne komponenty ShadCN + Tailwind ORAZ w pełni utworzone szkielety stron Next.js.

Wygenerowane dane wyjściowe: strony frontendu Next.js gotowe do wdrożenia, utworzone przy użyciu wysoce dostępnych komponentów ShadCN UI i układów narzędzi Tailwind CSS.

Obserwuj autonomiczne generowanie zmodernizowanej warstwy widoku frontendu:

7. Faza 5. Weryfikacja i audyt przeciwnika

Nasz potok refaktoryzacji kończy się rygorystycznym sprawdzeniem jakości. Główny orkiestrator przechodzi od statycznej analizy kodu do aktywnego testowania środowiska wykonawczego, aktywnie próbując zepsuć nową aplikację docelową, aby udowodnić absolutną parzystość funkcjonalną ze starszą wersją.

Wykonywanie testu na 2 kartach i aktywacja przeglądarki

W fazie weryfikacji wykorzystujemy zintegrowane możliwości wizualne i DOM Antigravity, aby autonomicznie udowodnić sukces bez konieczności ręcznego klikania formularzy:

  1. Parzystość obok siebie: podagent auditing-parity instruuje lokalne narzędzie do uruchamiania, aby jednocześnie uruchomić starszy monolit Express i zmodernizowaną aplikację Next.js, weryfikując identyczną prezentację wizualną i renderowanie danych.
  2. Sondowanie zabezpieczeń przeciwnika: orkiestrator wywołuje podagenta adversarial-verification, który uruchamia podagenta przeglądarki Antigravity. Ten wyspecjalizowany agent aktywuje przeglądarkę bezpośrednio – wpisuje dane, przesyła formularze i sondy pod kątem regresji zabezpieczeń, uszkodzonych plików cookie sesji lub nieobsługiwanych przypadków brzegowych.
  3. Generowanie ścieżki audytu: podagent przeglądarki automatycznie rejestruje sesje wideo WebP swoich aktywacji sesji, dołączając je bezpośrednio do końcowego raportu migracji jako weryfikowalny "dowód pracy".

Umowa instruktażowa dotycząca danych wejściowych, umiejętności i danych wyjściowych

Dane wejściowe: starsza i nowoczesna aplikacja działająca obok siebie w lokalnych środowiskach wykonawczych.

Wywoływane umiejętności:

Umiejętność

Opis

auditing-parity

Wykonuje kontrole weryfikacji obok siebie w czasie wykonywania.

adversarial-verification

Sondy pod kątem błędów logicznych i regresji funkcjonalnych za pomocą automatycznej aktywacji przeglądarki.

Wygenerowane dane wyjściowe: kompleksowa ścieżka audytu parzystości funkcjonalnej połączona z nagranymi filmami z sesji przeglądarki potwierdzającymi pełny sukces.

Obserwuj, jak automatyczny podagent przeglądarki aktywnie weryfikuje zmodernizowaną aplikację:

8. Gotowość do wdrożenia produkcyjnego po migracji i dalsze kroki

Gratulacje! Udało Ci się orkiestrować wysoce zaawansowany, autonomiczny potok refaktoryzacji oparty na agentach, aby zmodernizować starszy monolit od podstaw, zdobywając uniwersalne, wysoce przenośne umiejętności, takie jak stopniowe odkrywanie, listy kontrolne planowania i wykonywania oraz pętle refleksji samonaprawiającej się.

Przygotowanie do wdrożenia produkcyjnego

Gdy aplikacja Next.js jest w pełni zweryfikowana i sprawdzona, możesz przejść do integracji produkcyjnej. Rozważ wdrożenie tych standardowych w branży dalszych kroków:

  • Przyrostowy routing: wdróż serwer proxy odwrotny (np. wzorzec Strangler Fig), aby przyrostowo kierować ruch ze starszej aplikacji Express do nowoczesnego celu.
  • Zachowanie SEO: mapuj starsze trasy Express na stałe przekierowania Next.js (_redirects.yaml), aby zachować dotychczasową autorytet domeny.
  • Przesyłanie strumieniowe danych: przejdź od statycznego wypełniania bazy danych do przesyłania strumieniowego danych produkcyjnych na żywo, które jest bezpiecznie weryfikowane w czasie wykonywania za pomocą ścisłych schematów Zod.
  • Dostrzegalność: zastąp imperatywne narzędzia do logowania ustrukturyzowanymi platformami OpenTelemetry.

Pogłębianie wiedzy na temat modernizacji

Aby poznać pełne bazowe bazy kodu, niestandardowe instrukcje dotyczące umiejętności i wyczerpujące uzasadnienie teoretyczne tego potoku, przeczytaj cały artykuł nadrzędny oraz inne treści dotyczące orkiestracji wieloagentowej.

Dołącz do społeczności Agentic Builder

Mam nadzieję, że te uniwersalne wzorce refaktoryzacji i potoki oparte na agentach okazały się przydatne. Aby być na bieżąco z przyszłymi pakietami umiejętności o otwartym kodzie źródłowym, szczegółowymi treściami technicznymi i nadchodzącymi wystąpieniami na konferencjach, obserwuj mnie w kanałach profesjonalnych:

Podziel się z nami swoją opinią

Co najbardziej Cię ekscytuje w orkiestracji opartej na agentach?

Weryfikacja przeglądarki przeciwnika Autonomiczne pętle refaktoryzacji Rozszerzalna architektura umiejętności Orkiestracja wieloagentowa Uniwersalna niezależność od języka

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