ટર્મિનલ AI માટે સ્વ-અપડેટ થતી નોલેજ બેઝ

હું મારો મોટાભાગનો દિવસ AI કોડિંગ આસિસ્ટન્ટ સાથે ટર્મિનલમાં વિતાવું છું.

હું ઘણીવાર સત્ર (session) દરમિયાન મુશ્કેલ સમસ્યાઓ ઉકેલું છું. મને કોઈ અઘરો ઉકેલ અથવા ચોક્કસ કોન્ફિગ સેટિંગ મળી જાય છે. પછી હું ટેબ બંધ કરી દઉં છું અને તે જ્ઞાન અદૃશ્ય થઈ જાય છે. એક મહિના પછી, હું ફરીથી એ જ સમસ્યા ઉકેલું છું.

મેં Claude Code hooks નો ઉપયોગ કરીને મારા આસિસ્ટન્ટને તેના પોતાના નોટ્સ જાળવી રાખવા માટે એક સિસ્ટમ બનાવી છે.

આ સિસ્ટમ ત્રણ ભાગોનો ઉપયોગ કરે છે:

  • સંદર્ભ (context) પૂરો પાડવા માટે દરેક પ્રોમ્પ્ટ પર એક નાની Markdown નોલેજ બેઝ સર્ચ કરો.
  • જ્યારે સત્ર સમાપ્ત થાય ત્યારે ઉપયોગી નોટ્સ કેપ્ચર કરો.
  • જ્યારે સત્ર શરૂ થાય ત્યારે ઇન્ડેક્સ લોડ કરો.

તમારા વર્કફ્લોને ધીમો પાડ્યા વિના તેને કેવી રીતે બનાવવું તે અહીં છે.

1. રિટ્રીવલ (retrieval) માટે UserPromptSubmit નો ઉપયોગ કરો

આ હૂક (hook) તમે જ્યારે પણ પ્રોમ્પ્ટ મોકલો છો ત્યારે ચાલે છે. તે તમારું ટેક્સ્ટ મેળવે છે અને મોડેલ જવાબ આપે તે પહેલાં સંદર્ભ ઇન્જેક્ટ કરી શકે છે.

મોડેલને નક્કી કરવા ન દો કે તેણે તમારી નોટ્સ ક્યારે જોવી જોઈએ. સંબંધિત ફાઇલો શોધવા માટે grep જેવી ઝડપી સર્ચનો ઉપયોગ કરો. ફક્ત ટોચના પાંચ મેચ જ ઇન્જેક્ટ કરો. આ પ્રક્રિયાને 100ms થી ઓછી રાખશે.

સર્ચ હૂક્સ માટે બે નિયમો:

  • તેને સસ્તું રાખો. પ્રારંભિક સર્ચ માટે LLM ને બદલે grep નો ઉપયોગ કરો.
  • તેને લિન (lean) રાખો. ફક્ત શીર્ષકો અને ફાઇલ પાથ જ ઇન્જેક્ટ કરો. જો મોડેલને વધુ વિગતોની જરૂર હોય તો તે ફાઇલ ખોલી શકે છે.

2. ભારે કાર્યો માટે Stop hook ટાળો

જ્યારે આસિસ્ટન્ટ જવાબ પૂરો કરે છે ત્યારે Stop hook ચાલે છે. જો તમે અહીં લાંબું કાર્ય ચલાવો છો, તો તમારો આસિસ્ટન્ટ ધીમો પડી જશે. 30-ટર્ન સત્ર 30 ભારે કાર્યોને ટ્રિગર કરશે.

તેના બદલે, આખા સત્રને એક જ વાર કેપ્ચર કરવા માટે SessionEnd નો ઉપયોગ કરો.

3. SessionEnd ની મર્યાદા ઉકેલો

SessionEnd નોન-બ્લોકિંગ (non-blocking) છે. જો તમે અહીં લાંબું બેકગ્રાઉન્ડ કાર્ય શરૂ કરો છો, તો સત્ર બંધ થતી વખતે સિસ્ટમ તેને બંધ કરી શકે છે.

તેનો ઉકેલ બે હૂક્સનો ઉપયોગ કરવાનો છે:

  • SessionEnd: ટ્રાન્સક્રિપ્ટ પાથને ઝડપથી ક્યુ (queue) ફાઇલમાં ઉમેરો.
  • SessionStart: તે ક્યુને ખાલી કરો અને ભારે કેપ્ચર કાર્ય બેકગ્રાઉન્ડમાં ચલાવો.

કારણ કે પછીનું સત્ર સક્રિય હોય છે, તેથી બેકગ્રાઉન્ડ પ્રક્રિયા ચાલુ રહેશે.

4. અનંત લૂપ્સ (infinite loops) અટકાવો

જ્યારે તમે નોટ્સ લખવા માટે હેડલેસ (headless) AI શરૂ કરો છો, ત્યારે તે તમારા એન્વાયરમેન્ટને વારસામાં મેળવે છે. આનો અર્થ એ છે કે નવું AI તેના પોતાના હૂક્સને ટ્રિગર કરશે. આનાથી અનંત AI કોલ્સનું લૂપ સર્જાય છે.

હંમેશા તમારા સ્ક્રિપ્ટ્સના ટોચ પર રિકર્ઝન ગાર્ડ (recursion guard) ઉમેરો:

[ -n "$KB_CAPTURE" ] && exit 0

જ્યારે તમે તમારું બેકગ્રાઉન્ડ કેપ્ચર કાર્ય લોન્ચ કરો ત્યારે KB_CAPTURE=1 સેટ કરો.

સેટઅપનો સારાંશ:

  • ઇન્સ્ટન્ટ કોન્ટેક્સ્ટ ઇન્જેક્શન માટે UserPromptSubmit નો ઉપયોગ કરો.
  • કાર્યોને ક્યુ (enqueue) કરવા માટે SessionEnd નો ઉપયોગ કરો.
  • વાસ્તવિક કાર્ય ચલાવવા માટે SessionStart નો ઉપયોગ કરો.
  • પૈસા બચાવવા માટે નોટ્સના સારાંશ માટે સસ્તા મોડેલનો ઉપયોગ કરો.

એક વાર ફરીથી ઉકેલવાનું ટાળવાથી ઘણા કેપ્ચર્સનો ખર્ચ નીકળી જાય છે.

Source: https://dev.to/just_an_electron/a-self-updating-knowledge-base-for-my-terminal-ai-assistant-claude-code-hooks-28jb

Optional learning community: https://t.me/GyaanSetuAi