मेरे कोडिंग एजेंट ने सेशन को याद रखा, काम को नहीं
एक कोडिंग एजेंट थ्रेड को जीवित रख सकता है, फिर भी वह भूलक्कड़ महसूस हो सकता है।
CliGate बनाते समय मुझे इस समस्या का सामना करना पड़ा। मैंने सेशन की निरंतरता (session continuity) को ठीक कर दिया, लेकिन बार-बार किए जाने वाले कार्य अभी भी बहुत धीमे थे।
एजेंट को बातचीत तो याद थी, लेकिन काम याद नहीं था।
सेशन निरंतरता एक समस्या का समाधान करती है। यह इस तरह के फॉलो-अप कमांड में मदद करती है:
- continue (जारी रखें)
- do the same for this file (इसी तरह इस फ़ाइल के लिए भी करें)
- retry that (उसे फिर से प्रयास करें)
यह उपयोगी है। लेकिन जब आप कुछ दिनों बाद किसी वर्कफ़्लो को दोहराते हैं, तो यह काम नहीं आता।
एक एजेंट को यह याद रखने की ज़रूरत है कि पिछली बार क्या चीज़ सफल रही थी। उसे यह जानने की ज़रूरत है:
- कौन सा बटन काम करता है
- कौन सा स्टेप एक डेड एंड (dead end) है
- किस फ़ील्ड को विशेष हैंडलिंग की आवश्यकता है
- कौन सा नियम आप हमेशा लागू करना चाहते हैं
पहली बार रन करना सबसे महंगा होता है। उसी समय एजेंट खोजबीन करता है और उन विवरणों को पाता है जो आपके प्रॉम्प्ट में नहीं होते हैं।
मेरे सुधार से पहले, ये विवरण केवल रॉ लॉग्स (raw logs) में रहते थे। एजेंट के पास इतिहास तो था, लेकिन उसके पास कोई पुन: प्रयोज्य (reusable) मेमोरी नहीं थी। उसे हर बार सब कुछ फिर से खोजना पड़ता था।
यह बुद्धिमत्ता नहीं है। यह एक ही डिबगिंग लागत को दो बार चुकाने जैसा है।
गलत दृष्टिकोण अधिक इतिहास सहेजना और यह उम्मीद करना है कि मॉडल उसका उपयोग करेगा। इससे शोर (noise) पैदा होता है।
इसके बजाय, मैंने एक छोटा, पुन: प्रयोज्य मेमोरी लेयर बनाया। मैंने इन पर ध्यान केंद्रित किया:
- प्रक्रियाएं (procedures)
- तथ्य (facts)
- निर्देश (directives)
- संदर्भ (references)
मैंने जो कुछ भी हुआ उसे सहेजने की कोशिश करना बंद कर दिया। मैंने वह सहेजना शुरू किया जिसे याद रखा जाना चाहिए।
अब, असिस्टेंट याद रखने के लिए एक फ़ाइल-आधारित मेमोरी लेयर का उपयोग करता है:
- एक प्रक्रिया: सबसे अच्छे स्टेप्स और ज्ञात डेड एंड्स
- एक तथ्य: एक URL या एक विशिष्ट सेटिंग
- एक निर्देश: आप चीज़ों को कैसे करवाना चाहते हैं
- एक संदर्भ: दस्तावेज़ (documentation) कहाँ है
लोग इसी तरह काम करते हैं।
मैं अतीत का सटीक पुनरावृत्ति (replay) नहीं चाहता क्योंकि इंटरफेस बदलते हैं और बटन अपनी जगह बदलते हैं। मैं चाहता हूँ कि एजेंट:
- सबसे अच्छी ज्ञात प्रक्रिया को याद रखे
- पहले उसे आज़माए
- प्रत्येक स्टेप को सत्यापित करे
- यदि विफल हो जाए तो फिर से खोजबीन (exploration) पर वापस जाए
- सफलता के बाद मेमोरी को अपडेट करे
यह नाजुक ऑटोमेशन को उपयोगी ऑपरेशनल मेमोरी में बदल देता है।
मैंने स्थायी नियमों को बातचीत के इतिहास से भी अलग कर दिया। "हमेशा चीनी में उत्तर दें" या "प्रोडक्शन डेटा को न छुएं" जैसे नियम सेशन कॉन्टेक्स्ट नहीं हैं। वे ऑपरेटिंग नियम हैं।
एक बार जब मैंने इन्हें अलग कर दिया, तो असिस्टेंट अनुमानित (predictable) हो गया। अब उसे किसी कार्य के बीच में आपकी प्राथमिकताओं को फिर से खोजने की आवश्यकता नहीं होती है।
दोहराए जाने वाले कार्य अब छोटे हो गए हैं। असिस्टेंट तेज़ी से काम करता है क्योंकि वह हर बार एक खाली मॉडल के साथ शुरुआत नहीं करता है।
एक निरंतर थ्रेड को सीखने वाले सिस्टम के साथ भ्रमित न करें।
एक सेशन बातचीत को जीवित रखता है। मेमोरी उपयोगी सबक को जीवित रखती है।
यदि आप कोडिंग एजेंट बनाते हैं, तो खुद से पूछें: क्या आपका सिस्टम थ्रेड को याद रख रहा है, या यह सफल प्रक्रिया को याद रख रहा है?
स्रोत: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig
