Skip to main content

לומדים

העמוד בתהליך תרגום. בינתיים מוצג המקור באנגלית לאחר בדיקה.

בניית חיבור פרודקשן סביב Claude Code

התשובה הקצרה

סוכן קידוד בגופו הוא מוח בצנצנת. הוא יכול לחשוב ולכתוב קוד, אבל הוא לא יכול לענות ל־Slack DM בשעה 3 לפנות־בוקר, לנסות שוב עבודה ב‑CI שנכשלה, או לזכור ששאלת מבקר עדיין ללא מענה. ה‑harness — שלד הריצה סביב ה‑LLM — הוא מה שנותן לו חושים, ידיים וזיכרון.

זהו מבט מלמעלה על צנרת פרודקשן מרובת־סוכנים שבנו על Claude Code: אחת שצופה בערוץ Slack, פתחה MRs בחמישה מאגרים פנימיים, התמודדה עם הערות מבקרים במהלך הלילה, ותיקנה שיבושים ב‑CI במשך חודשים. המוח (המודל) הינו בעיקר ניתק להחלפה; מה שמשתנה זה ה‑harness שסביבו.

למה חיבור ולא רק סוכן

שלוש מצבי כשל מופיעים בשבוע הראשון של חיבור ממשק שיחה מול LLM:

  1. הוא מאבד הקשר כשאתה סוגר את הטאב. משימה אמיתית נמתחת על פני ימים. קריאה יחידה של LLM לא מחזיקה את כל המצב.
  2. הוא לא יכול להגיב לשינויים חיצוניים. מבקר מגיב ב‑16:00; ה‑CI נכשל אחרי הקומיט השלישי. הסוכן חייב להתעורר על אירועים, לא לפול לנצח.
  3. הוא לא יודע להתאושש מכשליו שלו. הוא דוחף קומיט, ה‑CI נשבר, והמפעיל צריך להסביר שוב מחר.

ה‑harness סוגר שלושה פערים תואמים: תגובתיות, התמדה, ואיכות.

שש השכבות

1. קליטת אירועים

ה‑harness מתעורר על אותות חיצוניים — אזכורים ב‑Slack, אירועי GitLab MR/CI, קריאות PagerDuty — המוזרמים לתור דיספטש מאוחד. ה‑LLM אף פעם לא מפולל; הוא נקרא. הפרטים המעשיים חשובים: להקפיא cursors על פולים ריקים כדי להימנע מפספוס באחידות, להסיר כפילויות לפי tsc של ההודעה, ולזוג את Socket Mode עם פולר כרשת ביטחון כדי שנתק בחיבור לא יבלע הודעות.

2. אורקסטרציית סוכנים

עובדים נולדים כיחידות ארעיות השאת payload JSON שמכיל שם וורקפלוּו + תיקיית מקרה + הקשר ת'רד. כל צנרת היא קריאת Claude Code ארוכת־ריצה עם prompt מעוצב ומרחב כתיבה זמני. הכוריאוגרפיה משתמשת בכמה סוכנים מתמחים שרוכבים בשרשרת בנקודות מסירת משימה מוגדרות: סוכן חקירה, סוכן מעקב ארוך־חיים, ממזג, ו"עושה" שבוצע את השינוי, צופה ב‑CI ומטפל בהערות ביקורת.

שתי בחירות לא־ברורות: הכל רץ ב‑git worktrees (מקרים מקבילים לא מתנגשים), ותיקיית המקרה היא מקור האמת היחיד שכל וורקפלוּו מסיים אליה.

3. מצב מתמשך

המצב חי בשלוש שכבות: מטמונות בזיכרון (ניתנות לבנייה מחדש), מפות JSON מקומיות (בטוחות ל‑restart), ומרחבי עבודה מסונכרנים ב‑git (חזקים, חוצי־מכונה). המצב חי ב‑git, לא בתהליך — כך ת־סשן ממשיך על לפטופ או VM מרוחק עם הקשר מלא.

4. לופים של תיקון עצמי

שלושה לופים נסגרים ללא התערבות מפעיל: תיקון אוטומטי של CI (מוגבל ל‑3 כשלונות רצופים, ואז מסליטציה), מענה אוטומטי למבקר (מניעת כפילויות לפי מחבר כדי שלא יפעל שוב), ורענון אסימון המוגן ב‑MFA. בלי תקציבי ניסיון חוזר וזיהוי עצמי, לופים מסתבכים — בדיקת־קצה רעועה פעם יצרה 80 קומיטים ללא אפקט באחר צהריים אחד.

