בסיס ידע המתעדכן מעצמו עבור AI בטרמינל
אני מבלה את רוב היום שלי בטרמינל עם עוזר קוד מבוסס AI.
אני פותר לעיתים קרובות בעיות קשות במהלך סשן. אני מוצא תיקון מורכב או הגדרת קונפיגורציה ספציפית. ואז אני סוגר את הלשונית והידע נעלם. חודש לאחר מכן, אני פותר בדיוק את אותה הבעיה שוב.
בניתי מערכת שגורמת לעוזר שלי לנהל הערות משלו באמצעות Claude Code hooks.
המערכת מורכבת משלושה חלקים:
- חיפוש בבסיס ידע קטן בפורמט Markdown בכל פרומפט כדי לספק הקשר (context).
- לכידת הערות שימושיות בסיום סשן.
- טעינת האינדקס בתחילת סשן.
הנה איך לבנות זאת מבלי להאט את זרימת העבודה שלך.
1. השתמש ב-UserPromptSubmit לצורך שליפה (retrieval)
ה-hook הזה רץ בכל פעם שאתה שולח פרומפט. הוא מקבל את הטקסט שלך ויכול להזריק הקשר לפני שהמודל מגיב.
אל תיתן למודל להחליט מתי להסתכל על ההערות שלך. השתמש בחיפוש מהיר כמו grep כדי למצוא קבצים רלוונטיים. הזק (inject) רק את חמשת ההתאמות המובילות. זה שומר על התהליך מתחת ל-100ms.
שני כללים עבור search hooks:
- שמור על זה זול. השתמש ב-
grepבמקום ב-LLM עבור החיפוש הראשוני. - שמור על זה רזה. הזק רק כותרות ונתיבי קבצים. המודל יכול לפתוח את הקובץ אם הוא זקוק לפרטים נוספים.
2. הימנע משימוש ב-Stop hook למשימות כבדות
ה-Stop hook רץ בכל פעם שהעוזר מסיים תשובה. אם תריץ משימה ארוכה כאן, העוזר שלך יהפוך לאיטי. סשן של 30 תורות (turns) יפעיל 30 משימות כבדות.
במקום זאת, השתמש ב-SessionEnd כדי ללכוד את הסשן המלא פעם אחת.
3. פתרון המגבלה של SessionEnd
SessionEnd הוא non-blocking. אם תתחיל כאן משימת רקע ארוכה, המערכת עלולה להרוג אותה כשהסשן נסגר.
הפתרון הוא להשתמש בשני hooks:
- SessionEnd: הוסף במהירות את נתיב ה-transcript לקובץ תור (queue).
- SessionStart: רוקן את התור והרצ את משימת הלכידה הכבדה ברקע.
מכיוון שהסשן הבא פעיל, תהליך הרקע יישמר.
4. מניעת לולאות אינסופיות
כשאתה מפעיל AI ללא ממשק (headless) כדי לכתוב הערות, הוא יורש את הסביבה שלך. זה אומר שה-AI החדש יפעיל את ה-hooks שלו עצמו. זה יוצר לולאה של קריאות AI אינסופיות.
תמיד הוסף מנגנון הגנה מפני רקורסיה (recursion guard) בראש הסקריפטים שלך:
[ -n "$KB_CAPTURE" ] && exit 0
הגדר KB_CAPTURE=1 כאשר אתה מפעיל את משימת לכידת הרקע.
סיכום ההגדרה:
- השתמש ב-UserPromptSubmit להזרקת הקשר מיידית.
- השתמש ב-SessionEnd כדי להכניס משימות לתור.
- השתמש ב-SessionStart כדי להריץ את העבודה עצמה.
- השתמש במודל זול עבור סיכום הערות כדי לחסוך בכסף.
פתרון מחדש אחד שנחסך משלם על הרבה לכידות.
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi
