क्लॉड को एक बड़ा काम दे दो और वह बीच में ही छोड़ देगा, यह मानकर कि काम पूरा हो गया। काम खत्म नहीं हुआ। बस उसे शुरू करना याद नहीं रहता।
कोई एजेंट लंबे काम पर उस तरह काम नहीं करता जैसा आप सोचते हैं। वह शिफ्टों में काम करता है।
एक सॉफ्टवेयर प्रोजेक्ट की कल्पना करें जिसमें शिफ्टों में काम करने वाले इंजीनियर हों, और हर नया इंजीनियर बिना किसी पिछली शिफ्ट की याद के आए। यह कोई रूपक नहीं है कि एजेंट कैसा महसूस करते हैं। यांत्रिक रूप से वे वैसे ही हैं। कॉन्टेक्स्ट विंडो सीमित होती है, अधिकांश वास्तविक काम उसमें फिट नहीं होता, इसलिए एजेंट अलग-अलग सत्रों में काम करता है — और हर नया सत्र पिछले सत्र की कोई याद न रखते हुए शुरू होता है।
एंथ्रोपिक ने ठीक यही प्रयोग किया और प्रकाशित किया कि क्या टूटा। यही वह हिस्सा है जो पढ़ने लायक है, क्योंकि यह कोई ब्लॉगर नहीं है जो टूल को कमजोर बता रहा हो। यह वह टीम है जो क्लॉड बनाती है, यह दस्तावेज़ीकृत कर रही है कि क्लॉड कहाँ टूटता है।
एक विंडो काम क्यों पूरा नहीं कर सकती
किसी फ्रंटियर कोडिंग मॉडल को एक उच्च-स्तरीय प्रॉम्प्ट दें — "claude.ai का क्लोन बनाएँ" — और इसे कई कॉन्टेक्स्ट विंडो में एक लूप में डालें, तो यह एक काम करने वाला ऐप बनाने में विफल रहता है। हमेशा नहीं, बल्कि भरोसेमंद रूप से विफल। और यह ओपस है जो एंथ्रोपिक के अपने एजेंट फ्रेमवर्क पर चल रहा है, जिसमें कॉन्टेक्स्ट कम्पैक्शन चालू है, पूरा सेटअप इसे जारी रखने के लिए बनाया गया है।
यह दो विशिष्ट तरीकों से विफल होता है, और दोनों ही शिफ्ट हैंडओवर की समस्याएँ हैं।
पहला: एजेंट सब कुछ एक साथ करने की कोशिश करता है। वह एक ही विंडो में पूरे ऐप को एक-शॉट करने का प्रयास करता है, एक फीचर के बीच में कॉन्टेक्स्ट खत्म हो जाता है, और सत्र आधे-अधूरे और बिना दस्तावेज़ीकरण के समाप्त हो जाता है। अगली शिफ्ट आती है, एक गड़बड़ देखती है जो उसने नहीं बनाई, और उसे अनुमान लगाना होता है कि क्या हो रहा था। इसलिए वह अपना पूरा सत्र सिर्फ बुनियादी ऐप को फिर से काम करने में बिता देती है, आगे बढ़ने के बजाय।

दूसरा बाद में दिखाई देता है, जब कुछ फीचर मौजूद हो जाते हैं। एक नया एजेंट चारों ओर देखता है, देखता है कि वास्तविक प्रगति हुई है, और तय करता है कि पूरा काम हो गया है। लेकिन ऐसा नहीं है — आधे फीचर कभी बने ही नहीं, और किसी ने यह नहीं लिखा कि कौन से हैं। शिफ्ट ने सूची की जाँच किए बिना ही काम को पूरा घोषित कर दिया।
दोनों विफलताओं की जड़ एक ही है। छोड़ने वाली शिफ्ट ने पीछे कुछ नहीं छोड़ा, इसलिए आने वाली शिफ्ट अंधी उड़ान भर रही है। समाधान एक समझदार मॉडल नहीं है। यह वह है जो शिफ्ट अपने निकलने से पहले लिख कर जाती है।
छोड़ने वाली शिफ्ट क्या लिख कर जाती है
एंथ्रोपिक ने जो उत्तर दिया, उसके दो भाग हैं: एक एजेंट जो कोई भी काम शुरू होने से पहले साइट सेट करता है, और फिर शिफ्ट वर्कर जो सत्र दर सत्र आकर प्रगति करते हैं।
सेटअप एजेंट एक बार चलता है, बिल्कुल शुरुआत में। उसका पूरा काम पर्यावरण को ऐसी स्थिति में छोड़ना है जहाँ हर भविष्य की शिफ्ट को पता हो कि "पूरा" कैसा दिखता है। वह जो मुख्य चीज़ लिखता है, वह एक फीचर सूची है — एक संरचित फ़ाइल जो हर एक चीज़ बताती है जो तैयार ऐप को करनी चाहिए।

claude.ai के क्लोन के लिए, इसका मतलब 200 से अधिक फीचर थे। चीज़ें जैसे "एक यूजर नया चैट खोल सकता है, एक क्वेरी टाइप कर सकता है, एंटर दबा सकता है, और एक रिस्पॉन्स देख सकता है।" हर एक को शुरुआत में फेल के रूप में चिह्नित किया गया। प्रत्येक प्रविष्टि लगभग इस तरह दिखती थी:
1{2 "description": "नया चैट बटन एक नई बातचीत शुरू करता है",3 "steps": ["New Chat पर क्लिक करें", "नई बातचीत की पुष्टि करें", "वेलकम स्टेट की जाँच करें"],4 "passes": false5}
वह हर प्रविष्टि पर "passes": false ही पूरा मुद्दा है। यह एक अनचेक बॉक्स है, और उनमें से 200 हैं।
वह विफल सूची ही वह चीज़ है जो एजेंट को जल्दी जीत का ऐलान करने से रोकती है। एक शिफ्ट चारों ओर देखकर यह तय नहीं कर सकती कि काम हो गया है, क्योंकि वहाँ एक फ़ाइल पड़ी है जिसमें 200 अनचेक बॉक्स हैं। पहली पंक्ति लिखने से पहले ही काम परिभाषित हो जाता है।
एक छोटा सा विवरण जो बताता है कि यह कितना सावधान होना चाहिए था: उन्होंने उस फ़ाइल के लिए JSON का उपयोग किया, मार्कडाउन का नहीं। कारण यह है कि मॉडल के मार्कडाउन फ़ाइल की तुलना में JSON फ़ाइल को चुपचाप फिर से लिखने या हटाने की संभावना कम होती है। और इसके आस-पास के निर्देश जानबूझकर सीधे हैं — टेस्ट को हटाना या संपादित करना अस्वीकार्य है, क्योंकि टेस्ट को हटाना ही एक फीचर के चुपचाप गायब होने का तरीका है। शिफ्ट को एक बॉक्स चेक करने की अनुमति है। उसे एक बॉक्स मिटाने की अनुमति नहीं है।
डेस्क पर नोट
काम सेट करना इसका आधा हिस्सा है। दूसरा आधा यह सुनिश्चित करना है कि हर शिफ्ट जगह को इतना साफ छोड़े कि अगली शिफ्ट बिना किसी समस्या के आ सके।
दो चीज़ें ऐसा करती हैं। एजेंट अपने काम को git में एक वास्तविक संदेश के साथ कमिट करता है जो बताता है कि क्या बदला है, और वह एक सादा प्रोग्रेस फ़ाइल लिखता है — एक चलता-फिरता लॉग कि क्या किया गया है। यह लॉग git हिस्ट्री के साथ मिलकर एक नए एजेंट को, जो ठंडे बस्ते से शुरू हो रहा है, कुछ ही मिनटों में चीज़ों की स्थिति समझने देता है, बजाय इसके कि वह एक घंटा रिवर्स-इंजीनियरिंग में बिताए।