5. יכולת תצפית

ארבע משטחים: עדכוני סטטוס חיים ב‑Slack (עריכת הודעה יחידה), לוגים מובנים ל‑grep, Slack DMs לאירועים סופיים (MR נפתח/מוזג, הסלציה), ויומן מערכת. בכוונה ללא דשבורד — Slack ו‑grep הם הקונסולות. בריאות MCP מקבלת watchdog משלה כך שאסימון שפג תוקפו יופיע כ"הכלי החזיר תוצאה ריקה" במקום "הסוכן טיפש היום".

6. שליטה עם אדם־במעגל

כל אינטראקציה של מפעיל זורמת דרך DM יחיד עם שישה משפחות פקודות (task, on‑call, MR control, pause, finalize, registry). מתג ה‑pause מכויל בדיוק: הוא משתיק דיספטש אוטומטי המונע על ידי פעילות של אחרים, אבל לעולם לא פוסיק פקודות של המפעיל עצמו.

נקודת ההשפעה הגדולה היחידה: פלט מובנה

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

שערי איכות: איך ביטחון מקבל משמעות

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

  • G-gates (עקביות לוגית) — ההנמקה לא יכולה לסתור את עצמה באיטרציות; עלייה בכמות השאלות הפתוחות מבטלת עלייה בביטחון.
  • N-gates (שלמות מבנית) — ארטיפקטים חייבים להיות שלמים; כל תיקון מצמד לפעולת אימות.
  • A-gates (תקרות הטענה) — גבולות מכניים שהמודל לא יכול לעקוף בפרוזה. הביטחון מוגבל חישובית: 1.0 − (open_questions × 0.08) − (unchecked_sources × 0.05), בלי קשר למה שהמודל כותב.

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

סקירה אדברסיאלית: ה‑red team מבפנים

כאשר החקירה מכריזה על סיום עם ביטחון ≥ 70, השליטה עוברת לקריאת Claude נפרדת שממלאת תפקיד של מבקר אדברסיאלי. הוא מעריך 15 ממדים ומפיק פסק — בעיות קריטיות מחזירות את הלולאה חזרה; שני מעברים רצופים עם רק הערות קטנות או מעבר נקי משלים את התהליך. אותו מודל שמשחק תפקיד שונה תופס חלק משמעותי מההתפעלות העצמית שאיטרציה יחידה חסרה. ב‑red‑team מבנית נפרדת רואה רק את הצהרת הבעיה והמסקנה הסופית, ובודקת האם המסקנה הייתה ניתנת להגעה בלי המסגור של החקירה.

שיפור עצמי: ה‑harness מתקן את עצמו

התכונה המבחינה: הסובסטרט של ה‑harness הוא קוד המקור שלו, וכל מקרה סגור מזין חזרה.

  • תיקון פער למקרה — אנליזר פערים מזהה היכן ה‑harness לא התפקד ופותח PR אחד נגד קוד הבסיס של ה‑harness. מיזוג על ידי אדם, לא כתיבה אנושית.
  • חיזוק חוצה־מקרים — מצבי כשל נספרים לפי פרויקט; קרון שבועי מציע שינויים ב‑SOP כשהמצב חוצה ספים. בכוונה לא מיושם אוטומטית, כי החלטות אוטומטיות שמצטברות לטעות הן מחלקת כשל ידועה.

אחרי 20–30 מקרים, SOP של כל פרויקט מותאם לאפני הכשל הספציפיים שלו. ה‑harness אוכל את האוכל שלו: pr-ci-fixer מתפעל תיקוני כשל ב‑MRs של השיפורים של ה‑harness עצמו, כך שהסוכן שומר על ה‑CI שלו ירוק.

מסקנה

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

> בנה את הלולאה קודם. הפוך אותה לאוטונומית שנית. מערכת אוטונומית בלי מסלול משוב לתוך הסובסטרט שלה היא רק דרך מהירה יותר לשלח את אותם טעויות, בקנה‑מידה.


זהו תיאור ארכיטקטוני של מערכת פרקטישנרית בפרודקשן שנבנתה על Claude Code. רעיונות וציטוטים מתייחסים למאמר המקורי של Messi Li (May 2026); העיצוב המנגנוני כאן הוא סינתזה מקורית. אין זיקה ל‑Anthropic.