- "AI कोड विश्लेषण के बारे में सोचने का तरीका बदल देने वाला एक उलझन भरा प्रयोग"
- देखा गया कि मौजूदा AI अक्सर React codebase का विश्लेषण करते समय विफल हो जाता था
- यह समझ में आया कि कारण यह था कि वह कोड को वैसे ही सिर्फ line-by-line analyze कर रहा था जैसे कोई जूनियर डेवलपर पहली बार कोड पढ़ते समय करता है
बूटकैंप के दिनों और सीनियर mindset के बीच अंतर
- जूनियर दौर में अक्सर फाइलों को क्रम से, line-by-line पढ़ते हुए जल्दी ही रास्ता भटक जाते हैं
- सीनियर डेवलपर बड़े PR देखते समय आमतौर पर यह तरीका अपनाते हैं
- पहले core files देखते हैं
- बदलावों को फीचर के हिसाब से समूहित करके समझते हैं
- पहले पूरी architecture को समझते हैं, फिर implementation details देखते हैं
- यही approach AI पर लागू करने का फैसला किया गया
प्रयोग
- फाइलों को फीचर के आधार पर group करके, उस group का context पहले AI को देने की कोशिश की गई
- उदाहरण कोड में
FileGroup interface परिभाषित किया गया, और फाइलों को संबंधित फीचर और file size के आधार पर बांधकर प्रोसेस किया गया
- group-स्तर पर AI के लिए ऐसे prompts बनाए गए जो बताते हैं कि "यह किस feature area से जुड़ा है और किन बातों पर विशेष ध्यान देना चाहिए"
चौंकाने वाले बदलाव का क्षण
- पहले जहाँ AI सिर्फ इतना जवाब देता था कि "इसमें JWT token authentication logic शामिल है"
- वहीं अब उसने "websocket connections पर प्रभाव, हाल ही में merge हुए PR से race condition की संभावना" जैसी सीनियर डेवलपर-स्तर की अंतर्दृष्टि देनी शुरू कर दी
- AI ने पूरे system context को ध्यान में रखकर संकेत देना शुरू किया
वास्तव में क्या बदला
- कोई अधिक जटिल machine learning model इस्तेमाल नहीं किया गया; असली बात यह थी कि AI को सीनियर डेवलपर की तरह सोचने का क्रम दिया गया
- Context first: शुरुआत पूरे system को समझने से की गई
- Pattern matching: मिलती-जुलती फाइलों को group करके दोहराए जाने वाले logic को खोजा गया
- Impact analysis: बदलावों का पूरे system पर क्या असर होगा, इसे पहचाना गया
- History understanding: पुराने code changes के कारण और context तक को trace किया गया
अप्रत्याशित side effects
- AI ने सिर्फ इच्छित हिस्सों को ठीक करने तक खुद को सीमित नहीं रखा, बल्कि उसने ऐसे insights भी पकड़े
- copy-paste से बने duplicate code blocks की पहचान
- असंगत error handling patterns पर चेतावनी
- संभावित performance bottlenecks का पता
- usage patterns के आधार पर architecture improvements के सुझाव
यह क्यों महत्वपूर्ण है
- हाल के AI-आधारित IDEs मुख्यतः अपने-आप कोड generate करने पर केंद्रित हैं
- लेकिन पूरे system context के बिना सिर्फ साधारण suggestions देना "अभी-अभी टीम में शामिल हुए जूनियर डेवलपर" जितना जोखिमभरा हो सकता है
- वास्तव में महत्वपूर्ण चीज़ है "गहरी code understanding"
बचे हुए सवाल
- यह तय करना कि context (historical information) को कब refresh किया जाए और कब बनाए रखा जाए
- जब एक-दूसरे से टकराने वाले patterns मिलें तो उनसे कैसे निपटा जाए
- जिन analysis results में uncertainty अधिक हो, उन्हें उपयोगकर्ता को कैसे दिखाया जाए
आगे की दिशा
- इस पर विचार किया जा रहा है कि क्या AI को सीनियर डेवलपर जैसी ये संवेदनाएँ भी सिखाई जा सकती हैं
- technical debt को पहले से पहचानने की क्षमता
- architecture improvements को सक्रिय रूप से सुझाने की योग्यता
- usage patterns से security issues पहचानने की क्षमता
- टीम के भीतर के अनौपचारिक नियमों को समझने की समझ
- अंतिम लक्ष्य सिर्फ "और अधिक कोड" generate करना नहीं, बल्कि "सीनियर डेवलपर की तरह पूरे कोडबेस को गहराई से समझना" सिखाना है
3 टिप्पणियां
क्या codebase विश्लेषण और सुधार के लिए पूछे जाने वाले सवाल पहले से तयशुदा नहीं हैं? लगता है लेखक काफ़ी ज़्यादा उत्साहित हैं।
यह कुछ-कुछ वैसा ही लगता है जैसे cursor में notepad के जरिए पूरे प्रोजेक्ट की व्याख्या करवाई जाती है।
Hacker News की राय
टिप्पणियों में लोग आलोचनात्मक हैं। यह लेख नए टूल की संभावनाओं पर एक छोटा और सकारात्मक परिणाम बताता है, और इसमें ईमानदार व तर्कसंगत विचार शामिल हैं
"Senior vs Junior Developer"नैरेटिव शायद कुछ बढ़ा-चढ़ाकर पेश किया गया हो, लेकिन लेख का मूल भाव शानदार हैयह LLM द्वारा चौंकाने वाले काम करने का एक और उदाहरण है। लेकिन ऐसा सिस्टम बनाना जो हर इनपुट पर लगातार और सटीक रूप से काम करे, बहुत कठिन है
कोड लिखने के लिए बेहतर agent system बनाने में इससे सीख मिल सकती है
लेख की पहली पंक्ति पढ़कर अजीब-सा, जैसे किसी alien की बात हो, महसूस हुआ। पूरा लेख पढ़ना पड़ेगा, लेकिन मौजूदा कोड को क्रम से पढ़ना कुछ अटपटा लगता है
"junior developer"को लेकर काफी गलत धारणाएँ हैंयह मानवीय तत्व के महत्व पर जोर देता है। codebase की contextual understanding के बिना AI warning का मतलब समझ में नहीं आता
"shared patterns"क्या हैं, और वे race condition क्यों पैदा करते हैं, यह समझना मुश्किल है"retry logic"PR के बीच संबंध साफ नहीं हैAI को ऐसी API गढ़ लेने से रोकना मुश्किल है जो अस्तित्व में ही नहीं हैं। जब यह अच्छा काम करता है तो बढ़िया लगता है, लेकिन ज़्यादातर समय ऐसा नहीं होता
code context और understanding, LLM-जनरेटेड कोड की गुणवत्ता बेहतर करने के लिए महत्वपूर्ण हैं
John McCarthy की शिकायत की तरह, यह कोई experiment या proof नहीं बल्कि एक कहानी है
नतीजे प्रभावशाली हैं। style और uniformity को लेकर आलोचना है, लेकिन परिणाम उपयोगी लगते हैं
लगता है कि इस तकनीक का एक महत्वपूर्ण हिस्सा लेख में छूट गया है।
getFileContext()औरshouldStartNewGroup()का implementation नहीं है