המערכת שלך לא תישבר. היא פשוט תפסיק, ואף אחד לא ישים לב
כשמערכת נשברת אתה יודע. יש כשל אחר, גרוע בהרבה, ואותו לא תראה אף פעם: היא פשוט לא מתחילה. שבעה חוקים לבנייה של מערכת שמתחילה בלעדיך 👇
הכשל שאתה לא רואה 🪝
כשמערכת נשברת, אתה יודע. יש שגיאה, יש לוג אדום, יש טלפון בשתיים בלילה.
אבל יש כשל אחר, גרוע בהרבה, ואותו לא תראה אף פעם: המערכת פשוט לא מתחילה.
הכלי נבנה ונשאר על המדף. ההחלטה התקבלה ואף אחד לא חיווט אותה. הבדיקה קיימת בקוד ואף אחד לא מריץ אותה. אין שגיאה. אין לוג. יש שקט, והשקט נראה בדיוק כמו הצלחה.
אצלנו זה הופיע בצורה הכי חדה שאפשר: מנגנון-הפעלה שנבנה במלואו, כולל שער-בטיחות דו-כיווני, ופשוט לא נדרך. בדקנו סקריפט אחר שישב על המדף תשעה-עשר יום, הרצנו אותו בפעם הראשונה, והוא ירה מיד. הוא היה צודק כל הזמן. אף אחד לא שאל אותו.
המשפט שסיכם את זה: אף מרכיב אינו יודע בעצמו שהוא לא רץ ⚠️
זה המאמר על איך בונים מערכת שבה זה לא קורה. לא איך מהגרים, ולא איך מתחילים מחדש. איך צריך לבנות.
חוק 1: כל חוזה נאכף מבחוץ, ובארכיטקטורה אחרת 🧱
זה החוק שכל השאר נגזרים ממנו.
אם רכיב אחראי לבדוק את עצמו, הוא ייכשל בדיוק ברגע שבו הבדיקה חשובה. סוכן-AI שמדווח "סיימתי" אינו ראיה שהוא סיים. הוא ראיה שהוא חושב שסיים.
לכן: מי שמבצע לעולם לא מי שאוכף. ולא רק זה, גם הטכנולוגיה שונה. סקריפט אוכף מודל, לא מודל אוכף מודל. סקריפט שסופר קבצים על הדיסק לא משכנע את עצמו ולא מתעייף ולא רוצה לרצות אותך ✅
ההיפוך המעשי: "לא רץ" חייב להיות הפרה שמכונה תופסת, לא מצב-ברירת-מחדל שקט.
חוק 2: העבר גבול אחד, וכל הסלט נעלם 🧭
רוב המערכות מסתבכות מסיבה אחת: מי-שמייצר ומה-שמיוצר יושבים באותו מקום.
השאלה שפותרת את זה קצרה: האם זה מייצר, או שזה מיוצר?
מייצר, זו החברה. מיוצר, זה הפרויקט. אין מקרה שלישי.
ויש מבחן פשוט שמכריע כל ויכוח: מה שנשאר נכון אחרי שהפרויקט מת שייך לחברה. מה שמת איתו שייך לפרויקט.
החברה מחזיקה מרשם, פנקס, מאגר-ידע, כספים וראיות. הפרויקט מחזיק קוד, קונפיג, פריסה והיסטוריה, ורץ איפה שהוא רץ. הרגע שבו תוכן של פרויקט זולג פנימה לחברה הוא הרגע שבו המערכת מתחילה לשקר לעצמך על מה קיים 📁
חוק 3: יחידת-עבודה נמדדת בבדיקה אחת, לא בשיחה 📏
איך מחליטים כמה גדולה משימה שנותנים לסוכן?
התשובה לא נמצאת בטוקנים. היא נמצאת כאן: היחידה הגדולה ביותר שאפשר להכריע אם היא גמורה, בבדיקה מכנית אחת מול תוצרים על הדיסק, בלי לשאול את הסוכן מה זכור לו.
שתי פסילות מיידיות:
1. אם צריך שיחה שנייה כדי להבין מה עשתה הראשונה, המצב זלג לתוך הסוכן. פסול.
2. אם כתיבת המפרט והאימות עולה יותר מהביצוע עצמו, פירקת יותר מדי. פסול.
וכלל אחד שקל לשכוח: כשנגמר התקציב, מפצלים. לא מגדילים. 🔪
הנתון שמאחורי זה: מחקר על כשלי מערכות רב-סוכניות מצא ש-42% מהכשלים הם כשלי-מפרט, לא כשלי-מודל. כלומר הבעיה כמעט אף פעם לא "הסוכן לא מספיק חכם". הבעיה היא שלא אמרנו לו בדיוק מה נחשב גמור.
חוק 4: כשאתה מפזר עבודה, תספור. אל תזכור 🔢
זה החוק שמציל אותך מהכשל הכי מסוכן במערכות סוכנים: השמטה שקטה.
מפזרים משימה לתשעה סוכנים, שמונה חוזרים, והממזג כותב סיכום יפהפה שנשמע שלם. אף אחד לא מרגיש שחסר משהו, כי מה שחסר לא צועק.
הפתרון אינו סוכן חכם יותר. הפתרון מכני:
- לפני שמתחילים, נוצר מניפסט ממוספר כקובץ-מכונה: כמה פרוסות, מזהה לכל אחת, ונתיב-תוצר לכל אחת.
- שער-המיזוג הוא סקריפט, לא מודל. הוא סופר תוצרים מול המניפסט.
- כל פרוסה חייבת להיות "הוחזרה" או "דולגה, וזו הסיבה". פרוסה בלתי-מטופלת מחזירה כישלון, והמיזוג חסום.
למה דווקא כך: מדדנו את היכולת של שכבת-מודל לזהות שחסר לה קלט. התוצאה הייתה 0%.
הממזג לא צריך לדעת שחסרה תשיעית. המספר יודע ✅
חוק 5: למידע יש שלושה יעדים, ורק אחד מהם באמת עובד 🧠
כאן נמצא הלב, וכאן רוב הארגונים מפסידים בלי לשים לב.
| היעד | מה נכנס | מי קורא |
|---|---|---|
| עקבה | הכל, append-only, בתוך הפרויקט | אף אחד, וזה בסדר. זה לביקורת |
| ידע | רק מה שאומת ועדיין נכון, עם בעלים ומקור ותנאי-פקיעה | מי שיזכור לחפש |
| שיטה | לא מסמך. נערכת לתוך הסוכן עצמו | הפרויקט הבא, מהרגע שהוא נולד |
שים לב לעמודה השלישית. עקבה וידע תלויים שניהם באדם שיזכור לחפש. רק השיטה נכנסת לעבודה מעצמה.
זה ההבדל בין "כתבנו מסקנות" לבין "המערכת השתנתה". תיעוד שלא נמצא איפה שמחפשים אותו אינו תיעוד, הוא ארכיון פרטי 📦
ואיך לקח נכנס פנימה בלי להרוס את הסוכן? בשני קצבים:
- מופע ראשון: נולד גלאי מיד. בלי דיון, בלי ועדה.
- הכללה לשיטה: רק במופע שני, או במופע אחד שהגלאי שנולד ממנו כבר ירה.
והשינוי נכנס תמיד בלידת הפרויקט הבא, לעולם לא באמצע ריצה, אחרת הסוכן נצבע לפי הלקוח האחרון וכל לקוח חדש מקבל את הצלקות של הקודם.
השורה שסוגרת את זה: "אותה טעות לא קורית פעמיים" מסופקת על ידי תפיסה, לא על ידי ניבוי.
חוק 6: תקרה שלא ירתה היא תיאטרון 🚨
כל מערכת רצינית מגדירה מגבלות. עומק פיזור, רוחב פיזור, תקציב, זמן-קצוב.
והנה מה שכמעט אף אחד לא עושה: בודק שהמגבלה בכלל יורה.
שני ספים שהגדרנו ולא כיילנו כשלו אצלנו בשני הכיוונים ההפוכים. אחד ירה פי-ארבעים על פעילות תקינה לגמרי, אז למדנו להתעלם ממנו. השני נתן אפס-דיוק, אז הוא פשוט לא הגן על כלום.
לכן ההגדרה של תקרה חוקית היא שלושה חלקים, לא אחד: ערך, מנגנון-מדידה, והוכחה שהיא ירתה לפחות פעם אחת.
תקרה שלא ירתה שבועיים אינה הגנה. היא קישוט.
חוק 7: משהו חייב להתחיל, ואסור לו לאשר ⚡
וכאן חוזרים להתחלה.
אם אין רכיב שרץ תמיד, אז הטריגר היחיד בארגון הוא בן-אדם. וזה אומר שהתפוקה של הארגון שווה בדיוק לתשומת-הלב של אותו בן-אדם. הוא נכנס לפגישה, המערכת נעצרת. הוא נוסע לחופשה, המערכת מתה.
הרכיב שפותר את זה קטן להפתיע:
- מתזמן יחיד, זעיר, מבוסס-חוקים, רץ תמיד. הוא לא חושב. הוא סורק שלושה מקורות ומשגר: החלטות שסומנו כלא-מחווטות, פריטים בתור, וגלאים שנכשלו.
- שדה מכני על כל החלטה שאומר האם היא חוּוטה בפועל. כך "החלטה בלי חיווט אינה החלטה" מפסיק להיות תובנה יפה והופך לבדיקה שנכשלת.
- דופק הדדי: למתזמן יש קובץ-דופק, וגלאי נפרד בקצב עצמאי נכשל כשהדופק מתיישן. שתי לולאות קטנות ששומרות זו על זו, ואף אחת מהן אינה מודל.
ועכשיו הגדר הכי חשובה במאמר הזה, ואל תוותר עליה לעולם:
המתזמן מתחיל עבודה בלבד. הוא לעולם לא מאשר.
כסף, סוד, פרודקשן, לקוח, שער-אבטחה. כל אלה נשארים אצל אדם, בכל רמת-אמון, תמיד.
זה לא חסם שנכשלת לבטל. זו בדיוק התכונה שמאפשרת לך לבטל את כל השאר בלב שקט 🤝
המבחן היחיד שחשוב
בסוף, אל תשאל אם המערכת שלך חכמה. שאל שאלה אחת:
התקלה הבאה, מי יתפוס אותה?
אם התשובה היא "אני", עדיין לא בנית מערכת. בנית עוד עבודה לעצמך, רק עם יותר קבצים 📋
מערכת בנויה נכון עונה אחרת: המכונה תופסת, המתזמן מתחיל, השער מחזיק, והאדם נכנס רק לרגע שבאמת דורש אדם.
זה כל ההבדל בין ארגון שמייצר לבין ארגון שמתעד את עצמו בזמן שהוא עומד.
💬 בונים מערכת-סוכנים ורוצים לדבר על הגבולות לפני שאתם כותבים את השורה הראשונה? כתבו לנו.