టెర్మినల్ AI కోసం స్వయంచాలక అప్‌డేట్ అయ్యే నాలెడ్జ్ బేస్

నేను నా రోజులో ఎక్కువ సమయాన్ని AI కోడింగ్ అసిస్టెంట్‌తో టెర్మినల్‌లో గడుపుతాను.

ఒక సెషన్‌లో నేను తరచుగా కష్టమైన సమస్యలను పరిష్కరిస్తుంటాను. ఏదైనా క్లిష్టమైన పరిష్కారాన్ని లేదా ఒక నిర్దిష్ట కాన్ఫిగరేషన్ సెట్టింగ్‌ను కనుగొంటాను. ఆ తర్వాత ట్యాబ్‌ను మూసివేస్తే, ఆ సమాచారం మాయమైపోతుంది. నెల తర్వాత, మళ్ళీ అదే సమస్యను పరిష్కరించాల్సి వస్తుంది.

Claude Code hooks ఉపయోగించి నా అసిస్టెంట్ తన స్వంత నోట్స్‌ను నిర్వహించుకునేలా ఒక వ్యవస్థను నేను రూపొందించాను.

ఈ వ్యవస్థ మూడు భాగాలను ఉపయోగిస్తుంది:

  • సందర్భాన్ని (context) అందించడానికి ప్రతి ప్రాంప్ట్‌పై ఒక చిన్న Markdown నాలెడ్జ్ బేస్‌ను వెతకడం.
  • సెషన్ ముగిసినప్పుడు ఉపయోగకరమైన నోట్స్‌ను సేవ్ చేయడం.
  • సెషన్ ప్రారంభమైనప్పుడు ఇండెక్స్‌ను లోడ్ చేయడం.

మీ వర్క్‌ఫ్లో నెమ్మదించకుండా దీనిని ఎలా నిర్మించాలో ఇక్కడ ఉంది.

1. రిట్రీవల్ (retrieval) కోసం UserPromptSubmit ఉపయోగించండి

మీరు ప్రాంప్ట్ పంపిన ప్రతిసారీ ఈ హుక్ రన్ అవుతుంది. ఇది మీ టెక్స్ట్‌ను స్వీకరించి, మోడల్ స్పందించే ముందు సందర్భాన్ని (context) జోడించగలదు.

మీ నోట్స్‌ను ఎప్పుడు చూడాలి అనేది మోడల్‌ని నిర్ణయించనివ్వకండి. సంబంధిత ఫైల్‌లను కనుగొనడానికి grep వంటి వేగవంతమైన సెర్చ్ పద్ధతిని ఉపయోగించండి. కేవలం టాప్ ఫైవ్ మ్యాచ్‌లను మాత్రమే జోడించండి. దీనివల్ల ప్రక్రియ 100ms లోపు పూర్తవుతుంది.

సెర్చ్ హుక్స్ కోసం రెండు నియమాలు:

  • తక్కువ ఖర్చుతో చేయండి. ప్రారంభ సెర్చ్ కోసం LLM కి బదులుగా grep ఉపయోగించండి.
  • క్లుప్తంగా ఉంచండి. కేవలం టైటిల్స్ మరియు ఫైల్ పాత్‌లను మాత్రమే జోడించండి. మోడల్‌కు మరిన్ని వివరాలు కావాలంటే అది ఫైల్‌ను స్వయంగా ఓపెన్ చేయగలదు.

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 గా సెట్ చేయండి.

సెటప్ సారాంశం:

  • తక్షణ సందర్భాన్ని (context) జోడించడానికి UserPromptSubmit ఉపయోగించండి.
  • టాస్క్‌లను క్యూలో ఉంచడానికి SessionEnd ఉపయోగించండి.
  • అసలు పనిని చేయడానికి SessionStart ఉపయోగించండి.
  • డబ్బు ఆదా చేయడానికి నోట్స్‌ను సారాంశం (summarizing) చేయడానికి తక్కువ ఖర్చుతో కూడిన మోడల్‌ను ఉపయోగించండి.

ఒకసారి సమస్యను మళ్ళీ పరిష్కరించకుండా ఉండటమే, అనేక క్యాప్చర్‌ల ఖర్చును భర్తీ చేస్తుంది.

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