git यहाँ कुछ और भी करता है। जब एक शिफ्ट कोई खराब बदलाव करती है, तो अगली शिफ्ट नुकसान को सुलझाने की कोशिश करने के बजाय पिछले काम करने वाले संस्करण पर वापस जा सकती है। प्रोग्रेस फ़ाइल बताती है कि हम कहाँ हैं। कमिट हिस्ट्री अनडू बटन है।
और "साफ" का एक विशिष्ट अर्थ है। इसका मतलब उस तरह का कोड जिसे आप मेन ब्रांच में मर्ज करने में सहज होंगे — कोई बड़ा बग नहीं, व्यवस्थित, दस्तावेज़ीकृत। "तकनीकी रूप से मैंने प्रगति की" नहीं। मानक यह है: अगला व्यक्ति आपकी गंदगी साफ किए बिना एक नया फीचर शुरू कर सके।
अगली शिफ्ट कैसे काम शुरू करती है
इन दो चीज़ों को जगह पर रखो और हर शिफ्ट उसी तरह शुरू होती है। कुछ भी नया छूने से पहले, एजेंट एक निश्चित शुरुआती दिनचर्या चलाता है ताकि वह अपनी स्थिति समझ सके — वही चीज़ जो एक अच्छा इंजीनियर किसी ऐसे प्रोजेक्ट पर कदम रखते समय करता है जिसे उसने कुछ समय से नहीं देखा है।
1यह देखने के लिए pwd चलाएँ कि आप किस निर्देशिका में हैं — यही एकमात्र जगह है जहाँ आप संपादित कर सकते हैं2हाल ही में क्या हुआ यह देखने के लिए प्रोग्रेस फ़ाइल और git लॉग पढ़ें3फीचर सूची पढ़ें और सबसे उच्च-प्राथमिकता वाली चीज़ चुनें जो अभी तक नहीं हुई है4ऐप शुरू करें और एक बुनियादी जाँच चलाएँ कि मुख्य फीचर अभी भी काम करते हैं5तभी, निर्माण शुरू करें
वह चौथा कदम जितना दिखता है उससे कहीं अधिक मायने रखता है। कोई भी नया फीचर लिखने से पहले, एजेंट ऐप को बूट करता है और पुष्टि करता है कि बुनियादी चीज़ें अभी भी काम कर रही हैं — एक चैट खोलता है, एक संदेश भेजता है, एक रिस्पॉन्स पाता है। अगर पिछली शिफ्ट ने कुछ तोड़ा है, तो यह तुरंत पकड़ में आ जाता है, इससे पहले कि नई शिफ्ट टूटी हुई नींव पर नया काम जोड़कर इसे और खराब करे।

यही पूरी चाल है, और यह लगभग उबाऊ है कि यह कितनी सरल है। छोड़ने वाली शिफ्ट लिखती है कि उसने क्या किया और क्या बाकी है। आने वाली शिफ्ट कुछ भी करने से पहले उसे पढ़ती है। हैंडओवर ही पूरा खेल है।
आपके लंबे कार्यों की भी शिफ्टें होती हैं
यह सब वास्तव में वेब ऐप बनाने के बारे में नहीं है। एंथ्रोपिक ने इसका परीक्षण कोड पर किया क्योंकि कोड को सत्यापित करना आसान है, लेकिन इसके नीचे का आकार हर उस लंबे कार्य का आकार है जो आप किसी एजेंट को देते हैं।
कोई भी चीज़ जो एक विंडो में फिट नहीं होगी, उसकी शिफ्टें होती हैं। एक लंबी रिपोर्ट अध्याय-दर-अध्याय लिखना। एक दर्जन चैट में एक शोध परियोजना चलाना। दिनों तक एक बड़े विश्लेषण पर काम करना। हर बार जब आप उसी कार्य पर एक नया सत्र शुरू करते हैं, तो एक नया कार्यकर्ता बिना पिछले की याद के काम शुरू कर रहा होता है — और यदि आपने एक हैंडओवर नहीं छोड़ा, तो वह अनुमान लगाकर शुरू करता है।

तो एक छोड़ें। एक लंबे सत्र के समाप्त होने से पहले, मॉडल को लिखवाएँ कि क्या हुआ, क्या अभी भी खुला है, और अगले सत्र को पहले क्या उठाना चाहिए। उस नोट को कहीं रखें जहाँ वह आते समय पढ़ सके। यही फर्क है एक ऐसे प्रोजेक्ट के बीच जो हर सत्र में आगे बढ़ता है और एक ऐसे प्रोजेक्ट के बीच जो एक ही चीज़ को बार-बार बनाता रहता है।
आज रात और कल वही मॉडल। एकमात्र चीज़ जो बदलती है वह यह है कि कल का सत्र अंधा आता है, या कल रात का नोट पढ़कर आता है।
यह कभी इस बारे में नहीं था कि शिफ्ट कितनी समझदार है। यह इस बारे में है कि वह आने वाली शिफ्ट के लिए क्या छोड़ती है।
इस तरह के और विश्लेषण — https://t.me/+xYv1MgmIuds5YTli





