בניית סוכן אינה משימה פשוטה.
לפני שנה היינו צריכים לנהל הקשר וזיכרון בעצמנו, לחשוב על RAG ומסדי נתונים וקטוריים, ולכוון בזהירות את דיוק השימוש בכלים. הופעת Claude Code / Claude Agent SDK שינתה את כל זה. כיום יותר ויותר צוותים מתחילים לבנות סוכנים ישירות באמצעות Claude Agent SDK + VM. האם הבעיה הפכה לפשוטה יותר? לא.
הרצת Claude Code ב-VMs עדיין מהווה אתגר משמעותי.
-
כל סשן משתמש דורש VM עצמאי. בחלק מהתרחישים, יכולת ההתמדה של VM יכולה להיות שימושית, אך היא גם מקשה על שדרוג ואורקסטרציה של VMs. לדוגמה, מהזווית של המשתמש, הוא מצפה שהתוכנה שהותקנה על ה-VM תמשיך להיות זמינה גם חודשים לאחר מכן. אך החלקים ב-VM שמתקשרים עם שכבת האורקסטרציה צריכים גם הם לאפשר שדרוגים.
-
יצירה ואורקסטרציה של VMs בקנה מידה גדול. אשכול k8s יחיד תומך באורקסטרציה של כמה אלפי פודים, וזה מספיק לאשכולות שירותי אפליקציה. אך זה לא מספיק לתרחישים שבהם כל סשן צריך להפעיל פוד של claude code.
-
שימוש בפתרונות k8s מתמודד עם השהיה שמביאה k8s, מה שמקשה להגיע לביצועים בתוך 1 שניות.
-
שימוש בפתרונות e2b מחייב התמדה עצמאית, והעלאת/הורדת קבצים איטית מאוד.
-
פתרון e2b לא עומד בדרישות סביבה רשתית מסוימות, ופריסה פרטית מסורבלת.
איך פותרים את הבעיות האלו? נלמד מההיסטוריה. כשנחזור אחורה בלוח השנה ליותר מעשור, ב-2012, לא היה serverless, לא היה k8s, ולא היה docker. מהנדסי backend נדרשו לתחזק ידנית תהליך שירות על מכונה פיזית כדי להריץ שירות. אז, ssh ו-ansible היו כלים סטנדרטיים למהנדסי שרתים. תהליכי שירות היו תלויים מאוד בסביבות כלים שונות על המכונה הפיזית. השגת קונפיגורציה עקבית של סביבות כלים בין מכונות פיזיות הייתה אתגר גדול, והרחבה בקנה מידה גדול דרשה היערכות מוקדמת של הצוותים. אני עדיין זוכר מהנדס ששינה סביבה במכונה אחת ושכח לסנכרן לשאר המכונות, מה שגרם לבאג רפאים קשה לאיתור בפרודקשן. זו הייתה תקופה כואבת במיוחד.
ב-2012 הופיע docker. Docker ארז את כל סביבות הכלים לתוך דימוי אחד, ופתר את בעיית חוסר העקביות בסביבה. הקהילה הבינה בהדרגה שתהליך שירות שרץ במכונה וירטואלית על מכונה פיזית ניתן לניהול כמו תהליך על המכונה הפיזית. אך אורקסטרציה של docker עדיין דרשה מהנדסים לבנות מערכת אורקסטרציה. וכאשר תהליך השירות בתוך docker היה תלוי ברשת ובמערכת הקבצים של המכונה הפיזית, האורקסטרציה הפכה למורכבת מאוד.
ב-2014 שירותים חסרי-מצב (stateless) הפכו לזרם המרכזי. באותה שנה נולדו Kubernetes ו-AWS Lambda. כל אחד מהם תיאר את עתיד השירותים חסרי-המצב מזווית שונה. שירותים חסרי-מצב פירושם שהלוגיקה של השירות נמנעת מתלות בכתובות רשת ואינה תלויה עוד במערכות קבצים מתמידות מקומית.
לאחר מכן הגיעו שנות 10 של cloud native, וגל השירותים חסרי-המצב הוליד תשתיות cloud native רבות, כגון:
- שערי שירות Istio/Linkerd/Envoy/Treafik
- פלטפורמות CI/CD כמו Argo CD / Flux
- פלטפורמות תצפיתיות Prometheus/Grafana/ELK Stack
- ניתוח שרשראות קריאה Jaeger/Zipkin/OpenTelemetry
- אחסון Rook/MinIO/JuiceFS
ואנחנו כעת בתחילתה של תקופה חדשה. לפני עשר שנים, יחידת החישוב הייתה תהליך שירות api ב-java/python. מהשנה, יחידת החישוב הזו הפכה לסוכן קוד.
ACFS דומה לתקופה של תחזוקת תהליכי שירות ידנית על מכונות פיזיות. E2B דומה ל-Docker. ללא פלטפורמות אורקסטרציה למשימות, פלטפורמות תצפיתיות ואחסון מצב מבוזר, סקלאביליות עדיין קשה לסוכני קוד. והתשתית לסוכן ללא שרת שאני מצפה לה כוללת את היכולות הבאות:
- מסוגלת להתמיד כראוי את הסשנים ותיקיות העבודה של סוכן הקוד מבלי לאבד הקשר.
- מהירה במיוחד, מסוגלת להפעיל סוכן קוד תוך 100ms.
- כוללת לוגים/מדדים/מעקב אחרי התנהגות הסוכן, באופן שקל לבני אדם להבין, כדי להקל על הבנת דפוסי ההתנהגות של הסוכן והתאמתם.
- מפתחים כבר לא צריכים להתעסק בפרטים כמו מכונות וירטואליות, קונטיינרים ופרטי תפעול אחרים, מה שמקל מאוד על אורקסטרציה בקנה מידה גדול.
אני חושב שכל התשתיות שיכולות לעמוד בדרישות האלו כבר מוכנות, לדוגמה firecracker הוכיח את הביצועים והיציבות של microVMs, ויש גם הרבה אפשרויות לפלטפורמות תצפיתיות מבוזרות ולמערכות אחסון קבצים. אך כמפתח שהתנסה בשימוש ב-e2b לעטיפת claude code, אינטגרציה של כל אלו יחד עדיין קשה מאוד. לדוגמה, כאשר claude code ב-E2B מופרע באופן בלתי צפוי בגלל OOM, קשה למהנדסים לנטר זאת, וקשה עוד יותר לקבל את הסצנה והלוגים באותו רגע.
אני מקווה שמפתחים אחרי 2026 לא יצטרכו לעבור תהליך כה כואב, בדיוק כפי שרוב המהנדסים ב-2026 כבר לא צריכים להשתמש ב-ssh כדי לאתחל מכונות פיזיות ידנית.
זהו החלום של VM0. אני מקווה שיום אחד אוכל להפעיל סוכן קוד דרך API נוח, כמו:
cosnt agent = vm0.run({
framework: 'claude-code',
prompt: 'buy me a coffee'
})





