דילוג לתוכן הראשי
aivrit

לולאות בקלוד קוד: לתת לסוכן לרוץ עד שהעבודה נגמרת

מאת ירון דויטשר עודכן לאחרונה:

מה זה בכלל לולאה, ולמה לא סתם להריץ שוב?

רוב העבודה עם קלוד קוד היא שיחה: מבקשים, מקבלים, מבקשים שוב. אבל חלק מהמשימות אינן שאלה אחת — הן המתנה. לחכות שה-CI יסיים, לבדוק אם הגיעו הערות על ה-PR, לעקוב אחרי דיפלוי. במקום לשבת ולרענן, אפשר לתת לסוכן לעשות בדיוק את זה: לחזור על אותה בדיקה שוב ושוב עד שמשהו קורה.

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

הכלל שקודם לכול: תנאי עצירה

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

  • תקרת ניסיונות: מספר מקסימלי של סבבים. “עצור אחרי 5 ניסיונות” הוא לא הצעה — הוא רשת ביטחון מפני לולאה שרצה לנצח על בעיה שלא נפתרת
  • קריטריון הצלחה מדיד: לא “תשפר את הביצועים” אלא “עד שכל הבדיקות עוברות” או “עד שציון הביצועים חוצה 90”. יעד שאפשר לבדוק אוטומטית הוא יעד שאפשר לעצור עליו
  • מעקב מכסה: לולאה צורכת טוקנים בכל סבב. בודקים את הצריכה עם /usage, שמפרק את השימוש לפי סקילים, סוכני-משנה ושרתי MCP — כדי לדעת מתי לעצור

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

לולאה חוזרת: הפשוטה ביותר

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

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

הפקודה שמריצה פרומפט שוב ושוב על המחשב שלכם

/loop מריצה את אותו פרומפט שוב ושוב, מקומית, עד שעוצרים. נותנים לה מרווח ומשימה:

/loop 5m check if the deployment finished and tell me what happened

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

/loop 5m check my PR, address review comments, and fix failing CI

קלוד יבדוק כל חמש דקות, יטפל בהערות שנכנסו, ויתקן בדיקות שנכשלו — בלי שתרעננו כלום. שלוש עובדות שחשוב להכיר:

  • המרווח המינימלי הוא דקה אחת: יחידות זמן הן שניות, דקות, שעות וימים; ערכים קצרים מדקה מעוגלים כלפי מעלה
  • אפשר לתת למודל לקבוע קצב לבד: משמיטים את המרווח, וקלוד בוחר בעצמו כמה להמתין בין סבב לסבב — בין דקה לשעה — לפי מה שראה, ומדפיס בסוף כל סבב כמה זמן בחר ולמה. זה שימושי כשהקצב הנכון תלוי במה שקורה:
/loop check whether CI passed and address any review comments
  • היא רצה מקומית: צריך שהמחשב יהיה דלוק והשיחה פתוחה. לעצירה, לוחצים Esc בזמן שהלולאה ממתינה לסבב הבא. וממילא יש תפוגה אוטומטית: לולאה חוזרת נעצרת מעצמה אחרי שבעה ימים

הפקודה עם קו סיום

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

/goal get the homepage Lighthouse score to 90 or above, stop after 5 tries

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

פרט אחד על המעריך שכדאי להכיר לפני שמנסחים יעד: הוא אינו מריץ פקודות ואינו קורא קבצים בעצמו, אלא שופט רק את מה שקלוד כבר הציג בשיחה. לכן תנאי טוב הוא כזה שהפלט של קלוד יכול להוכיח — “הבדיקות בתיקייה ‎test/auth‎ עוברות” ולא “הקוד נקי”. ההסבר המלא, יחד עם שאר דרגות האימות, נמצא באימות בקלוד קוד.

כשצריך שזה ימשיך גם כשהמחשב כבוי

/loop ו-/goal רצות מקומית — ברגע שסוגרים את השיחה, הן מפסיקות להתקדם. (יעד שהיה פעיל בסוף הסשן כן משוחזר כשחוזרים אליו עם ‎—resume‎ או ‎—continue‎, אבל הוא אינו ממשיך לרוץ בינתיים.) כשצריך משהו שרץ בלי המחשב שלכם, עוברים ל-/schedule: לולאה שרצה על התשתית בענן של Anthropic וממשיכה גם כשהלפטופ סגור. המרווח המינימלי שלה הוא שעה, לא דקה — היא נבנתה למטלות חוזרות (סיכום Slack כל בוקר, סריקת דוחות באגים כל שעה), לא למעקב של דקות.

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

אז מתי כל סוג מתאים?

היבטלולאה חוזרת/loop/schedule
איפה רץבשיחה, ידניתעל המחשב שלכםבענן של Anthropic
צריך מחשב דלוקכןכן, ושיחה פתוחהלא
מרווח מינימליללאדקה אחתשעה אחת
מתאים למשימה קצרה וחד-פעמיתמעקב פעיל של דקות עד שעותמטלות חוזרות יומיות

והכלל שמעל הטבלה: משימה עם יעד מדיד וקו סיום — /goal. משימה של המתנה שדורשת מרווח — /loop. משהו שצריך לחזור על עצמו כשאתם לא ליד המחשב — /schedule.

שורה תחתונה

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

עוד לא הרצתם אוטומציה ראשונה? המדריך המעשי לוקח אתכם צעד-צעד. רוצים ללמוד לבנות תהליכים כאלה בעבודה שלכם? הרצאה בהתאמה אישית היא נקודת פתיחה טובה.

שאלות נפוצות

מה זה loop בקלוד קוד?

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

איך גורמים לקלוד קוד לבדוק PR שוב ושוב עד שהוא ירוק?

מפעילים לולאה מקומית עם מרווח ומטלה: פקודת ‎/loop‎ ואחריה מרווח (למשל ‎5m‎) והמשימה. קלוד יבדוק את הבקשה כל כמה דקות, יטפל בהערות ויתקן בדיקות שנכשלו, עד שתעצרו אותו. לוחצים Esc בזמן שהוא ממתין למחזור הבא כדי לעצור.

מה ההבדל בין לולאה שרצה על המחשב ללולאה שרצה בענן?

לולאה מקומית (‎/loop‎) רצה על המחשב שלכם ודורשת שהוא יהיה דלוק ושהשיחה תישאר פתוחה; המרווח המינימלי הוא דקה. לולאה בענן (‎/schedule‎) רצה על התשתית של Anthropic וממשיכה גם כשהמחשב כבוי, אבל המרווח המינימלי שלה הוא שעה. דקות של מעקב פעיל — מקומי; מטלות חוזרות יומיות — ענן.

איך עוצרים לולאה שרצה, ואיך שומרים שהיא לא תבזבז מכסה?

שלוש שכבות: תקרת ניסיונות מראש (בפקודת ‎/goal‎ אפשר לכתוב 'עצור אחרי 5 ניסיונות'), עצירה ידנית בלחיצת Esc בזמן המתנה, ותפוגה אוטומטית של שבעה ימים על לולאות חוזרות. לאורך הדרך עוקבים אחרי הצריכה בפקודת ‎/usage‎, שמפרטת את השימוש לפי סקילים, סוכני-משנה ושרתי MCP.

מדריכים קשורים