פיתוח שעבר אופטימיזציה לסוכנים

‫Cloud Workstations מספקת סביבת זמן ריצה אופטימלית לסוכני AI אוטונומיים ואינטראקטיביים לכתיבת קוד, כמו Antigravity CLI ו-Claude Code. כשמריצים תהליכי עבודה של פיתוח מבוסס-סוכנים, הסוכנים מבצעים לעיתים קרובות משימות אסינכרוניות ארוכות טווח (כמו יצירת קוד, שינוי מבנה עמוק והרצת בדיקות) או מושהים בזמן שהם מחכים לקלט ולבדיקה של גורם אנושי.

פסק זמן רגיל של תחנת עבודה יכול להוביל לכיבוי ולמחיקה של מכונות וירטואליות זמניות של תחנת עבודה במהלך תקופות ארוכות של חוסר פעילות. כך המאגר מסתיים וצריך לאתחל מחדש את ההקשר של הסוכן. פיתוח שעבר אופטימיזציה לסוכנים פותר את הבעיה הזו באמצעות שילוב של שתי תכונות עיקריות:

  1. השעיית תחנת עבודה (IdleAction.SUSPEND): התכונה הזו משעה באופן אוטומטי את המכונה הווירטואלית של תחנת העבודה כשהיא מגיעה לזמן הקצוב לתפוגה של חוסר פעילות, במקום לעצור אותה. השהיית תחנת העבודה שומרת את ה-RAM של המכונה הווירטואלית, את התהליכים הפועלים, את הקבצים הפתוחים ואת ההקשר הפעיל של הסוכן באחסון מתמיד, תוך הפסקת העלויות של ה-vCPU ושל זיכרון המחשב.
  2. ווים (hooks) של שמירת פעילות במחזור החיים: הווים האלה מאפשרים לסוכני AI להריץ סקריפט של שמירת פעילות ברקע (/google/scripts/keep_alive.sh) במהלך עיבוד פעיל כדי למנוע פסק זמן, ולסיים את הסקריפט בזמן ההמתנה לקלט מהמשתמש או אחרי סיום המשימות. כך תחנת העבודה יכולה לעבור למצב לא פעיל ולהיכנס למצב השעיה.

איך פועלת אופטימיזציה של סוכנים

אופטימיזציה של הסוכן מבטיחה מצב מתמשך, יעילות בעלויות ותפעול חלק במהלך משימות ארוכות:

  • עיבוד פעיל: כשסוכן מתחיל להריץ הוראות של משתמש, מתחילה פעולה של נקודת שילוב במחזור החיים /google/scripts/keep_alive.sh ברקע. הסקריפט הזה שולח אותות תקופתיים של שמירת חיבור כדי למנוע מ-Cloud Workstations לסמן את תחנת העבודה כלא פעילה.
  • בהמתנה לקלט מהמשתמש או לסיום המשימה: כשהסוכן מסיים את העבודה או מפסיק אותה כדי לבקש מהמפתח לבדוק או להזין קלט נוסף, ווסט אירוע מפסיק את תהליך ה-keep-alive ברקע.
  • השעיה אוטומטית: אם אין הודעות keep-alive פעילות או תעבורת נתונים נכנסת, הטיימר של מצב בלי פעילות בתחנת העבודה סופר לאחור עד לסף הזמן הקצוב לתפוגה של מצב בלי פעילות שהוגדר. כשחלף הזמן הקצוב לתפוגה, Cloud Workstations מעביר את תחנת העבודה למצב STATE_SUSPENDED במקום לכבות אותה.
  • המשך מיידי: כשהמפתח חוזר ומתחבר מחדש (דרך מסוף Google Cloud , סביבת פיתוח משולבת או SSH), תחנת העבודה ממשיכה באופן מיידי מהאחסון הקבוע עם מצב הסוכן המלא, סשנים בטרמינל והקשר של סביבת העבודה ללא שינוי.

הגדרת השעיה של תחנת עבודה

כדי להפעיל את השהיית תחנת העבודה, צריך לעדכן את ההגדרה של תחנת העבודה עם idleAction שמוגדר ל-SUSPEND ומשך idleTimeout בשניות, למשל 1800s ל-30 דקות.

צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

המסוף

כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API, לא צריך להגדיר אימות. Google Cloud

gcloud

במסוף Google Cloud , מפעילים את Cloud Shell.

הפעלת Cloud Shell

בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

REST

כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

    התקינו את ה-CLI של Google Cloud.

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

המסוף

כדי להגדיר השעיה בהגדרת תחנת עבודה במסוףGoogle Cloud :

  1. במסוף Google Cloud , עוברים אל Workstation configurations.

    מעבר להגדרות של תחנות עבודה

  2. לוחצים על הוספה יצירה, או לוחצים על הגדרה קיימת ואז על עריכה עריכה.

  3. ממלאים את הקטע מידע בסיסי ועוברים אל הגדרות המכונה.

  4. בקטע Idle timeout (הזמן הקצוב (בדקות) עד לכניסה למצב 'לא פעיל'), מגדירים את משך הזמן הקצוב, למשל 30 דקות.

  5. בתפריט הנפתח פעולה במצב 'לא פעיל', בוחרים באפשרות השהיה (או השהיית תחנת עבודה לאחר פסק זמן של חוסר פעילות).

  6. משלימים את שאר שלבי ההגדרה ולוחצים על יצירה (או על שמירה).

gcloud

כדי ליצור הגדרת תחנת עבודה חדשה עם השעיה מופעלת, מריצים את הפקודה gcloud workstations configs create עם הדגל --idle-action=suspend:

gcloud workstations configs create CONFIG_NAME \
  --cluster=CLUSTER_NAME \
  --region=LOCATION \
  --idle-timeout=1800 \
  --idle-action=suspend

כדי לעדכן הגדרה קיימת של תחנת עבודה כך שתשתמש בהשהיה, מריצים את הפקודה gcloud workstations configs update:

gcloud workstations configs update CONFIG_NAME \
  --cluster=CLUSTER_NAME \
  --region=LOCATION \
  --idle-timeout=1800 \
  --idle-action=suspend

מחליפים את מה שכתוב בשדות הבאים:

  • CONFIG_NAME: השם של הגדרת תחנת העבודה.
  • CLUSTER_NAME: השם של אשכול תחנות העבודה.
  • LOCATION: האזור שבו נמצא אשכול תחנות העבודה.

REST

כדי להגדיר השעיה באמצעות API בארכיטקטורת REST, מגדירים את idleAction ל-SUSPEND ואת idleTimeout למשך הזמן הרצוי במטען הייעודי (payload) של workstationConfigs:

{
  "idleTimeout": "1800s",
  "idleAction": "SUSPEND"
}

הגדרת סוכנים עם ווים לדוגמה של הודעת keep-alive

קובצי הבסיס של Cloud Workstations מוגדרים מראש ומגיעים עם קובצי תצורה לדוגמה של סוכן שמותקנים מראש בתיקייה /google/samples/agents/keepalive/. בדוגמאות האלה נדגים איך להגדיר סוכני AI לכתיבת קוד כדי לנהל את מחזור החיים של הודעת keep-alive באופן אוטומטי.

איך פועלים ווים של סוכן שממשיך לפעול

סוכני קידוד מודרניים מבוססי-AI מספקים מערכות של ווים לאירועים שמבצעות פקודות באבני דרך מרכזיות במחזור החיים:

  • Execution start hook: מופעל לפני שהנציג מתחיל לעבד את קלט המשתמש. ה-hook מפעיל את /google/scripts/keep_alive.sh ברקע וכותב את מזהה תהליך הרקע (PID) לקובץ זמני (לדוגמה, /tmp/agent_keep_alive.pid).
  • הוק (hook) של הודעה או של המתנה לקלט של משתמשים: מופעל כשהסוכן מסיים את המשימה או מושהה כדי לבקש קלט של משתמשים. ה-hook קורא את ה-PID מהקובץ הזמני ומסיים את תהליך הרקע של keep_alive.sh.

הגדרות של Claude Code

‫Claude Code תומך ב-lifecycle event hooks שמוגדרים בהגדרות שלו. קבצים לדוגמה של הגדרות ל-Claude Code נמצאים במיקום:

/google/samples/agents/keepalive/claude/

