
האם מודלים חכמים יותר יפתרו הכל?
הנרטיב השולט סביב כלי קידוד AI הוא כזה: כשהמודל יהיה טוב מספיק, הוא יכתוב קוד, יכתוב טסטים ויעשה refactoring בעצמו. אם GPT-4 לא הצליח, GPT-5 יצליח. אם Claude לא מספיק, Claude גדול יותר יתמודד.
האם זה באמת נכון?
הטלתי על Claude Opus 4.7 refactoring של filefunc. הוא סיים תוך שעה ללא ביקורת אנושית. validate עבר, pytest עבר, כיסוי נשמר. על פניו, זה מתאים לנרטיב של “פשוט תשיג מודל טוב יותר”.
אבל מה אם נותנים לאותו מודל את אותו refactoring בלי חוקי filefunc? בלי validate? בלי משוב כיסוי? התוצאה שונה לחלוטין. הוא נופל ל-doom loop — תיקון באג אחד שובר מקום אחר, תיקון זה שובר עוד מקום.
אותו מודל. מה שהשתנה הוא הסביבה.
“סיימתי” — אינסטינקט הסיום המוקדם של הסוכן
ניסוי נוסף עם אותו מודל. שחררתי סוכן על פרויקט עם 527 פונקציות. “כתוב טסטים לכל פונקציה.” הסוכן סיים ודיווח: “בוצע.”
פונקציות שבאמת קיבלו טסטים: 40. 40 מתוך 527.
הסוכן לא שיקר. הוא עשה 40 והחליט “זה מספיק.” הנטייה ברירת המחדל של LLM היא סיום מוקדם אופטימי. כשהוא פוגש פונקציה קשה, הוא מדלג, עושה עוד כמה, ואז מסיק “השאר עוקבים אחרי אותו דפוס, אז זהו.”
לאחר כפיית לולאה עם כלי CLI:
סוכן אוטונומי: 40 / 527 (7.6%) — הסוכן מצהיר "סיימתי"
לולאת CLI: 527 / 527 (100%) — המכונה מצהירה "נותרו 487"
אותו מודל. אותו פרויקט. ההבדל הוא מי מחליט מתי “סיימנו”.
הסביבה יוצרת את המודל
שני הניסויים מצביעים על אותה מסקנה. Opus 4.7 לא סיים כי הוא חכם. הוא סיים כי משטח המפרט היה ניתן לבדיקה מכנית.
filefunc validate → האם מבנה הקוד עומד בחוקים?
pytest → האם ההתנהגות הקיימת נשמרה?
coverage → אילו ענפים חסרים?
שלושת אלה נתנו משוב מיידי בכל עריכה. המודל קיבל משוב, תיקן, קיבל משוב שוב, תיקן שוב. לולאת תיקון עצמי.
הנה התובנה המרכזית:
טופולוגיית המשוב קובעת תוצאות יותר מ-IQ של מודל.
LLM חזקים ביצירה אבל חלשים בהבטחת נכונות. Huang et al. (2024) הוכיחו ניסויית שכאשר LLM מנסים לתקן את ההסקה שלהם ללא משוב חיצוני (oracle feedback), הביצועים עלולים דווקא להידרדר. אולם כשקיים מאמת דטרמיניסטי, הביצועים מתייצבים באופן דרמטי. lint, typecheck, test, coverage — אלה הופכים לאות הגרדיאנט שמתקן את הפלט של המודל.
“זה ייפתר כשהמודלים יהיו חכמים מספיק” היא טענה שגויה. הניסוח המדויק הוא: “אם המשוב מהיר מספיק, המודלים הנוכחיים כבר יכולים לפתור את זה.”
broad exploration מול local correction
החוזק של LLM הוא לא broad exploration — אלא local correction.
“כתוב טסטים לפרויקט הזה” — זה broad exploration. ה-LLM מאבד כיוון.
“שורה 41 לא מכוסה” — זה local correction. ה-LLM כותב טסט שמכסה בדיוק את השורה הזו.
מספרים שאומתו בפרויקטים אמיתיים:
בלי משוב: נעצר ב-60–70% כיסוי
עם משוב: מגיע ל-100% (לפונקציות נגישות)
אותו מודל. השורה הבודדת “line 41 not covered” משמשת כאות גרדיאנט. המשוב הזה מכוון את התיקונים של ה-LLM בדיוק לכיוון הנכון.
Symbolic Feedback Loop
מבנה אחד חוצה את כל התצפיות האלה.
LLM יוצר → כלי דטרמיניסטי שופט → התוצאה חוזרת ל-LLM → חזרה
אני קורא לזה Symbolic Feedback Loop.
המיינסטרים של התעשייה היום הוא LLM Feedback Loop — AI מאמת AI. כמו שיכור ששואל חבר שיכור: “אני שיכור?” שניהם הסתברותיים, אז שגיאות מצטברות.
ה-Symbolic Feedback Loop שונה. Chen et al. (2023) הוכיחו שדיבוג איטרטיבי — החזרת הודעות שגיאה של קומפיילר וזמן ריצה למודל — משפר דרמטית את דיוק הקוד. pytest לא הוזה. go test לעולם לא שיכור. מדידת כיסוי לא משקרת. אימות מפרט לא סוטה.
מבנה זה עובד בתחומים שבהם ניתן לשפוט נכונות באופן מכני — קוד, טסטים, מפרטים, טיפוסים. האלגנטיות של עיצוב API או הטבעיות של UX עדיין לא ניתנות לשיפוט על ידי כלים סמליים. הרחבת הגבול הזה היא האתגר הבא. אני מאמין שקיים נתיב להביא אפילו שפה טבעית לתוך גבולות ניתנים לאימות.
מה ש-AlphaCode (Li et al., 2022) הדגים בתכנות תחרותי עוקב אחרי אותו עיקרון. לא יכולת הייצור של המודל כשלעצמה, אלא עיצוב הסביבה — ייצור מיליוני מועמדים ואז סינון דרך טסטים — הוא שקבע את הביצועים. במקום להפוך את המודל לחכם יותר, יעיל יותר להפוך את המשוב שמוחזר למודל למדויק יותר.
האצלת החלטות
ברור מאליו שאין להאציל החלטות ל-AI. אבל שבני אדם יבדקו ויחליטו הכל — זה מתיש. החלטות מסוימות חוזרות ומובנות יכולות להתבצע על ידי כלים סמליים בשם בני אדם.
“האם הטסטים האלה מכסים את כל הענפים?” — אף אדם לא צריך לקרוא. כלי כיסוי שופט. “האם הקוד הזה עומד בחוקי המבנה?” — אף אדם לא צריך לבדוק. validate שופט. “האם נותרו פונקציות שלא טופלו?” — אף אדם לא צריך לספור. CLI מצהיר.
החלטות שלא ניתן להאציל ל-AI ניתן להאציל לכלים סמליים — כי הם דטרמיניסטיים, לא הסתברותיים. זו סיבת הקיום של Symbolic Feedback Loop.
חשוב יותר להניח מסילות מאשר להפוך את הרכבת למהירה יותר.
אנשים רבים בונים רכבות. כמעט אף אחד לא מניח מסילות.
מקורות
- Jie Huang, Xinyun Chen, Swaroop Mishra, Huaixiu Steven Zheng, Adams Wei Yu, Xinying Song, Denny Zhou. “Large Language Models Cannot Self-Correct Reasoning Yet.” ICLR 2024.
- Xinyun Chen, Maxwell Lin, Nathanael Scharli, Denny Zhou. “Teaching Large Language Models to Self-Debug.” arXiv:2304.05128, 2023.
- Yujia Li, David Choi, Junyoung Chung, Nate Kushman, Julian Schrittwieser, Remi Leblond, Tom Eccles, et al. “Competition-Level Code Generation with AlphaCode.” Science 378(6624): 1092-1097, 2022.
- Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, Shunyu Yao. “Reflexion: Language Agents with Verbal Reinforcement Learning.” NeurIPS 2023.
- Aman Madaan, Niket Tandon, Prakhar Gupta, et al. “Self-Refine: Iterative Refinement with Self-Feedback.” NeurIPS 2023.
- Timo Schick, Jane Dwivedi-Yu, Roberto Dessi, et al. “Toolformer: Language Models Can Teach Themselves to Use Tools.” NeurIPS 2023.
- Mert Cemri, Melissa Z. Pan, Shuyi Yang, et al. “Why Do Multi-Agent LLM Systems Fail?” NeurIPS 2025 Datasets and Benchmarks Track.
- Carlos E. Jimenez, John Yang, Alexander Wettig, et al. “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?” ICLR 2024.
מאמר קשור: Ratchet Pattern — איך לגרום לסוכן לסיים את העבודה — המימוש המעשי של תיאוריה זו. דפוס שמכריח סוכנים להתכנס.
כלי קשור: tsma — דוגמה עובדת של Ratchet Pattern. 527 פונקציות, אפס TODO.
יומן שינויים
- 2026-05-14: מהדורה ראשונה