ఒక డెవలపర్ మూడు పొరల కోడ్-బేస్ మ్యాప్ను (three-layer code-base map) విడుదల చేశారు, ఇది AI కోడింగ్ ఏజెంట్లు వివిధ సెషన్ల మధ్య కూడా కోడ్ యొక్క సందర్భాన్ని (sense of place) గుర్తుంచుకోవడానికి సహాయపడుతుంది.
AI ఏజెంట్లకు మ్యాప్ ఎందుకు అవసరం
చాట్ ఆధారిత కోడింగ్ అసిస్టెంట్లు ప్రాంప్ట్ విండో తెరిచి ఉన్నంత సేపు మాత్రమే రిపోజిటరీ యొక్క మెంటల్ మోడల్ను నిర్మించుకోగలవు. కాంటెక్స్ట్ విండో మూసివేసినప్పుడు, ఆ మోడల్ మాయమవుతుంది, దీనివల్ల ఏజెంట్ మళ్ళీ మొదటి నుండి సింబల్స్ (symbols), ఇంపోర్ట్స్ (imports) మరియు ఫైల్ సంబంధాలను వెతకాల్సి వస్తుంది. ఈ పదేపదే చేసే ప్రక్రియ కంప్యూట్ సైకిల్స్ను వృథా చేస్తుంది మరియు డెవలపర్ ఫైళ్ల మధ్య మారుతున్నప్పుడు లేదా విరామం తర్వాత ప్రాజెక్ట్కు తిరిగి వచ్చినప్పుడు ఏజెంట్ తక్కువగా సహాయపడేలా చేస్తుంది.
మ్యాప్ను రూపొందించే మూడు పొరలు
- Structural layer – సింబల్స్, ఫంక్షన్ కాల్స్ మరియు ఇంపోర్ట్ స్టేట్మెంట్ల జాబితా. ఇది "ఏది దేనిని పిలుస్తుంది" అనే స్టాటిక్ ప్రశ్నకు సమాధానం ఇస్తుంది.
- Temporal layer – ఫైల్ చర్న్ రేట్లు (file churn rates) మరియు ఓనర్షిప్ హిస్టరీల వంటి git నుండి పొందిన సంకేతాలు. కోడ్లోని ఏ భాగాలు తరచుగా మారుతుంటాయి మరియు వాటిని ఎవరు మారుస్తుంటారు అనేది ఇది చూపుతుంది.
- Behavioral layer – ఏజెంట్ యొక్క ఎడిట్ మరియు నావిగేషన్ హిస్టరీ నుండి సేకరించిన వాస్తవ వినియోగ విధానం (usage pattern). కోడింగ్ సెషన్ సమయంలో ఏ ఫైళ్లు కలిసి తెరుచుకుంటాయో ఇది తెలియజేస్తుంది, తద్వారా స్టాటిక్ అనాలిసిస్ గుర్తించలేని "నిజమైన పొరుగు ఫైళ్లను" (true neighbors) ఇది బయటపెడుతుంది.
బిహేవియరల్ లేయర్ (behavioral layer) అత్యంత ప్రాముఖ్యత కలిగినది, ఎందుకంటే ఇది కోడ్ ఎలా నిర్మించబడింది అనే దానికంటే, డెవలపర్లు (మరియు ఏజెంట్లు) నిజంగా ఎలా పనిచేస్తారో ప్రతిబింబిస్తుంది.
ఏజెంట్కు మ్యాప్ను అందించే రెండు మార్గాలు
- Ambient Path – ప్రతి ఇంటరాక్షన్లో అందించబడే సంక్షిప్త సారాంశం. ఇది ఏ అదనపు కాల్స్ లేకుండానే, ఏజెంట్కు "మీరు X మాడ్యూల్లో ఉన్నారు, ఈ సింబల్స్ మీకు దగ్గరగా ఉన్నాయి" అనే తక్షణ సమాచారాన్ని అందిస్తుంది.
- Deep Path – ఏజెంట్కు మరింత వివరణాత్మక సమాచారం అవసరమైనప్పుడు ఉపయోగించుకోగలిగే ఆన్-డిమాండ్ క్వెరీ టూల్స్. ఉదాహరణకు, తరచుగా కలిసి మారే ఫైళ్ల జాబితా లేదా ఇటీవలి ఓనర్షిప్ టైమ్లైన్ వంటివి.
అంబియంట్ (ambient) మరియు డీప్ (deep) సమాచారాన్ని వేరు చేయడం వల్ల సాధారణ ప్రాంప్ట్ తేలికగా ఉంటుంది, అదే సమయంలో అవసరమైనప్పుడు లోతైన సమాచారాన్ని కూడా అందించవచ్చు.
సిస్టమ్ను తేలికగా ఉంచే డిజైన్ నియమాలు
- హెవీవెయిట్ లాంగ్వేజ్ సర్వర్లను వదిలేయండి. ఈ మ్యాప్ పూర్తి టైప్ ఇన్ఫరెన్స్ (type inference) కంటే షాలో పార్సింగ్ (shallow parsing) పై ఆధారపడుతుంది. దీని లక్ష్యం పరిణతి చెందిన స్టాటిక్ అనలైజర్ల కంటే మెరుగ్గా పనిచేయడం కాదు, వాటికి బిహేవియరల్ ఇన్సైట్తో (behavioral insight) తోడ్పడటం.
- గ్రాఫ్ను ప్రాజెక్ట్ వారీగా పరిమితం చేయండి. ఈ సిస్టమ్ అన్ని రిపోజిటరీల మధ్య గ్లోబల్ డిపెండెన్సీ గ్రాఫ్ను నిర్మించదు. ఈ పరిమితి మెమరీ వినియోగాన్ని తగ్గిస్తుంది మరియు అప్డేట్లను వేగవంతం చేస్తుంది.
- ఉన్న మెమరీ స్టోర్ను తిరిగి ఉపయోగించండి. ఫైల్-ఛేంజ్ లాగ్లు ఏజెంట్ యొక్క సొంత టూల్ కాల్స్ మెమరీ నుండి వస్తాయి, దీనివల్ల డూప్లికేట్ స్టోరేజ్ నివారించబడుతుంది మరియు డేటా మూలం స్థిరంగా ఉంటుంది.
ప్రాక్టికల్గా మ్యాప్ను నిర్మించడం
- Structural dataను సేకరించండి: సోర్స్ ఫైల్లను త్వరగా పరిశీలించి, సింబల్స్ మరియు ఇంపోర్ట్ లైన్లను సేకరించండి.
- Temporal metricsను పొందండి: రిపోజిటరీ యొక్క git హిస్టరీ నుండి ఏ ఫైళ్లలో ఎక్కువ కమిట్లు (commits) జరుగుతున్నాయి మరియు వాటిని ఎవరు రాశారు అనే వివరాలను సేకరించండి.
- Behavioral signalsను సేకరించండి: నిజమైన కోడింగ్ సెషన్ల సమయంలో ఏజెంట్ చేసే ఫైల్-ఓపెన్, ఎడిట్ మరియు నావిగేషన్ చర్యలను లాగ్ చేయడం ద్వారా వీటిని పొందండి. ఈ లాగ్లు బిహేవియరల్ నెయిబర్స్ (behavioral neighbors) ను నిర్వచించే "కో-అకరెన్స్" (co-occurrence) మ్యాట్రిక్స్కు పునాదిగా మారుతాయి.
- Ambient Pathను నింపండి: ప్రస్తుత టాస్క్కు అత్యంత సంబంధితమైన సింబల్స్ మరియు ఫైళ్ల యొక్క చిన్న, క్రమబద్ధమైన జాబితాతో దీనిని సిద్ధం చేయండి.
- Deep Pathను అందుబాటులోకి తెండి: తేలికపాటి క్వెరీ ఫంక్షన్ల రూపంలో దీనిని అందించండి (ఉదాహరణకు, "ఇటీవలి సెషన్లలో కలిసి ఎడిట్ చేసిన ఫైళ్లను జాబితా చేయండి").
ఫాస్ట్ హుక్స్ (Fast hooks) ప్రతి ఎడిట్ను అది జరిగిన వెంటనే క్యాప్చర్ చేస్తాయి; నెమ్మదిగా జరిగే బ్యాక్గ్రౌండ్ స్వీప్స్ (background sweeps) చర్న్ గణాంకాలను (churn stats) తిరిగి లెక్కిస్తాయి. ఇవి కలిసి డెవలపర్ వర్క్ఫ్లోను నెమ్మదింపజేయకుండా మ్యాప్ను తాజాగా ఉంచుతాయి.
ఈ ప్రయాణంలో నేర్చుకున్న పాఠాలు
- అంబియంట్ మరియు ఆన్-డిమాండ్ సమాచారాన్ని వేరు చేయండి. ఎల్లప్పుడూ అందుబాటులో ఉండే సారాంశాన్ని చిన్నదిగా ఉంచడం వల్ల టోకెన్ బ్లోట్ (token bloat) నివారించబడుతుంది, అదే సమయంలో లోతైన క్వెరీలను ఐచ్ఛికంగా (optional) ఉంచవచ్చు.
- టాస్క్ ఆధారంగా కాంటెక్స్ట్కు ప్రాధాన్యత ఇవ్వండి. ప్రస్తుత ఎడిట్ ఫోకస్ ఆధారంగా అంబియంట్ సింబల్స్ను క్రమబద్ధీకరించడం వల్ల మరింత ఉపయోగకరమైన సూచనలు లభిస్తాయి.
- వేగంగా కానీ తెలివిగా రిఫ్రెష్ చేయండి. ఫాస్ట్ హుక్స్ తరచుగా జరిగే మార్పులను క్యాప్చర్ చేస్తాయి; పీరియాడిక్ స్కాన్లు తక్కువ ఫ్రీక్వెన్సీ కలిగిన మార్పులను మరియు ఓనర్షిప్ మార్పులను నిర్వహిస్తాయి.
- వేగం కోసం షాలో పార్సింగ్ ఉత్తమం. డీప్ టైప్ అనాలిసిస్ వల్ల మ్యాప్ యొక్క ప్రధాన ప్రయోజనమైన బిహేవియరల్ ఇన్సైట్ను అందించకుండానే లేటెన్సీ (latency) పెరుగుతుంది.
ముఖ్య అంశం (Takeaway): స్టాటిక్ స్ట్రక్చర్, git నుండి పొందిన హిస్టరీ మరియు వాస్తవ వినియోగాన్ని ఒక కాంపాక్ట్, టూ-టైర్ యాక్సెస్ మోడల్గా పొరలుగా అమర్చడం ద్వారా, డెవలపర్లు AI కోడింగ్ ఏజెంట్లకు కోడ్-బేస్కు సంబంధించిన స్థిరమైన మ్యాప్ను అందించగలరు. ఎల్లప్పుడూ అందుబాటులో ఉండే సారాంశాన్ని చిన్నదిగా ఉంచడం వల్ల టోకెన్ బ్లోట్ నివారించబడుతుంది.