ב-Claude Code, וווי האירועים הבאים מנהלים את תהליך ה-keep-alive:

  1. UserPromptSubmit: ה-Hook מופעל כשהמשתמש שולח פרומפט. הוא מפעיל את סקריפט ה-keep-alive ברקע:

    /google/scripts/keep_alive.sh & echo $! > /tmp/claude_keep_alive.pid
    
  2. Notification: הפונקציה Hook מופעלת כש-Claude Code שולח התראה או מושהה כדי לקבל קלט של משתמשים. הוא משבית את תהליך הרקע הפעיל של keep-alive:

    if [ -f /tmp/claude_keep_alive.pid ]; then
      kill "$(cat /tmp/claude_keep_alive.pid)" 2>/dev/null || true
      rm -f /tmp/claude_keep_alive.pid
    fi
    

כדי להחיל את הגדרת הדוגמה, מעתיקים או ממזגים את קובצי הדוגמה מ-/google/samples/agents/keepalive/claude/ אל ספריית ההגדרות של Claude (לדוגמה, ~/.claude/settings.json או הגדרות ברמת הפרויקט).

הגדרת Antigravity CLI

‫Antigravity CLI תומך ב-lifecycle event hooks שמוגדרים בהגדרות שלו. קבצים לדוגמה של הגדרות ל-Antigravity CLI נמצאים במיקום:

/google/samples/agents/keepalive/gemini/

ב-Antigravity CLI, ווֹקְסָי האירועים הבאים מנהלים את תהליך ה-keep-alive:

  1. BeforeAgent: Hook שמופעל לפני ש-Antigravity CLI מתחיל להריץ פעולות. הוא מפעיל את סקריפט ה-keep-alive ברקע:

    /google/scripts/keep_alive.sh & echo $! > /tmp/gemini_keep_alive.pid
    
  2. Notification: ה-Hook מופעל כשהסוכן מסיים את התור שלו או כשהוא צריך משוב מהמשתמש. היא מסיימת את תהליך ה-keep-alive:

    if [ -f /tmp/gemini_keep_alive.pid ]; then
      kill "$(cat /tmp/gemini_keep_alive.pid)" 2>/dev/null || true
      rm -f /tmp/gemini_keep_alive.pid
    fi
    

כדי להחיל את הגדרת הדוגמה, מעתיקים או ממזגים את קובצי הדוגמה מ-/google/samples/agents/keepalive/gemini/ אל ספריית ההגדרות של Antigravity CLI (לדוגמה, ~/.gemini/config.yaml או הגדרות הפרויקט).

שילוב של נציג בהתאמה אישית

אם אתם בונים סוכני AI בהתאמה אישית או משתמשים בהם, אתם יכולים להטמיע את אותו דפוס של שמירת חיבור על ידי הפעלת /google/scripts/keep_alive.sh כתהליך ברקע במהלך ביצוע פעיל של הסוכן, וסיום התהליך כשהסוכן עובר למצב המתנה או למצב לא פעיל.

המשך שימוש בתחנת עבודה מושעית

כשעמדת עבודה נמצאת במצב STATE_SUSPENDED, אפשר להפעיל אותה מחדש בכל שלב:

  • Google Cloud מסוף: במסוף Google Cloud , נכנסים לדף Workstations ולוחצים על Launch או על Start לצד תחנת העבודה שהושעתה.
  • gcloud CLI: מריצים את הפקודה gcloud workstations start:

    gcloud workstations start WORKSTATION_NAME \
      --cluster=CLUSTER_NAME \
      --region=LOCATION \
      --config=CONFIG_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • WORKSTATION_NAME: השם של תחנת העבודה.
    • CLUSTER_NAME: השם של אשכול תחנות העבודה.
    • LOCATION: האזור שבו נמצא אשכול תחנות העבודה.
    • CONFIG_NAME: השם של הגדרות תחנת העבודה.
  • חיבור בדפדפן או חיבור SSH: כשעוברים לכתובת ה-URL של תחנת העבודה באינטרנט או מתחברים באמצעות SSH, תחנת העבודה מופעלת אוטומטית.

אחרי שממשיכים את הפעילות, כל המאגרים של הטרמינל, היסטוריית הפקודות של הסוכן והקבצים של סביבת העבודה משוחזרים בדיוק כמו שהם היו כשעזבתם.

המאמרים הבאים