रिपॉजिटरी ही कॉन्टेक्स्ट है: एजेंटों को इतिहास की आवश्यकता क्यों नहीं है
कोडिंग एजेंट वही पढ़ते हैं जो आप उन्हें देते हैं। यह सुनने में एक ताकत लग सकती है, लेकिन आमतौर पर, यह एक समस्या है।
मैं एजेंटों को अधिक डॉक्यूमेंटेशन दिया करता था। मैं specs, ADRs और प्लानिंग डॉक्स लिखता था। मुझे लगता था कि अधिक कॉन्टेक्स्ट बेहतर है। फिर मैंने एक एजेंट को आत्मविश्वास के साथ गलती करते हुए देखा। यह कोई hallucination नहीं था। यह बस एक पुराने दस्तावेज़ का पालन कर रहा था जिसमें उस सिस्टम का वर्णन था जिसे हमने महीनों पहले इस्तेमाल करना बंद कर दिया था। वह सच्चाई के बजाय इतिहास का पालन कर रहा था।
इतिहास इंसानों के लिए है। यह बताता है कि कोई सिस्टम क्यों मौजूद है। यह आपको trade-offs और पुराने निर्णयों को समझने में मदद करता है।
एजेंट अलग होते हैं। वे वर्तमान सिस्टम में बदलाव करते हैं। उस कार्य के लिए, उन्हें ऐतिहासिक वर्णनात्मक टेक्स्ट (prose) की आवश्यकता नहीं होती। उन्हें वर्तमान 'source of truth' की आवश्यकता होती है।
उन्हें चाहिए: • वर्तमान schemas • वर्तमान module boundaries • वर्तमान APIs • वर्तमान tests • वर्तमान configurations
यदि आप चाहते हैं कि एक एजेंट डेटाबेस को समझे, तो उसे हर migration log को दोबारा पढ़ने के लिए मजबूर न करें। उसे वर्तमान schema दें। यदि आप चाहते हैं कि वह आर्किटेक्चर को समझे, तो उसे पुराने ADRs पढ़ने के लिए मजबूर न करें। उसे वर्तमान module graph दें।
खतरा 'context pollution' का है। यह तब होता है जब कोई तथ्य दो जगहों पर मौजूद होता है: कोड में और एक Markdown फ़ाइल में। कोड तेज़ी से बदलता है। वर्णनात्मक टेक्स्ट (prose) तभी बदलता है जब कोई उसे याद रखता है। जब वे अलग हो जाते हैं, तो एजेंट पुराने दस्तावेज़ पर भरोसा करता है। एक एजेंट इंसान की तरह बारीकी से नहीं देखता या क्रॉस-चेक नहीं करता। वह जो कुछ भी सबसे पहले पढ़ता है, उसे ही तथ्य मान लेता है।
बेहतर डॉक्स लिखना बंद करें। उन जगहों को कम करना शुरू करें जहाँ तथ्य पुराने (rot) हो सकते हैं।
नियमों को टेक्स्ट से हटाकर सिस्टम स्ट्रक्चर में ले जाएँ: • आर्किटेक्चर के लिए directory structures का उपयोग करें। • इरादे (intent) के लिए naming का उपयोग करें। • APIs के लिए package exports का उपयोग करें। • boundaries के लिए lint rules का उपयोग करें। • data contracts के लिए schemas का उपयोग करें। • behavior के लिए tests का उपयोग करें।
README में एक नियम केवल एक सुझाव है। ESLint config में एक नियम एक दीवार है। एजेंट दीवार को नज़रअंदाज़ नहीं कर सकता।
मैंने अपनी instruction files को छोटा कर दिया है। वे अब आर्किटेक्चर को दोबारा नहीं बतातीं। इसके बजाय, वे उस स्थान की ओर इशारा करती हैं जहाँ आर्किटेक्चर मौजूद है।
इतिहास लोगों के लिए रखें। एजेंटों के लिए वर्तमान को आकार दें।
Source: https://dev.to/gyu07/the-repo-is-the-context-why-agents-dont-need-history-4ien
Optional learning community: https://t.me/GyaanSetuAi