1. התמצאות בתהליך המודרניזציה
שיעור ה-Codelab המקיף הזה הוא מעבדה מעשית שנגזרת ישירות מהמאמר המעמיק בנושא ארכיטקטורה, איך להפוך מודרניזציה לאוטומטית באמצעות Antigravity ותזמור רב-סוכנים. אנחנו משתמשים כאן בהחלפת מסגרת קלאסית של Node.js כהדגמה מוחשית, אבל דפוסי העיצוב העיקריים, מבני הספריות ותהליכי התזמור של הסוכנים שבהם תתמחו כאן הם בלתי תלויים בשפה ורלוונטיים באופן אוניברסלי לכל פרויקט מודרניזציה של מערכות מדור קודם בקנה מידה גדול.
בניגוד לעוזרי קידוד רגילים שרק משלימים שורות בקובץ יחיד, תלמדו איך להשתמש ביכולות של Google Antigravity שמתמקדות בסוכנים כדי לתזמן צוותים אוטונומיים של סוכני משנה מומחים של AI. הסוכנים האלה יכולים לבצע הנדסה הפוכה של בסיסי קוד מדור קודם, לכתוב חבילות בדיקה קפדניות, ליצור ארכיטקטורות מודרניות ולתקן בעצמם שגיאות קומפילציה באמצעות לולאות רפלקציה, וכל זה בזמן שאתם שומרים על שליטה מוחלטת כאדריכלים ברמה גבוהה.
מה תלמדו
- מיפוי תהליך העבודה: איך לסווג ולהפריד בצורה נכונה בין משימות הגדרה דטרמיניסטיות לבין אתגרים מורכבים של שיפורים היוריסטיים.
- ארכיטקטורת כישורים: איך לבנות חבילת כישורים של סוכן שאפשר להרחיב באמצעות גילוי הדרגתי ומטא-נתונים של ניתוב YAML.
- תזמור תבניות עיצוב: איך לבצע שינוי מבנה בקנה מידה גדול על ידי שרשור של תבניות העיצוב Router, Plan-and-Execute ו-Reflexion.
- חוזים נוקשים של קלט/פלט: איך לאכוף גבולות ברורים של קלט/מיומנות/פלט בצינורות של הנדסה הפוכה מרובת שלבים ופיגומים של יעד.
- אימות שוויון: איך משתמשים ב-Browser Subagent של Antigravity כדי לבצע בדיקות שוויון זו לצד זו בדפדפן האינטרנט Chrome.
מה תפַתחו
תנהלו פייפליין אוטומטי לחלוטין של Greenfield Refactoring, שייקח את המונוליט המוכר והמיושן של Express ו-Mongoose CRUD (הדמו של madhums) ויבנה אותו מחדש באופן אוטונומי מאפס לאפליקציית Next.js App Router עם הקלדה קפדנית, גיבוי של MongoDB, אימות קפדני של Zod ורכיבי ממשק משתמש נגישים של ShadCN.
הדרישות
- Google Antigravity IDE מותקן באופן מקומי (זמין בכתובת antigravity.google).
- Node.js (גרסה 18 ואילך) מותקן באופן מקומי.
- דפדפן Chrome לאימות אוטומטי של ממשק המשתמש.
- שיבוט של מאגר ה-monorepo של ההדגמה modernizing-expressjs בקוד פתוח.
2. הגדרת סביבת המודרניזציה
לפני שמשתמשים בסוכנים אוטונומיים במאגר קוד מדור קודם, צריך ליצור סביבת monorepo נקייה ויציבה מאוד. אם נותנים לעוזר AI בסיס נקי, הוא מתמקד כולו ביצירת קוד מודרני באיכות גבוהה, במקום לבזבז טוקנים על טיפול בפגיעויות בחבילות בנות עשור או על אי התאמות של קומפיילרים.
מיפוי של ארכיטקטורת Express מדור קודם לעומת ארכיטקטורת Next.js מודרנית
רכיב | Legacy Stack | החלפה מודרנית | הנימוק |
ארכיטקטורה | Express Monolith | Next.js App Router | הפרדת הלוגיקה לרכיבי שרת כדי לבצע אופטימיזציה של הרינדור ושל הביצועים של רכיבי שרת React (RSC). |
Data Logic | Mongoose (ODM) | MongoDB + Zod | החלפת ווים (hooks) מרומזים של ORM בסכימות Zod מפורשות ובטוחות-סוגים, ובביצועים של מנהל התקן גולמי. |
שפה | CommonJS / JavaScript | TypeScript (ESM) | אכיפת בטיחות בזמן הידור ומעבר לתקני מודולים מודרניים. |
Frontend | Pug/EJS (תצוגת שרת) | ShadCN UI + Tailwind | מעבר מתבניות נוקשות למערכת עיצוב מודולרית, נגישה ושימושית. |
Auth | Passport.js | NextAuth | עדכון של ניהול הסשנים עם תמיכה מובנית ב-Edge ובספקים מודרניים. |
בטיחות | תווכה ידנית | Zod (אימות קפדני) | הטמעה של 'מקור אמת יחיד' לאימות נתונים בכל הערימה. |
אתחול של מרכז המודרניזציה
הפעולה הדטרמיניסטית הראשונה שלנו היא שיבוט של מבנה המאגר המשותף המבודד. כך אנחנו מפרידים את קוד המקור מדור קודם לקריאה בלבד ממאגר היעד החדש שלנו, ומבטיחים שלא יבוצעו מוטציות מקריות באפליקציה המקורית.
פותחים את הטרמינל של Antigravity ומריצים את פקודות ההגדרה הבאות:
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos/other/modernizing-expressjs
אחרי השיבוט, פותחים את התיקייה modernizing-expressjs ישירות בסייר של Antigravity IDE. תוכלו לראות את הפריסה המבודדת הבאה:
/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
בסרטון הקצר הזה מוסבר איך להכין את סביבת המונורפו ולבודד אותה באופן דטרמיניסטי:
3. תכנון חבילות של מיומנויות לסוכני AI ודפוסי שימוש
יצירת מיומנות חזקה של נציג שונה באופן מהותי מכתיבת הנחיה רגילה לצ'אט. כשכותבים חבילת מיומנויות, מעצבים רכיב תוכנה מודולרי שמודל שפה גדול (LLM) בסיסי יבצע באופן אוטונומי. כדי למנוע מהסוכן להמציא מידע או לחוות "מס חלון הקשר", אנחנו מציגים את חבילת הכישורים Greenfield Orchestration בקוד פתוח כתבנית כתיבה ניתנת להרחבה שמבוססת על שני עקרונות שאין עליהם פשרה: תמציתיות וחשיפה הדרגתית.
גילוי הדרגתי באמצעות ניתוב מטא-נתונים ב-YAML
במקום להציג את כל כללי הטירגוט בהנחיית מערכת מונוליטית אחת, אנחנו מחלקים את ההוראות בין הספריות. כל ספרייה של מיומנות מכילה נקודת כניסה SKILL.md שעטופה בבלוק של YAML routing frontmatter.
פותחים את .agents/skills/orchestrating-greenfield-migration/SKILL.md ובודקים את המטא-נתונים של הנתב:
---
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.
---
קידוד קשיח של דפוס התכנון והביצוע
כדי למנוע מסוכן אוטונומי לסטות מהנושא, להתבלבל בגלל תוכנת ביניים מדור קודם או לנסות לבצע החלפות לא מורשות של מסדי נתונים, אנחנו מבטלים את התכנון הסטנדרטי הפתוח על ידי קידוד קשיח של דפוס Plan-and-Execute ישירות בהוראות.
בודקים את תיבת הסימון המילולית ב-Markdown שמוטמעת בתוך המארגן הראשי:
### 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.
הסוכן מעתיק את מפת הדרכים הזו בדיוק לתוכנית המשימות שלו, ומשנה את הפורמט של תהליך העבודה לרשימת משימות מפורטת עם הפניות מובנות למיומנויות. כך הוא פועל במצב 'ביצוע בלבד', מסמן את התיבות באופן שיטתי ומפעיל סוכני משנה מיוחדים בדיוק כשצריך.
4. שלב 1 – הנדסה הפוכה של המונוליט מדור קודם (ביקורת)
אנחנו מוכנים להפעיל את רצף התזמור הראשי שלנו. בשלב הראשון והחשוב ביותר, אנחנו מחלצים את הכללים העסקיים, סכימות הנתונים ומטעני ה-API מהמונולית הישן, ומאחסנים אותם כארטיפקטים נקיים של Markdown. כך אנחנו משאירים מאחור עשור של חוב טכני הכרחי.
הפעלת רצף של שינוי מבנה קוד אוטונומי
בחלונית הצ'אט של Antigravity Agent Manager, מקלידים את פקודה דרך שורת הפקודות המותאמת אישית הבאה ומקישים על Enter:
/orchestrating-greenfield-migration
עכשיו, צריך להתבונן במסוף הטרמינל. תראו את הסוכן הראשי קורא את הנחיית המערכת שלו, מתאים את הבקשה שלכם למטא-נתונים של הסוכן המרכזי, מפיק את רשימת המשימות לביצוע בת 5 השלבים ומתחיל מיד לשלוח במקביל סוכני משנה מיוחדים מסוג 'בודק'.
הסכם הדרכה בנושא קלט/מיומנות/פלט
במהלך שלב 1, הסוכן מריץ צינור (pipeline) הנדסה הפוכה מחמיר שמוגבל על ידי חוזה ההוראות הבא:
נתוני קלט שנצרכו: קבצים של קוד מקור מדור קודם לקריאה בלבד שנמצאים בתוך legacy-app/.
מיומנויות שהופעלו:
מיומנות | תיאור |
| עוקבים אחרי נתיבים מדור קודם כדי לתעד מעטפות מדויקות של תגובות JSON. |
| מפרק סכימות של Mongoose כדי לחלץ קשרים, שדות חובה וערכי ברירת מחדל. |
| מסמכים תופעות לוואי מרומזות, תהליכי אימות של דרכון וכללי תוכנת ביניים. |
| סורק תבניות Pug מדור קודם כדי למפות 'כוונה בממשק המשתמש' ברמה גבוהה (סרגלי ניווט, טפסים). |
פריטים שנוצרו: מפרטים מובְנים מאוד בפורמט Markdown שנוצרו ישירות בתיקייה docs/
Artifact | תיאור |
| במסמך הזה מפורטות נקודות ה-API של אפליקציית Express מדור קודם שעברו הנדסה הפוכה. אפשר להשתמש בקטלוג הזה כדי לוודא שמתבצעת התאמה מדויקת כשבונים מחדש מסלולים באפליקציית Next.js המודרנית. |
| במסמך הזה מתועדים ההתנהגויות, ההגדרות והכללים המחמירים המאומתים של אפליקציית Express מדור קודם בנוגע לאימות (AuthN), להרשאה (AuthZ), לתוכנות ביניים גלובליות, לניהול סשנים ולתופעות לוואי. |
| במסמך הזה מפורט ניתוח מקיף של סכימות Mongoose מדור קודם מ- |
| במסמך הזה מפורטת ניתוח של ממשק המשתמש מבוסס-Pug מדור קודם ב- |
צפייה בצילום מסך של טרמינל בשידור חי שמדגים את הביקורת האוטונומית של הנדסה הפוכה בפעולה:
5. שלב 2 ו-3 – מסגרת TDD ופיגום של קצה עורפי חדש
אחרי שמתבצעת ביקורת מלאה של האפליקציה מדור קודם ומתועדת, כלי התזמור הראשי עובר ליצירת פיגומים עבור קצה העורפי המודרני של היעד. בשלב הזה אנחנו מציגים את תבנית העיצוב האג'נטית הכי עוצמתית בערכת הכלים שלנו: Reflexion (רפלקציה עצמית) במעגל סגור, שמבוססת על פיתוח קפדני מונחה-בדיקות (TDD).
שימוש בלולאות Reflexion כדי להפעיל קוד לתיקון עצמי
כתיבת קוד מודרני היא פשוטה, אבל כדי לוודא שהוא עובר קומפילציה בצורה מושלמת ועומד במגבלות אימות מחמירות, צריך לבצע הערכה במעגל סגור. האורקסטרטור מטפל בזה באופן אוטונומי על ידי העברת פלט הבדיקה ישירות לחלון ההקשר של הסוכן המשני:
- שלב 2 (הגדרת TDD): רכיב האורקסטרטור מפעיל את סוכן המשנה
generating-api-tests, שקורא אתdocs/API_Contracts.mdוכותב חבילות בדיקה מקיפות של שילוב Vitest, שמאמתות את קודי הסטטוס הנדרשים של HTTP ואת מטען ה-JSON. כצפוי ב-TDD, הבדיקות האלה נכשלות בהתחלה. - שלב 3 (פיגום בקצה העורפי): סוכני משנה של פיגום מתחילים לכתוב מטפלי נתיבים מודרניים של Next.js וסכימות אימות מחמירות של Zod.
- לולאת תיקון עצמי: כשמסגרת הבדיקה הדטרמיניסטית של Vitest מעריכה את הקוד החדש ומחזירה כשל (לדוגמה, שגיאת אימות צפויה של
422החזירה500), הסוכן לא קורס. הוא משתקף בפלט השגיאה של היעד, פותח מחדש את handler של נתיב היעד, מתקן את מבנה מטען הייעוד של סכימת Zod ומריץ שוב את הבדיקות. הוא חוזר על הפעולה באופן אוטונומי עד שהוא משיג קוד יציאה של0.
הסכם הדרכה בנושא קלט/מיומנות/פלט
נתונים שהמערכת צרכה: פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של מפרטים שעברו הנדסה הפוכה (docs/API_Contracts.md, docs/Data_Models.md).
מיומנויות שהופעלו:
מיומנות | תיאור |
| יוצרת חבילות שילוב של Vitest שנכשלות. |
| מפעיל את פריסת הנתונים של Next.js App Router. |
| הגדרת סביבת ההרצה של בדיקות Vitest המקומיות. |
| מתרגם מודלים ישנים של Mongoose לסכימות של MongoDB + Zod. |
| בנייה מחדש של מסלולים מהירים ל-Route Handlers מודולריים ול-Route Guards מודולריים ב-Next.js. |
פלט שנוצר: חבילות Vitest ראשוניות שנכשלו, סכימות Zod עם הקלדה מלאה, פונקציות לטיפול בניתוב ב-Next.js וביצועים נקיים של חבילת מקרים לבדיקה שעברו בהצלחה.
שימו לב ליצירה האוטומטית של כלי הבדיקה TDD:
אפשר לראות בזמן אמת את הביצוע של לולאת התיקון העצמי של Reflexion, שיוצרת את התשתית של ה-Backend של היעד:
6. שלב 4 – יצירת תשתית לחלק הקצה הקדמי המודרני (רכיבי ממשק משתמש)
שכבת האימות של ה-Backend עברה חיזוק מלא ועברה את בדיקות השילוב, ולכן המערכת המרכזית לתזמור מעבירה את ההקשר כדי לעדכן את ההצגה החזותית. תבניות חובה שמעובדות בשרת נפסלות לטובת מערכת עיצוב רכיבים נגישה מאוד שמתמקדת בשימושיות.
תרגום של כוונת ממשק המשתמש לתצוגות שאפשר להרכיב
במקום לנסות לתרגם את ה-CSS שורה אחר שורה, סוכן המשנה של הקצה הקדמי קורא את מלאי התכונות שחולצו מ'ממשק המשתמש' וממפה את הרכיבים המבניים ישירות למקבילות מודרניות ברמת דיוק גבוהה.
הסכם הדרכה בנושא קלט/מיומנות/פלט
נתונים שהמערכת צרכה: פריט המידע שנוצר בתהליך הפיתוח (Artifact) של מלאי שטחי הפרסום בחלק הקדמי של האתר (docs/UI_Inventory.md).
מיומנויות שהופעלו:
מיומנות | תיאור |
| מתרגם ארטיפקט |
התוצאות שמתקבלות: דפי קצה קדמי של Next.js שמוכנים לייצור, שנבנו באמצעות רכיבי ממשק משתמש של ShadCN עם נגישות גבוהה ופריסות של כלי השירות Tailwind CSS.
צפייה ביצירה האוטונומית של שכבת התצוגה המודרנית של ממשק הקצה:
7. שלב 5 – אימות וביקורת של יריבים
תהליך הריפקטורינג שלנו מסתיים בבדיקת איכות קפדנית. הכלי המרכזי לניהול תהליכים עובר מניתוח קוד סטטי לבדיקה פעילה של סביבת זמן הריצה, ומנסה באופן פעיל לפרוץ לאפליקציית היעד החדשה כדי להוכיח שקיימת שוויון פונקציונלי מוחלט עם בסיס ההשוואה מדור קודם.
הפעלת הבדיקה בשני כרטיסיות והפעלת הדפדפן
בשלב האימות, נעשה שימוש ביכולות הוויזואליות וה-DOM המשולבות של Antigravity כדי להוכיח את ההצלחה באופן אוטונומי, בלי שתצטרכו ללחוץ ידנית על טפסים:
- השוואה זה לצד זה: סוכן המשנה
auditing-parityמורה למפעיל המקומי להפעיל בו-זמנית את האפליקציה המונוליטית מדור קודם של Express ואת אפליקציית Next.js המודרנית, כדי לוודא שההצגה החזותית ועיבוד הנתונים זהים. - בדיקות אבטחה של תוקפים: כלי התזמור מפעיל את סוכן המשנה
adversarial-verification, שמפעיל את סוכן המשנה של Antigravity Browser. הסוכן המיוחד הזה מפעיל את הדפדפן ישירות – הוא מקליד קלט, שולח טפסים ובודק רגרסיות אבטחה, קובצי Cookie של סשן פגומים או מקרים קיצוניים שלא טופלו. - יצירת נתיב ביקורת: סוכן המשנה בדפדפן מתעד באופן אוטומטי צילומי מסך של סרטוני WebP של הפעלות הסשן שלו, ומצרף אותם ישירות לדוח ההעברה הסופי כ "הוכחת עבודה" שניתן לאימות.
הסכם הדרכה בנושא קלט/מיומנות/פלט
קלט שנצרך: אפליקציות מדור קודם ואפליקציות מודרניות שפועלות זו לצד זו בסביבות זמן ריצה מקומיות.
מיומנויות שהופעלו:
מיומנות | תיאור |
| מבצע בדיקות אימות בזמן הריצה, זו לצד זו. |
| בדיקות של פגמים לוגיים ונסיגות פונקציונליות באמצעות הפעלה אוטומטית של הדפדפן. |
פלט שנוצר: נתיב ביקורת מקיף של שוויון פונקציונלי בשילוב עם סרטונים של סשן בדפדפן שמאשרים שהתהליך הושלם בהצלחה.
אפשר לראות את סוכן המשנה האוטומטי של הדפדפן מאמת באופן פעיל את האפליקציה המודרנית:
8. מוכנות לסביבת הייצור והשלבים הבאים אחרי ההעברה
מעולה! הצלחת להפעיל צינור רפקטורינג מתקדם מאוד ואוטונומי של סוכן, כדי לעדכן מונוליט מדור קודם מאפס. למדת מיומנויות אוניברסליות שניתנות להעברה בקלות, כמו חשיפה הדרגתית, רשימות תיוג של תכנון וביצוע, ולולאות רפלקציה של תיקון עצמי.
הכנות לפריסה בסביבת הייצור
אחרי שהאפליקציה שלכם ב-Next.js תאומת ותיבדק באופן מלא, תוכלו להמשיך לשלב השילוב בסביבת הייצור. כדאי ליישם את השלבים הבאים, שהם סטנדרטיים בתעשייה:
- ניתוב מצטבר: הטמעה של פרוקסי הפוך (לדוגמה, Strangler Fig Pattern) כדי לנתב תנועה באופן מצטבר מאפליקציית Express מדור קודם ליעד מודרני.
- שמירה על SEO: מיפוי של מסלולי Express מדור קודם להפניות קבועות ב-Next.js (
_redirects.yaml) כדי לשמור על סמכות הדומיין הקיימת. - סטרימינג של נתונים: מעבר מאיכלוס סטטי של מסד נתונים לסטרימינג של נתוני ייצור בזמן אמת, שמאומת בצורה מאובטחת בזמן הריצה באמצעות סכימות Zod מחמירות.
- ניראות (observability): מחליפים כלי עזר לרישום ביומן אימפרטיבי במסגרות עבודה מובנות של OpenTelemetry.
העמקת המומחיות במודרניזציה
כדי לעיין בבסיסי הקוד הבסיסיים המלאים, בהוראות המיומנויות המותאמות אישית ובהסבר התיאורטי המלא שמניע את צינור העיבוד הזה, מומלץ לקרוא את המאמר הראשי המלא:
הצטרפות לקהילת Agentic Builder
אני מקווה שהתבניות האוניברסליות האלה של שינוי מבנה הקוד וצינורות העיבוד של סוכנים היו שימושיים. כדי להתעדכן לגבי חבילות מיומנויות קוד פתוח עתידיות, תוכן טכני מעמיק והשתתפות בכנסים קרובים, אתם יכולים לעקוב אחרי בערוצים המקצועיים הבאים:
- אפשר לעקוב אחריו בלינקדאין: linkedin.com/in/jamesor
- אפשר לעקוב אחריו ב-X (לשעבר Twitter): x.com/JamesOR
ספר לנו מה דעתך
מה הכי מרגש אותך בתיאום בין סוכנים?
תודה שבחרת ליצור באמצעות Google Antigravity!