Sverklo, שרת חיפוש קוד המאוחסן מקומית, מאפשר כעת למפתחים לבחון כל שלב בשאילתה – מגילוי קבצים ועד להסקה מגרף סמלים (symbol-graph reasoning) – לפני שסוכן AI פועל על התוצאה.

מדוע סוכני קוד קיימים נתקלים בקשיים

רוב כלי יצירת הקוד מתייחסים למאגר (repository) כאל תצוגת טקסט ענקית. הם מבצעים embeddings לקטעים, מריצים חיפוש דמיון, ומחזירים את הקטע בעל הציון הגבוה ביותר. כאשר הקטע מיושן, מחוץ לטווח (out of scope), או פשוט שם קובץ, הסוכן אינו יכול להצביע על המקור שלו. מצב הכישלון אינו מילה חסרה; אלא שכבת הקשר (context layer) חסרה שאומרת לאדם מאיפה הגיעה העובדה והאם היא עדיין רלוונטית.

מודל האימות ארבע-שכבתי של Sverklo

Sverklo ממצב את עצמו כשרת "היפותזה הנדסית" המשלב חיפוש מסורתי עם ניתוח מבני:

  • File Discovery – האינדקס קורא את .gitignore וקבצי ignore אחרים. לפני שסומכים על תוצאה, ניתן לשאול את האינדקס כדי לראות אילו נתיבים נסרקו בפועל.
  • Code Structure – סמלים (symbols) חיים בתוך גרף המתעד הגדרות, ייבואים (imports) וקשרי קריאה (call relationships). חיפוש מחזיר את אובייקט הסמל, לא רק נתיב קובץ, כך שניתן לוודא שמתייחסים לממשק ה-API הנכון.
  • Context Delivery – כאשר מגדירים תקציב טוקנים (token budget), Sverklo מחזיר מפה של הקטעים (snippets) שתרמו לתשובה. המפה כוללת שדה found_by שאומר לכם האם ההתאמה הגיעה מ-BM25 keyword matching, מ-embeddings שנוצרו ב-ONNX, או מגרף הסמלים המדורג לפי PageRank.
  • Memory Ledger – השרת מתעד כל החלטה. אם קובץ משתנה, ה-ledger מסמן את רשומת הזיכרון המתאימה כמיושנת (stale), ומראה האם התשובה המטמנת (cached) עדיין תקפה.

כיצד עובדת מחסנית השליפה (retrieval stack)

Sverklo אינו מסתמך על embeddings בלבד. הוא מריץ מנוע מילות מפתח BM25 קלאסי להתאמות מונחים מדויקות, מעשיר את ההתאמות הללו ב-vector embeddings מבוססי ONNX לצורך דמיון סמנטי, ולאחר מכן מפעיל אלגוריתם PageRank על גרף הסמלים כדי להציף הגדרות בעלות השפעה גבוהה. על ידי חשיפת השיטה שהפיקה כל התאמה, מפתחים יכולים לזהות חוסר עקביות – למשל, התאמת BM25 שמודל ה-embedding מחשיב כלא רלוונטית – ולבחור באיזה אות (signal) לסמוך.

שימושים מעשיים

  • חקירת מאגרי קוד לא מוכרים – קפיצה משם פונקציה לכל הקוראים (callers) שלה ללא צורך ב-grepping ידני.
  • מיפוי גרפי תלות – ויזואליזציה של שרשראות ייבוא (import chains) המשתרעות על פני מספר חבילות (packages).
  • הערכת השפעת רפקטורינג – צפייה באילו סמלים יישברו אם קובץ מסוים ישתנה.
  • מענה על שאלות סמנטיות – שאילת "מה עושה ה-helper הזה?" וקבלת קטע קוד תמציתי ומבוסס מקור.

מלכודות שיש לשים לב אליהן

  • רעננות (Freshness) – אינדוקס מחדש (reindex) עשוי להסתיים בזמן שחותמת הזמן של האינדקס נשארת ישנה. תמיד שאלו את ה-endpoint של index-status במקום להניח שההרצה האחרונה היא העדכנית ביותר.
  • רישום פרויקט – בעת ביטול רישום של פרויקט (unregistering), השתמשו בשם הפרויקט הפנימי שסופק על ידי Sverklo, ולא בנתיב המוחלט של מערכת הקבצים, אחרת הפעולה תיכשל בשקט.
  • מוזרויות בשמות הכלים – מארחי MCP לפעמים מוסיפים את שם הפרויקט פעמיים בהתחלה, מה שמניב מזהים כמו sverklo_sverklo_impact. בדקו שוב את השם לפני הפעלת כלי (tool).

מה כדאי לנסות הלאה

  1. שכפלו (Clone) מאגר זמני והריצו את Sverklo באופן מקומי.
  2. הריצו חיפוש סמל (symbol lookup) פשוט ובחנו את השדה found_by.
  3. שנו קובץ מקור והריצו שוב את החיפוש; שימו לב כיצד ה-memory ledger מסמן את הרשומה המיושנת.
  4. שלבו את בדיקת ה-index-status בסקריפט הבנייה (build script) שלכם כדי לתפוס אינדקסים מיושנים באופן אוטומטי.

שורה תחתונה

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