המונח "סוכן AI" (AI agent) נעשה נפוץ, וכך גם הבלבול סביבו. הרבה כלים מכנים את עצמם "סוכנים" כשהם למעשה רק משלימי קוד עם ממשק צ'אט. זה יותר מסתם מונח שיווקי — ההבחנה בין משלים לסוכן היא מה שמכריע האם הכלי יכול לבנות אפליקציה, או רק לעזור לך לכתוב שורה.

השלמת AI לעומת סוכן AI

השלמת AI (completer) מציעה את השורה או הבלוק הבא כשאתה כותב. היא רואה את מה שכתבת, ומנחשת מה מגיע אחרי. היא פסיבית: אתה כותב, היא מציעה. היא לא יודעת מה האפליקציה צריכה לעשות מעבר לקובץ הנוכחי.

סוכן AI (agent) פעיל. הוא מתכנן: מתוך תיאור הדרישה, הוא מחליט אילו קבצים לגעת בהם, באיזה סדר. הוא מייצר: הוא כותב קוד שלם, לא רק משלים. הוא מריץ ומאמת: הוא מנסה את הקוד — מריץ בנייה, מריץ tests, בודק אם זה עובד. והוא חוזר: אם זה לא עובד, הוא קורא את השגיאה ומתקן. הוא עושה את העבודה, לא רק מציע טקסט.

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

איך סוכן בונה אפליקציה

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

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

הצוק הקשר

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

התסמינים מוכרים: הסוכן כותב מחדש קוד שכבר עבד, כי הוא לא ידע שהוא קיים. הוא מייצר endpoints שמתנגשים עם קודמים, כי לא ראה אותם. הוא שואל אותך שאלות שכבר ענית עליהן בסשן קודם, כי ההקשר אבד. זה "בעיית v10" — הכלי נהדר לגרסה 1, ומתפרק כשהפרויקט מגיע לגרסה 10. <a href='blog-context-loss.html'>כתבנו על זה בנפרד בפוסט על אובדן הקשר</a>.

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

למה הקשר מתמשך הוא הפתרון

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

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

מה זה אומר בפועל

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

זו הסיבה ש-Vibe Coder בנוי סביב הקשר מתמשך. לא כפיצ'ר נחמד, אלא כעיקרון ארכיטקטוני: ההבנה של הפרויקט היא נכס שנשמר, לא משהו שנבנה מחדש בכל פעם. <a href='ai-coding-agent.html'>פירוט נוסף על המודל המושגי שלנו של סוכן קידוד AI נמצא בעמוד המושגי</a>.

קריאה נוספת