GitHub AI एजेंटों के लिए नहीं बना था (इसलिए क्लाउडफ्लेयर ने अपना खुद का बनाया)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

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...

Key Takeaway

Cloudflare Artifacts, Git-अनुकूल डिस्ट्रिब्यूटेड फाइल सिस्टम प्रदान करके AI एजेंट्स को इंसानों के लिए बने GitHub की सीमाओं के बिना कुशलतापूर्वक कोडबेस को मैनेज, मॉडिफाई और रिफैक्टर करने की क्षमता देता है।

Highlights

Cloudflare Artifacts एक डिस्ट्रिब्यूटेड फाइल सिस्टम है जिसे Git-अनुकूल बनाया गया है और यह विशेष रूप से AI एजेंट्स के लिए डिज़ाइन किया गया है।

Artifacts का आर्किटेक्चर ड्यूरेबल ऑब्जेक्ट्स (Durable Objects) और SQLite डेटाबेस पर आधारित है, जो डेटा को स्थायी रूप से सुरक्षित रखता है।

Workers बाइंडिंग का उपयोग करके, डेवलपर्स सीधे कोड के जरिए रिपॉजिटरी को फोर्क, क्रिएट या डिलीट कर सकते हैं।

Isomorphic Fetch और इन-मेमोरी स्टोरेज सिस्टम का उपयोग करके फाइलों के साथ इंटरैक्ट किया जा सकता है क्योंकि वर्तमान में बिल्ट-इन 'git diff' सपोर्ट उपलब्ध नहीं है।

यह सिस्टम पैरेलल PR रिव्यु और बड़े कोडबेस की ऑटोमेटेड रिफैक्टरिंग जैसे कार्यों को प्रति-सत्र (per-session) वर्कस्पेस में सक्षम बनाता है।

Timeline

Cloudflare Artifacts का परिचय

  • GitHub मुख्य रूप से इंसानों के लिए बनाया गया है, जो एजेंट्स की आवश्यकताओं के लिए अनुपयुक्त है।
  • Artifacts एक डिस्ट्रिब्यूटेड फाइल सिस्टम है जिसे विशेष रूप से एजेंट्स के वर्कफ़्लो के लिए बनाया गया है।
  • यह सिस्टम पैरेलल PR रिव्यु और बड़े कोडबेस की रिफैक्टरिंग में मदद करता है।

GitHub का डिज़ाइन सामाजिक इंटरैक्शन पर केंद्रित है, जिसकी एजेंट्स को आवश्यकता नहीं होती। Artifacts इस कमी को पूरा करता है, जिससे एजेंट्स प्रोग्रामेटिक रूप से हजारों रिपॉजिटरी को नियंत्रित कर सकते हैं।

आर्किटेक्चर और कार्यान्वयन

  • Cloudflare ने Zig भाषा में Git का एक बेसिक इम्प्लीमेंटेशन बनाया है।
  • इसे Wasm में कंपाइल करके एक ड्यूरेबल ऑब्जेक्ट पर होस्ट किया गया है।
  • क्लाइंट किसी भी ऐसे सिस्टम का उपयोग कर सकते हैं जो Git प्रोटोकॉल या HTTP क्लाइंट का समर्थन करता है।

यह आर्किटेक्चर सुनिश्चित करता है कि केवल JavaScript पर निर्भर रहने की आवश्यकता नहीं है। ड्यूरेबल ऑब्जेक्ट्स का उपयोग करके, सिस्टम को Git सर्वर के रूप में कार्य करने में सक्षम बनाया गया है।

डेवलपमेंट और वर्कफ़्लो ऑटोमेशन

  • Workers बाइंडिंग का उपयोग REST API की तुलना में कम राउंड ट्रिप के साथ अधिक कुशल संचार प्रदान करता है।
  • कोड को ड्यूरेबल ऑब्जेक्ट के SQLite डेटाबेस में स्टोर किया जाता है, जो ऑब्जेक्ट डाउन होने पर भी डेटा रिकवरी सुनिश्चित करता है।
  • एजेंट के लिए सिस्टम प्रॉम्प्ट और टूल्स (Read, Write, Commit) को परिभाषित करके वर्कफ़्लो को ऑटोमेट किया जाता है।

डॉक्यूमेंटेशन के अनुसार Artifacts बाइंडिंग के माध्यम से रिमोट और टोकन प्राप्त किए जाते हैं। डेवलपर्स मौजूदा रिपो को फोर्क कर सकते हैं और एजेंट्स को विशिष्ट कार्यों को पूरा करने के लिए निर्देशित कर सकते हैं।

भविष्य की संभावनाएं और सीमाएं

  • वर्तमान में 'git diff' कमांड API में उपलब्ध नहीं है, जिसके लिए वैकल्पिक Git लॉग विश्लेषण की आवश्यकता होती है।
  • भविष्य में इसे Cloudflare ब्राउज़र विकल्प के साथ जोड़कर UI-आधारित सत्यापन और डायनामिक टेस्टिंग संभव है।
  • अन्य फाइल सिस्टम विकल्पों (S3, ZeroFS) की तुलना में Artifacts का Git-अनुकूल होना इसे एजेंट-आधारित विकास के लिए श्रेष्ठ बनाता है।

सिस्टम की पूर्ण क्षमता में एक सिंगल ऑर्केस्ट्रेटर एजेंट शामिल हो सकता है जो अन्य एजेंट्स को व्यवस्थित करता है। सैंडबॉक्सिंग का उपयोग करके किसी भी प्रोग्रामिंग भाषा को चलाकर कोड की कार्यक्षमता का परीक्षण किया जा सकता है।

Community Posts

View all posts