41 पॉइंट द्वारा GN⁺ 2025-01-06 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • "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 को सीनियर डेवलपर की तरह सोचने का क्रम दिया गया
    1. Context first: शुरुआत पूरे system को समझने से की गई
    2. Pattern matching: मिलती-जुलती फाइलों को group करके दोहराए जाने वाले logic को खोजा गया
    3. Impact analysis: बदलावों का पूरे system पर क्या असर होगा, इसे पहचाना गया
    4. 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 टिप्पणियां

 
savvykang 2025-01-06

क्या codebase विश्लेषण और सुधार के लिए पूछे जाने वाले सवाल पहले से तयशुदा नहीं हैं? लगता है लेखक काफ़ी ज़्यादा उत्साहित हैं।

 
yangeok 2025-01-06

यह कुछ-कुछ वैसा ही लगता है जैसे cursor में notepad के जरिए पूरे प्रोजेक्ट की व्याख्या करवाई जाती है।

 
GN⁺ 2025-01-06
Hacker News की राय
  • टिप्पणियों में लोग आलोचनात्मक हैं। यह लेख नए टूल की संभावनाओं पर एक छोटा और सकारात्मक परिणाम बताता है, और इसमें ईमानदार व तर्कसंगत विचार शामिल हैं

    • "Senior vs Junior Developer" नैरेटिव शायद कुछ बढ़ा-चढ़ाकर पेश किया गया हो, लेकिन लेख का मूल भाव शानदार है
    • सोचने वाली बात है कि क्या लोग खतरा महसूस करके नाराज़ हो रहे हैं
  • यह LLM द्वारा चौंकाने वाले काम करने का एक और उदाहरण है। लेकिन ऐसा सिस्टम बनाना जो हर इनपुट पर लगातार और सटीक रूप से काम करे, बहुत कठिन है

    • authentication system file analysis का एक उदाहरण है
    • यह hardcoded string अहम भूमिका निभाती है, लेकिन जब तक यह हर PR के लिए सही और लगातार जनरेट न हो, तब तक यह खास नहीं है
    • अलग-अलग codebase और वास्तविक PR के जरिए evaluation सेट करना चाहिए
  • कोड लिखने के लिए बेहतर agent system बनाने में इससे सीख मिल सकती है

    • Claude/chatGPT आदि को कोड जनरेट न करने के लिए कहा जाता है। पहले शुरुआती structure बनवाया जाता है, फिर कोड लिखवाया जाता है
  • लेख की पहली पंक्ति पढ़कर अजीब-सा, जैसे किसी alien की बात हो, महसूस हुआ। पूरा लेख पढ़ना पड़ेगा, लेकिन मौजूदा कोड को क्रम से पढ़ना कुछ अटपटा लगता है

    • "junior developer" को लेकर काफी गलत धारणाएँ हैं
  • यह मानवीय तत्व के महत्व पर जोर देता है। codebase की contextual understanding के बिना AI warning का मतलब समझ में नहीं आता

    • "shared patterns" क्या हैं, और वे race condition क्यों पैदा करते हैं, यह समझना मुश्किल है
    • authentication बदलाव और "retry logic" PR के बीच संबंध साफ नहीं है
  • AI को ऐसी API गढ़ लेने से रोकना मुश्किल है जो अस्तित्व में ही नहीं हैं। जब यह अच्छा काम करता है तो बढ़िया लगता है, लेकिन ज़्यादातर समय ऐसा नहीं होता

    • AI तब अच्छा काम करता है जब लोग वही कोड लिख रहे होते हैं जो बहुत से लोग पहले से लिख चुके हैं
  • code context और understanding, LLM-जनरेटेड कोड की गुणवत्ता बेहतर करने के लिए महत्वपूर्ण हैं

    • Bismuth प्रोडक्ट उपयोगकर्ता की रिक्वेस्ट के अनुसार प्रोजेक्ट को तार्किक हिस्सों में बाँटता है और symbol information खोजकर codebase को एक्सप्लोर करता है
    • प्रतिस्पर्धी प्रोडक्ट्स में से केवल कुछ ही इस स्तर की search capability देते हैं
  • John McCarthy की शिकायत की तरह, यह कोई experiment या proof नहीं बल्कि एक कहानी है

    • उम्मीद है कि कम्युनिटी आलोचनात्मक सोच और training का उपयोग करेगी
  • नतीजे प्रभावशाली हैं। style और uniformity को लेकर आलोचना है, लेकिन परिणाम उपयोगी लगते हैं

    • शीर्षक देखकर लगा था कि इसमें AI किसी और के काम को नज़रअंदाज़ कर सिर्फ अपने काम पर ज़ोर देगा
  • लगता है कि इस तकनीक का एक महत्वपूर्ण हिस्सा लेख में छूट गया है। getFileContext() और shouldStartNewGroup() का implementation नहीं है