מה חסר
נמדד על הקוד של היום: ב-mcp_server/ אין שום מידלוור שמגביל גודל גוף בקשה ואין שום הגבלת קצב. המידלוור היחיד שרשום הוא PATAuthMiddleware (mcp_server/server.py), שמאמת טוקן ותו לא. כלומר כל משתמש מאומת יכול לשלוח בקשות בכל גודל ובכל תדירות.
grep "add_middleware|Middleware(" mcp_server/ -> רק PATAuthMiddleware
grep "rate.limit|RateLimit|slowapi|limiter" -> אפס תוצאות
למה זה עולה עכשיו
PR #3428 הוסיף תקרת אורך ל-path בכלי codekeeper_docs_get_section, אחרי שנמדד שנתיב של 400KB עלה 608ms של מעבד — הגברה של פי 246 לעומת המצב לפני שסינון הסודות התחיל לסרוק כל רכיב בנתיב.
התקרה ההיא היא הקטנת משטח ולא תחליף להגבלת קצב. היא חוסמת את ההגברה בכל בקשה בודדת, ואינה נוגעת במספר הבקשות. היא גם מקומית לכלי אחד: כל שאר הכלים ממשיכים לקבל ארגומנטים בכל גודל.
מה כדאי שיהיה
- תקרת גודל לגוף בקשה ברמת האפליקציה, כך שאף כלי לא יקבל ארגומנט שגדול מסדר גודל סביר.
- הגבלת קצב לפי זהות — הטוקן כבר מזוהה במידלוור הקיים, כלומר המפתח לספירה קיים.
מה לשים לב אליו במימוש
blanket-policy-silent-block §7 מתאר את המלכודת הקלאסית: מגבלת קצב גורפת שחלה גם על נתיבי בדיקת דופק. / ו-/health נדגמים על ידי מוניטור חיצוני בתדירות קבועה, ובלי פטור מפורש הם יקבלו 429 — והמוניטור יכריז על שירות בריא כמנותק. אותו היגיון חל על כל תעבורה לגיטימית בתדירות גבוהה.
ובאותה רוח, ומאותה סיבה שבגללה path_too_long קיבל קוד משלו ב-PR #3428: הסירוב צריך לנקוב בסיבתו. בקשה שנחסמה בגלל גודל או בגלל קצב צריכה לומר את זה, ולא להיראות מבחוץ כמו תקלה.
הקשר
התגלה בסקירת הקוד על PR #3428. הדוח המלא: code-review-3428-docs-path-policy.md ב-CodeKeeper.
מה חסר
נמדד על הקוד של היום: ב-
mcp_server/אין שום מידלוור שמגביל גודל גוף בקשה ואין שום הגבלת קצב. המידלוור היחיד שרשום הואPATAuthMiddleware(mcp_server/server.py), שמאמת טוקן ותו לא. כלומר כל משתמש מאומת יכול לשלוח בקשות בכל גודל ובכל תדירות.למה זה עולה עכשיו
PR #3428 הוסיף תקרת אורך ל-
pathבכליcodekeeper_docs_get_section, אחרי שנמדד שנתיב של 400KB עלה 608ms של מעבד — הגברה של פי 246 לעומת המצב לפני שסינון הסודות התחיל לסרוק כל רכיב בנתיב.התקרה ההיא היא הקטנת משטח ולא תחליף להגבלת קצב. היא חוסמת את ההגברה בכל בקשה בודדת, ואינה נוגעת במספר הבקשות. היא גם מקומית לכלי אחד: כל שאר הכלים ממשיכים לקבל ארגומנטים בכל גודל.
מה כדאי שיהיה
מה לשים לב אליו במימוש
blanket-policy-silent-block§7 מתאר את המלכודת הקלאסית: מגבלת קצב גורפת שחלה גם על נתיבי בדיקת דופק./ו-/healthנדגמים על ידי מוניטור חיצוני בתדירות קבועה, ובלי פטור מפורש הם יקבלו429— והמוניטור יכריז על שירות בריא כמנותק. אותו היגיון חל על כל תעבורה לגיטימית בתדירות גבוהה.ובאותה רוח, ומאותה סיבה שבגללה
path_too_longקיבל קוד משלו ב-PR #3428: הסירוב צריך לנקוב בסיבתו. בקשה שנחסמה בגלל גודל או בגלל קצב צריכה לומר את זה, ולא להיראות מבחוץ כמו תקלה.הקשר
התגלה בסקירת הקוד על PR #3428. הדוח המלא:
code-review-3428-docs-path-policy.mdב-CodeKeeper.