00:00:00तो, Cloudflow 'Artifacts' नाम की एक चीज़ पर काम कर रहे हैं, जो एक डिस्ट्रिब्यूटेड फाइल सिस्टम है
00:00:05जो Git के अनुकूल है और इसे विशेष रूप से एजेंट्स के लिए बनाया गया है, और यह आपको प्रोग्राम के ज़रिए बनाने, फोर्क करने
00:00:10या हजारों रिपॉजिटरी को डिलीट करने की सुविधा देता है, चाहे वे कितनी भी छोटी या बड़ी क्यों न हों, जैसे कि पैरेलल
00:00:15PR रिव्यु, बड़े कोड बेस की ऑटोमेटेड रिफैक्टरिंग और प्रति सत्र एजेंट वर्कस्पेस के लिए।
00:00:20लेकिन इसके ड्यूरेबल ऑब्जेक्ट्स पर बने होने के कारण, क्या इसका मतलब यह है कि आपको JavaScript का इस्तेमाल करना होगा
00:00:25और आप Git चलाने के लिए शेल कमांड का उपयोग नहीं कर सकते?
00:00:28सब्सक्राइब बटन दबाएं और आइए पता करते हैं!
00:00:33GitHub को इंसानों के लिए बनाया गया था, एजेंट्स के लिए नहीं, जिसका मतलब है कि उन्हें किसी भी सोशल
00:00:37पहलू की ज़रूरत नहीं है, जैसे फॉलोअर्स चर्चा शुरू करते हैं, लेकिन एजेंट्स Git में बहुत अच्छे होते हैं, यह उनके
00:00:42ट्रेनिंग डेटा में है।
00:00:43तो, Cloudflare ने Zig में एक बेसिक Git इम्प्लीमेंटेशन बनाया है, इसे Wasm में कंपाइल किया है और इसे
00:00:49Git सर्वर के रूप में काम करने के लिए एक ड्यूरेबल ऑब्जेक्ट पर रखा है।
00:00:52इस बीच क्लाइंट खुद कुछ भी हो सकता है जो आप चाहते हैं, जैसे कि एक वर्कर जो आइसोमोर्फिक Git का उपयोग कर रहा है
00:00:57एक वर्कर के अंदर या Git प्रोटोकॉल और यहां तक कि HTTP क्लाइंट का उपयोग कर रहा है ताकि आप इससे कनेक्ट कर सकें
00:01:03उन चीज़ों के लिए जो JavaScript का उपयोग नहीं करती हैं।
00:01:05अब दुर्भाग्य से रिकॉर्डिंग के समय, मेरे पास Artifacts का एक्सेस नहीं है क्योंकि यह
00:01:10प्राइवेट बीटा में है, लेकिन इस पर बहुत सारा डॉक्यूमेंटेशन है, जिसका मतलब है कि मैं एक डेमो बना सकता हूँ
00:01:15उस डॉक्यूमेंटेशन के कोड के साथ और शायद जब यह पब्लिक बीटा में रिलीज़ होगा तो आप जांच सकते हैं
00:01:19कि मेरा कोड वास्तव में काम करता है या नहीं।
00:01:20तो हम जो करने जा रहे हैं वह एक ऐसा टूल बनाना है जो किसी विशिष्ट
00:01:24रिपो के लिए कार्यों की एक सूची ले और इन सभी कार्यों को पैरेलल रूप में चलाए, रिपो को कई बार फोर्क करके और
00:01:29प्रत्येक कार्य को एक ड्यूरेबल ऑब्जेक्ट पर क्लाउड रिपो में अपने स्वयं के आर्टिफैक्ट पर चलाए।
00:01:34आइए देखें कि यह कैसे काम करता है।
00:01:35अब मैंने वर्कर्स के लिए गेटिंग स्टार्टेड में Artifacts के डॉक्यूमेंटेशन का पालन करके शुरुआत की है,
00:01:39इसलिए मैंने इस कमांड का इस्तेमाल किया और इस कमांड के बाद का यह टेक्स्ट सिर्फ प्रोजेक्ट का नाम है
00:01:44और यह कुछ भी हो सकता है।
00:01:45तो मैंने इन सभी चरणों का पालन किया है, जिससे मुझे यह बेसिक वर्कर कोड मिला है।
00:01:49और Artifacts के लिए वर्कर्स, REST API का उपयोग करने की तुलना में थोड़े अधिक कुशल हैं क्योंकि वे
00:01:53कम राउंड ट्रिप करते हैं।
00:01:55फिर उसके बाद आपको अपनी wrangle.jsonc या toml फाइल में Artifacts बाइंडिंग जोड़ने की आवश्यकता होगी,
00:02:00फिर टाइप्स को फिर से रन करें।
00:02:02अब यहां डॉक्यूमेंटेशन एक नई रिपो बनाने पर केंद्रित है, इसलिए यह Artifacts बाइंडिंग का उपयोग करता है
00:02:07create मेथड और एक रिपो नाम के साथ।
00:02:09यह नाम बनाता है, जो इसे टोकन और रिमोट देता है।
00:02:13तो रिमोट आर्टिफैक्ट की लोकेशन है और टोकन या ऑथ टोकन की भी आवश्यकता होती है
00:02:17ताकि आपको इसका एक्सेस मिल सके।
00:02:18और निश्चित रूप से आप रिमोट और टोकन का उपयोग करके Git प्रोटोकॉल का इस्तेमाल कर सकते हैं ताकि
00:02:22अपने आर्टिफैक्ट के साथ इंटरैक्ट कर सकें।
00:02:23लेकिन हम कुछ अलग करने जा रहे हैं।
00:02:25एक Artifacts ड्यूरेबल ऑब्जेक्ट में बिल्कुल नई रिपो बनाने के बजाय, हम पहले
00:02:29जांचने जा रहे हैं कि क्या 'baseline' नाम की कोई रिपो मौजूद है।
00:02:31फिर अगर यह मौजूद नहीं है, तो हम जो करने जा रहे हैं वह एक Git रिपो को इम्पोर्ट करना है और फिर मैंने
00:02:35इसे baseline का नाम दिया है और फिर उस वैल्यू को यहां रिटर्न कर दिया है।
00:02:39और निश्चित रूप से, यदि आप वर्कर्स बाइंडिंग के लिए API डॉक्यूमेंटेशन देखते हैं, तो आप और अधिक
00:02:43पैरामीटर्स देखेंगे जिन्हें इम्पोर्ट मेथड में जोड़ा जा सकता है।
00:02:45लेकिन फिर मौजूदा रिपो को रिटर्न करने के बाद, हम इसके साथ बहुत ही बेहतरीन चीजें कर सकते हैं।
00:02:49तो यहाँ वे कार्य दिए गए हैं जिन्हें मैं रिपो के साथ करना चाहता हूँ, और निश्चित रूप से मैंने उन्हें हार्ड कोड किया है,
00:02:50लेकिन इन्हें इनपुट या किसी प्रकार के UI में जोड़ा जा सकता है।
00:02:53और यहाँ वर्कर डिफ़ॉल्ट एक्सपोर्ट के अंदर, मेरे पास Anthropic SDK के साथ-साथ मेरी
00:02:56baseline रिपो है।
00:03:00और मैं सभी कार्यों को लूप करने जा रहा हूँ और यहाँ, मैं रिपो को इस नाम के साथ फोर्क कर रहा हूँ।
00:03:02फिर हमारे पास यह फंक्शन है, जिसे मैं बाद में बताऊंगा, लेकिन यह फोर्क की गई रिपो के अंदर टास्क को रन करता है
00:03:06और एजेंट को बदलाव करने के लिए कहता है, साथ ही एजेंट का सारांश भी रिटर्न करता है।
00:03:07तो अंतिम चीज़ जो एजेंट ने कही, और फिर प्रत्येक फॉर लूप के बाद, मैं यह जानकारी रिटर्न कर रहा हूँ।
00:03:10मैं टास्क का नाम, फोर्क का नाम, रिमोट और टोकन बताने वाला हूँ
00:03:15ताकि हम जब चाहें इसे एक्सेस कर सकें, यह देखने के लिए कि क्या बदलाव अच्छे हैं और क्या किया गया है, उसका सारांश देख सकें।
00:03:19तो अभी वर्कर्स बाइंडिंग आपको पुल, कमिट और पुश करने की क्षमता नहीं देती है।
00:03:20इसलिए मेरे कोड में, मुझे इसे Isomorphic Fetch के साथ करना पड़ा है और फिर बदलावों को अस्थायी रूप से स्टोर करने के लिए
00:03:23एक इन-मेमोरी स्टोरेज सिस्टम का उपयोग करना पड़ा है।
00:03:27तो एजेंट कोड में वापस आकर, हम मेमोरी में अपना फाइल सिस्टम बना रहे हैं, और फिर हमारे पास
00:03:28एक सिस्टम प्रॉम्प्ट है जो एजेंट को प्रासंगिक बदलाव करने और फिर अपने कोड को कमिट करने के लिए कहता है।
00:03:33इसलिए हम प्रदान किए गए रिमोट के साथ-साथ टोकन का उपयोग करके फोर्क की गई रिपो को क्लोन करने जा रहे हैं।
00:03:38और फिर हम कुछ टूल्स परिभाषित करते हैं, जैसे रीड, राइट और कमिट।
00:03:39यहाँ हम मॉडल चुनते हैं और अपने मॉडल को एक सिस्टम प्रॉम्प्ट देते हैं, और फिर हम टास्क को
00:03:43यूज़र मैसेज के रूप में पास करते हैं।
00:03:47और बाकी कोड आपका स्टैंडर्ड एजेंटिक लूप है।
00:03:48तो यदि कोई टूल कॉल है, तो रीज़निंग बंद करें और टूल कॉल रन करें, हमारे मामले में, रीड, राइट
00:03:51या कमिट, जो कमिट करने के बाद कोड को पुश भी कर देता है।
00:03:52और आर्टिफैक्ट होने का फायदा यह है कि यह सारा कोड ड्यूरेबल ऑब्जेक्ट में रहेगा,
00:03:55ऑब्जेक्ट के SQLite डेटाबेस में स्टोर होगा, और यदि ड्यूरेबल ऑब्जेक्ट डाउन हो जाता है, तो जानकारी
00:03:59को किसी भी समय SQLite डेटाबेस से फिर से प्राप्त किया जा सकता है यदि यह वापस आ जाता है।
00:04:00और फिर यहाँ नीचे, हम टूल कॉल के बाद मॉडल की रीज़निंग जारी रखते हैं और फिर मॉडल से
00:04:02लेटेस्ट मैसेज रिटर्न करते हैं।
00:04:07अब मुझे पता है कि बिना कोड चलाए यह सब कुछ होते हुए देखना बहुत मुश्किल है,
00:04:10लेकिन उम्मीद है कि आप थोड़ा देख सकते हैं कि आर्टिफैक्ट्स के साथ क्या किया जा सकता है और
00:04:14उनकी पूरी क्षमता क्या है।
00:04:20कल्पना कीजिए कि अगर आपके पास इन आर्टिफैक्ट्स में हो रहे सभी बदलावों को देखने के लिए एक UI हो
00:04:23और आप अलग-अलग रिपॉजिटरी में बदलाव करने के लिए व्यक्तिगत एजेंट्स या एक सिंगल ऑर्केस्ट्रेटर एजेंट के साथ बातचीत कर सकें।
00:04:27ऑर्केस्ट्रेटर एजेंट की बात करें तो, हमारे पास एक सिंगल वर्कर हो सकता है जो उन सभी बदलावों को व्यवस्थित
00:04:29कर सके और एक रिव्युअर एजेंट के कोड की जांच कर लेने के बाद उन्हें मुख्य रिपो में मर्ज कर सके।
00:04:32हम आर्टिफैक्ट्स को डायनामिक वर्कर्स के साथ भी जोड़ सकते हैं ताकि एजेंट्स द्वारा बदले गए कोड को वे रन करके देख सकें
00:04:37कि क्या यह काम करता है।
00:04:38और यदि यह JavaScript कोड नहीं है, तो हम अपनी इच्छानुसार किसी भी भाषा को चलाने के लिए Cloudflare सैंडबॉक्स का उपयोग कर सकते हैं
00:04:42और यहां तक कि शेल कमांड भी चला सकते हैं।
00:04:46Cloudflare ब्राउज़र विकल्प का तो जिक्र ही क्या, जो मॉडल के देखने के लिए एक पपेटियर ब्राउज़र चलाता है
00:04:48और यह देखता है कि यदि यह फ्रंट-एंड बदलाव है तो क्या कोड सही तरीके से लागू किया गया है।
00:04:52ईमानदारी से कहूं तो मुझे आर्टिफैक्ट्स की संभावनाओं के बारे में सोचने में बहुत मज़ा आया है, भले ही
00:04:56मैं अभी उन्हें रन नहीं कर सकता।
00:04:57लेकिन एक चीज़ जो मैंने देखी है वह यह है कि इसमें कोई 'git diff' कमांड नहीं है।
00:05:02यह वर्कर बाइंडिंग API या Isomorphic Git में एक्सपोज़्ड नहीं है।
00:05:03तो शायद 'git diff' करने का एकमात्र तरीका Git प्रोटोकॉल के माध्यम से है, या वे इसे भविष्य में जोड़ सकते हैं।
00:05:07खैर, अभी के लिए, यदि आप बिना Git प्रोटोकॉल का उपयोग किए ऐसा करना चाहते हैं, तो मुझे लगता है कि आप
00:05:09Git ट्री खोजने के लिए 'git log' के साथ Isomorphic Git का उपयोग कर सकते हैं और फिर अंतरों की तुलना करने के लिए
00:05:13ट्री के नीचे जा सकते हैं।
00:05:18बहरहाल, मुझे लगता है कि Cloudflare की तरफ से यह एक बहुत ही बेहतरीन रिलीज़ है।
00:05:21और भले ही S3 फाइल्स, ZeroFS और JuiceFS जैसे अन्य फाइल सिस्टम टूल मौजूद हैं,
00:05:22मुझे नहीं लगता कि ये विकल्प Git के अनुकूल हैं, जो एक बहुत ही बेहतरीन फीचर है
00:05:25और एजेंटों के लिए अधिक अनुकूल है।
00:05:30S3 की बात करें तो, यदि आप इसे कभी अपने मशीन पर स्थानीय रूप से रन करना चाहते हैं, तो
00:05:35जोश (Josh) का यह वीडियो देखें जो आपको बिल्कुल बताता है कि ऐसा कैसे करना है।
00:05:36...
00:05:40...
00:05:45...
00:05:46...
00:05:50...
00:05:55...
00:05:59...
00:06:01...
00:06:05...