शाम के 6:40 बजे हैं और AI असिस्टेंट ने अभी-अभी बताया है कि फेल हो रहे टेस्ट ठीक हो गए हैं। आप खुद चलाकर देखते हैं। दो अब भी लाल हैं। आप आउटपुट फिर से पेस्ट करके दोबारा पूछ सकते हैं, या यह काम किसी ऐसी चीज़ को सौंप सकते हैं जो तभी रुकती है जब टेस्ट रनर भी हाँ कहे। अगली सुबह मार्केटिंग की एक साथी अलग सवाल पूछती है: क्या ऐसी ही कोई चीज़ हर वर्किंग डे पर उसके आने से पहले तीन कॉम्पिटिटर वेबसाइट चेक कर सकती है?
ये दोनों काम osFoundry के एक ही हिस्से में, दो पास-पास वाले मेन्यू आइटम के नीचे मिलते हैं: Loop और Graph।
एजेंट्स को बिना लगातार निगरानी के चलाने के दो तरीके
Loop किसी एजेंट टीम को एक लक्ष्य की ओर चलाने का दोबारा इस्तेमाल होने वाला तरीका है। इसमें एजेंट्स की एक सूची, आम भाषा में लिखा लक्ष्य, यह जाँचने का तरीका कि लक्ष्य पूरा हुआ या नहीं, सख्त सीमाएँ (कितने राउंड, हार मानने से पहले लगातार कितनी बार फेल) और ज़रूरत हो तो शेड्यूल जैसा कोई ट्रिगर, सब एक साथ होते हैं। यह राउंड में काम करता है, हर राउंड को लक्ष्य के हिसाब से ग्रेड करता है और खुद रुक जाता है। Graph एक सेव किया हुआ वर्कफ़्लो प्रोग्राम है, उन मामलों के लिए जब रास्ता तय नहीं होता: यह किसी नतीजे के आधार पर ब्रांच कर सकता है, किसी हिस्से को पास होने तक दोबारा चला सकता है, काम एक साथ कई एजेंट्स में बाँट सकता है, इंसानी अप्रूवल के लिए रुक सकता है और दूसरे graphs को कॉल कर सकता है। दोनों osFoundry डेस्कटॉप ऐप के मुख्य साइडबार में हैं, पहले Loop और ठीक उसके नीचे Graph, और ऐप का अपना एक-लाइन का फ़र्क ही याद रखने लायक है: Loop हमेशा एक ही रास्ता लेता है, Graph चलते-चलते अपना रास्ता तय करता है।
Loop चलते समय आपको क्या दिखता है
यह पूरा हो चुका एक Loop सेशन है (टेस्ट और फ़ाइल नाम उदाहरण डेटा हैं)। जानने लायक हिस्से:
- बाईं ओर सेशन रेल। हर Loop रन अपना अलग सेशन होता है, नीचे उसका स्टेटस लिखा होता है। यहाँ "Verified" का मतलब है कि आख़िरी राउंड जाँच में पास हुआ, न कि AI ने ऐसा कह दिया।
- बीच वाले कॉलम के ऊपर राउंड स्ट्रिप। "Round 3 of 4", साथ में इस्तेमाल होने वाली जाँच ("Runs npm test — a zero exit code means done") और लगातार वेरिफ़िकेशन फ़ेल होने का काउंटर, जो कहीं न पहुँच रहे loop को रोकता है।
- Rounds टैब। हर राउंड की एक लाइन, जिसमें लिखा होता है कि कितने क्राइटेरिया पूरे हुए ("1 of 3 met", "2 of 3 met", "3 of 3 met")। किसी राउंड को खोलकर देख सकते हैं कि उसमें ठीक कौन-से क्राइटेरिया पास हुए।
- दाईं ओर इंस्पेक्टर, जिसमें Goal, Trigger और Hooks टैब हैं।
- पैनल्स के ऊपर Pause और Cancel, जब आप चाहते हैं कि यह अगली जाँच का इंतज़ार किए बिना अभी रुके।
यूज़ केस 1: डेवलपर जिसे टेस्ट सच में ग्रीन चाहिए
कौन: दिन के आख़िर में एक सोलो डेवलपर, जिसकी JavaScript सूट लाल है और असिस्टेंट बार-बार जीत का ऐलान कर रहा है।
आप Loop खोलते हैं और New session दबाते हैं। New loop run डायलॉग में पहले से तैयार loops की सूची होती है, और "JS suite" सर्च करने पर Get the JS suite green मिलता है। शुरू करने से पहले दाईं ओर का कार्ड बताता है कि यह कैसे काम करता है: Who runs it (एक डिबगर एजेंट जो तीन टेस्ट स्पेशलिस्ट को लीड करता है), How it stops (ज़्यादा से ज़्यादा 4 राउंड, लगातार 3 बार फ़ेल होने पर रुक जाता है) और How it grades itself (npm test चलाता है, और सिर्फ़ ज़ीरो exit code को ही पूरा माना जाता है)।
Start it के नीचे आप Just add it की जगह Run once now चुनते हैं, प्रोजेक्ट और वह फ़ोल्डर चुनते हैं जिसमें एजेंट्स को काम करना है, और Run it now दबाते हैं। फिर Rounds टैब खोलकर देखते रहते हैं। उदाहरण वाले रन में पहले राउंड ने तीन में से एक टेस्ट पूरा किया, दूसरे ने दो और तीसरे ने तीनों, और उसी पल loop अपने आप रुक गया और सेशन Verified मार्क हो गया।
आख़िर में आपके पास कोई चैट मैसेज नहीं होता जो फ़िक्स का दावा करे, बल्कि राउंड-दर-राउंड रिकॉर्ड होता है कि कौन-सा टेस्ट कब पास हुआ, जिसे आपके अपने टेस्ट रनर ने ग्रेड किया। इसी सूची में Python, Go, Rust और Java सूट, टाइप एरर, lint और flaky टेस्ट के लिए भी loops हैं।
यूज़ केस 2: मार्केटर जिसे हर वर्किंग डे कॉम्पिटिटर रिपोर्ट चाहिए
कौन: मार्केटिंग या प्रोडक्ट से कोई, जो कॉम्पिटिटर साइट्स हाथ से चेक करता है और कोड नहीं लिखता।
उसी New loop run डायलॉग में सबसे ऊपर वाले सेक्शन का नाम "Start here — these need nothing set up" है, और Watch the competitors उसी में है, क्योंकि यह सिर्फ़ वेब पर सर्च करता है और आपकी फ़ाइलों को कभी नहीं छूता। Goal for this run में आप लिखते हैं कि किन पर नज़र रखनी है और क्या देखना है (जैसे कीमतें, नए फ़ीचर और हायरिंग), Run once now चुनते हैं और Run it now दबाते हैं। पहली रिपोर्ट में सिर्फ़ वही होता है जो बदला है, हर लाइन पर तारीख़ और सोर्स के साथ, और किसी कंपनी के अपने बारे में किए गए दावों को अनवेरिफ़ाइड मार्क किया जाता है।
इसे बार-बार चलाने के लिए आप Trigger टैब खोलते हैं और Add a schedule दबाते हैं। Run this on a schedule डायलॉग में प्रीसेट होते हैं (Every 30 min, Hourly, Daily 09:00, Weekdays 09:00), यह cron लाइन और अगले तीन रन का समय दिखाता है, और दो काम के सवाल पूछता है: अगर अगला रन आने तक पिछला रन चल ही रहा हो तो क्या करें (Skip it, या Wait, then run), और अगर कंप्यूटर स्लीप में था तो क्या करें (Up to an hour late, Up to 12 hours late, या However late)।
Save schedule के बाद Trigger टैब में "On a schedule" और अगले रन का समय दिखता है। अब हर वर्किंग डे की सुबह उसके लिए एक रिपोर्ट तैयार रहती है, बिना टर्मिनल खोले। शेड्यूल तभी चलते हैं जब डेस्कटॉप ऐप खुला हो, और इसी के लिए कैच-अप सेटिंग है।
यूज़ केस 3: टीम लीड जिसके वर्कफ़्लो को ब्रांच करना है
कौन: एक लीड जो चाहता है कि किसी बड़े बदलाव की हर फ़ाइल अलग से रिव्यू हो, फिर एक मर्ज की हुई रिपोर्ट बने, और कोई भी ऐसा काम जो वापस न हो सके, उससे पहले इंसानी साइन-ऑफ़ हो।
यहीं पर Loop सही ढाँचा नहीं रहता। Loop हर राउंड में एक ही प्लान दोहराता है, जबकि इस लीड को हर फ़ाइल के लिए एक रिव्यूअर, फिर एक मर्ज स्टेप और कभी-कभी अप्रूवल के लिए रुकना चाहिए। यह Graph का काम है।
आप Graph खोलते हैं और सूची के बगल वाला प्लस बटन दबाते हैं। Create a Graph दो रास्ते देता है: Start with a working graph (एक सुरक्षित, चलने लायक प्रोग्राम जिसे आप बाद में बदलते हैं) या Choose a starter। Starters आम पैटर्न के तैयार उदाहरण हैं, हर एक के साथ छोटा-सा नोट कि कब इस्तेमाल करें। Review each item, then merge हर आइटम के लिए एक एजेंट एक साथ चलाता है और फिर एक बार मर्ज करता है। Triage and route किसी इनपुट को एक बार क्लासिफ़ाई करके ठीक एक स्पेशलिस्ट को भेजता है। Propose, ask, then apply एक बदलाव तैयार करता है, इंसान के जवाब के लिए रुकता है और सिर्फ़ हाँ मिलने पर ही आगे बढ़ता है।
प्रोग्राम खुद कोड है, ड्रैग-एंड-ड्रॉप डायग्राम नहीं, क्योंकि ब्रांचिंग और सीमित रीट्राई असली कंट्रोल फ़्लो हैं। आमतौर पर आप Maestro या किसी एजेंट से इसे लिखवाते या बदलवाते हैं, और रोज़मर्रा में जो मायने रखता है उसे Configure session में संभालते हैं: Maximum agents at once, टोकन चेतावनी, Hard token ceiling, डिफ़ॉल्ट इनपुट, और हर स्टेप कौन-सा एजेंट और मॉडल इस्तेमाल करेगा।
चलने पर रन पैन में तीन टैब होते हैं। Run स्टेप्स को लाइव दिखाता है, और आप Pause, Resume या Cancel कर सकते हैं। अगर graph किसी अप्रूवल स्टेप पर पहुँचता है, तो एक कार्ड Approve या Decline पूछता है, और इंतज़ार के दौरान बाकी पैरलल काम चलता रहता है। Changes में वे फ़ाइलें होती हैं जो रन ने बनाईं या बदलीं, और इनमें से कुछ को undo किया जा सकता है। History में पिछले रन होते हैं, तो फ़ेल हुआ रन और उसे ठीक करने वाला दोबारा का रन साथ-साथ दिखते हैं। लीड के पास एक ऐसा रिव्यू होता है जिसे दोहराया जा सके और जिसके सभी रन और फ़ाइल बदलाव बाद में जाँचे जा सकें। Graphs ब्राउज़र में पढ़े जा सकते हैं, लेकिन चलाने के लिए डेस्कटॉप ऐप चाहिए।
Loop और Graph एक-दूसरे को काम कहाँ सौंपते हैं
दोनों में से कोई अकेले काम नहीं करता। Loop के Team roster में एजेंट्स Agent team और Agent Registry से आते हैं, और loop खुद एक दोबारा इस्तेमाल होने वाला प्रीसेट है जिसे आप osStudio में वर्ज़न कर सकते हैं, इसलिए क्वालिटी थ्रेशोल्ड या रीट्राई लिमिट बढ़ाने पर चुपचाप बदलाव नहीं, बल्कि हिस्ट्री बनती है। Graph को बनाते समय एक स्थिर आइडेंटिफ़ायर इसीलिए दिया जाता है ताकि loops और दूसरे graphs उसे कॉल कर सकें, यानी शेड्यूल किया हुआ Loop 9:00 बजे एक ब्रांचिंग Graph शुरू कर सकता है। Message में loops और graphs लोगों और अकेले एजेंट्स के साथ किसी चैनल के सदस्य बन सकते हैं, जिससे उनके अपडेट टीम के रोज़ वाले रूम में ही आते हैं। शेड्यूलिंग के बारे में और गहराई से जानने के लिए देखें cron पर एजेंट शेड्यूल करना और एजेंट ट्रिगर।
नए लोग जो सवाल पूछते हैं
क्या Loop बस एक cron job है?
नहीं। शेड्यूल उसका सिर्फ़ एक वैकल्पिक हिस्सा है। Loop यानी टीम, लक्ष्य और जाँच, साथ में राउंड की सीमाएँ, और यह हिसाब रखता है कि हर राउंड ने कौन-से क्राइटेरिया पूरे किए। आप इसे एक बार हाथ से चला सकते हैं और कभी कोई ट्रिगर न दें।
अगर Loop भी एजेंट्स को पैरलल चला सकता है, तो मुझे Graph की ज़रूरत क्यों है?
फ़र्क पैरललिज़्म का नहीं है। Graph तब चुनें जब अगला स्टेप पिछले के नतीजे पर निर्भर हो: किसी एक स्पेशलिस्ट को भेजना, सिर्फ़ फ़ेल हुआ हिस्सा दोबारा चलाना, किसी इंसान की हाँ का इंतज़ार करना, या कोई दूसरा वर्कफ़्लो कॉल करना। अगर हर रन एक ही स्टेप्स से गुज़रता है, तो Loop आसान है।
क्या कोई loop हमेशा चलता रह सकता है और मेरा API बजट ख़त्म कर सकता है?
हर तैयार loop की राउंड की एक ऊपरी सीमा होती है और वह लगातार तय संख्या में फ़ेल होने पर रुक जाता है, और कार्ड शुरू करने से पहले ही दोनों दिखा देता है। Graphs की सेशन सेटिंग्स में Maximum agents at once और Hard token ceiling होते हैं।
क्या मुझे कोड लिखना पड़ेगा?
Loops के लिए नहीं: आप एक चुनते हैं, और डायलॉग में लक्ष्य और ट्रिगर सेट करते हैं। Graph का प्रोग्राम कोड है, लेकिन आप किसी starter से शुरू कर सकते हैं, Maestro या किसी एजेंट से उसे एडिट करवा सकते हैं, और प्रोग्राम को छुए बिना इनपुट, लिमिट और हर स्टेप के एजेंट बदल सकते हैं।
दोनों को आप डेस्कटॉप ऐप में आज़मा सकते हैं, जो osfoundry.io/hi/download पर मिलता है।





