कुछ महीने पहले मैंने [मेरे एजेंटिक स्टैक](/posts/what-my-agentic-stack-actually-does) के बारे में लिखा था: एक निजी मोनोरेपो जहां एआई एजेंट मेरे ईमेल, भुगतान और तैनाती को संभालते हैं, नीचे संरचित मेमोरी के रूप में [नियोटोमा](https://neotoma.io) है। वह पोस्ट एक वादे पर ख़त्म हुई. मैंने कहा कि मैं रणनीति परत था, और वास्तुकला को उस भूमिका को सॉफ़्टवेयर द्वारा प्रतिस्थापित करने योग्य बनाने के लिए डिज़ाइन किया गया था। इसे करने के बारे में यह पोस्ट है.

[एटेल्स](https://github.com/markmhendrickson/ateles) नियोटोमा के बाद मेरा दूसरा उत्पाद है, और यह सीधे इसके शीर्ष पर बनता है। यह एक निजी एजेंट झुंड है. जहां पुराने स्टैक में प्रत्येक कार्य के लिए लूप में मेरे साथ प्रति सत्र एक एजेंट होता था, एटेल्स भूमिका द्वारा परिभाषित एजेंटों का एक स्थायी बेड़ा है, जो नियोटोमा के माध्यम से समन्वित होता है, जो लॉन्च के तहत दैनिक चलता है। यह मेरे द्वारा प्रत्येक एजेंट को चलाने और एक ऐसी टीम को निर्देशित करने के बीच अंतर है जो पहले से ही अपना काम जानती है।

यह पोस्ट बताती है कि मैंने इसे क्यों बनाया, यह कैसे काम करता है, और यह कहाँ जा रहा है।

## स्टैक ने स्केल करना क्यों बंद कर दिया

ट्रिगर वॉल्यूम था. फरवरी के अंत में नियोटोमा की [डेवलपर रिलीज](/पोस्ट/नियोटोमा-डेवलपर-रिलीज) के बाद, मेरा ध्यान तीन तरीकों पर बंट गया, जो ज्यादा साझा नहीं करते: उत्पाद बनाना, उसकी मार्केटिंग करना और शुरुआती उपयोगकर्ताओं के साथ संबंधों को प्रबंधित करना। मैं नियोटोमा को पेशेवर और व्यक्तिगत रूप से अपने जीवन के बारे में अधिक से अधिक संदर्भ दे रहा था, और वह स्मृति जितनी बेहतर होती गई, कोई भी एक एजेंट उसके साथ उतना ही अधिक कर सकता था। इससे बाधा दूर नहीं हुई, बल्कि इसे स्थानांतरित कर दिया गया। अब वह सीमा नहीं थी जो एजेंटों को पता थी। वह मैं ही था, जो वे जो जानते थे उसे एक समय में एक सत्र में क्रियान्वित करता था।

पुराना दृष्टिकोण रेपो-विशिष्ट नियमों और कौशलों का एक सेट था। उन्होंने मुझे प्रक्रिया पर खुद को दोहराने से बचने दिया। एक कौशल ने ईमेल ट्राइएज या वेबसाइट परिनियोजन के चरणों को परिभाषित किया, और कोई भी सत्र इसे पहले से ही नियोटोमा में संदर्भ के विरुद्ध चला सकता है। यह तब तक काम करता रहा जब तक सत्र व्यस्त नहीं हो गए।

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

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

तो एटेल्स ने एक बेड़े को विकसित करने और नियोटोमा में ही उस बेड़े को परिभाषित करने का निर्णय लिया है।

## नियोटोमा कपड़े के रूप में, सिर्फ स्मृति नहीं

जो कदम एटेल्स को अलग बनाता है वह यह है कि नियोटोमा एक साथ दो चीजें रखता है। इसमें झुंड के लिए आवश्यक परिचालन संदर्भ मौजूद है, वही तथ्य जो मेरे पुराने स्टैक ने पढ़े और लिखे थे। और यह झुंड को ही पकड़ लेता है।

एजेंट नियोटोमा इकाइयां हैं। प्रत्येक एक `एजेंट_डेफिनिशन` है जिसमें एक संकेत, एक उपकरण अनुमति सूची और क्षमता अनुदान का एक सेट है। किसी एजेंट के व्यवहार को अद्यतन करना उस इकाई के विरुद्ध पूर्ण संस्करण इतिहास और लेखक एट्रिब्यूशन के साथ एक `सही()` कॉल है। कोई प्रतिबद्धता नहीं, कोई पुन: तैनाती नहीं। डिस्क पर SKILL.md फ़ाइलें उन संस्थाओं के उत्पन्न दर्पण हैं, स्रोत नहीं।

उनके रिश्ते भी नियोटोमा इकाइयां हैं। झुंड में एक पदानुक्रम होता है, जिसे एक पेड़ के रूप में व्यक्त किया जाता है, इसलिए एक समन्वयक जानता है कि वह किन एजेंटों को भेजता है और एक कार्य जानता है कि कौन सा एजेंट उसका मालिक है। और कार्य स्वयं नियोटोमा इकाइयाँ हैं: कार्य, योजनाएँ, कार्यप्रवाह परिभाषाएँ, भागीदारी रिकॉर्ड। एक एजेंट एक कार्य चुनता है, उसे करता है, और परिणाम को उसकी पहचान के लिए जिम्मेदार अवलोकन के रूप में वापस लिखता है।

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

पहचान वह हिस्सा है जो एट्रिब्यूशन को आकांक्षा के बजाय वास्तविक बनाता है। प्रत्येक एजेंट के पास एक [AAuth](/posts/know-who-of-your-agents-wrote-what) कुंजीयुग्म होता है और प्रत्येक टूल कॉल पर हस्ताक्षर करता है। हार्नेस अभिनय करने से पहले हस्ताक्षर की पुष्टि करता है और उन लोगों को रिकॉर्ड करता है जिन्होंने वास्तव में GitHub पर अभिनय करने वालों के साथ अभिनय करने का दावा किया है। एक कोड-लेखन एजेंट अब केवल मेरे जैसा कार्य नहीं करता है। यह स्वयं के रूप में कार्य करता है, और लॉग ऐसा कहता है।

## एजेंट, भूमिका के अनुसार

झुंड को स्तरों में व्यवस्थित किया गया है। T1 मेजबान है: वह प्रक्रिया जो एक चैनल का मालिक है और एजेंटों को जन्म देती है, वर्तमान में जिनसे मैं बात करता हूं उनके लिए OpenClaw और पृष्ठभूमि वालों के लिए लॉन्च किया गया है। यह बुनियादी ढांचा है, कोई भूमिका वाला एजेंट नहीं। एजेंट स्वयं इसके ऊपर तीन स्तरों में चलते हैं। T2 एजेंट हमेशा सक्रिय रहते हैं और एक व्यक्तित्व रखते हैं: एटेल्स ही वह व्यक्ति है जिससे मैं बात करता हूं, और यह एकमात्र एजेंट है जो मुझे पेज करता है। T3 डेमॉन इवेंट-संचालित पृष्ठभूमि प्रक्रियाएं हैं जिनमें कोई व्यक्तित्व नहीं है, प्रत्येक नेओटोमा इवेंट या बाहरी वेबहुक की सदस्यता ली है। T4 एजेंट स्टेटलेस होते हैं, प्रति कार्य के अनुसार उत्पन्न होते हैं, एक स्थिर पहचान और मेमोरी के साथ जो उन्हें नियोटोमा से पूछताछ करके मिलती है।

आज चलने वाली कुछ भूमिकाएँ:

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

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

**कानूनी और अनुपालन।** एक कानूनी भूमिका में जोखिम मूल्यांकन और शर्तों की समीक्षा शामिल है। अनुपालन भूमिका में गोपनीयता और डेटा प्रशासन शामिल है। ये उस समय अधिक मायने रखते हैं जब एक झुंड लोगों के डेटा पर कार्रवाई कर सकता है, जो मेरा करता है।

**रणनीति।** यह वह भूमिका है जिसे मैंने पिछली पोस्ट में अपनी भूमिका के रूप में वर्णित किया था, और यह वह भूमिका है जिसे मैं जानबूझकर सौंप रहा हूं। वह हैंडऑफ़ उस तर्क का ठोस संस्करण है जो मैंने [द ह्यूमन इनवर्ज़न](/पोस्ट/सीरीज़/द-ह्यूमन-इनवर्जन) में दिया था: जैसे-जैसे एजेंट निष्पादन मध्य को अवशोषित करते हैं, मानव का उत्तोलन अंत तक चला जाता है, तेज मानक अंदर जाते हैं और सघन निर्णय सामने आते हैं। स्वायत्तता को योजना के अनुसार अंशांकित किया जाता है, वैश्विक स्तर पर नहीं। एक निष्पादन नीति इकाई किसी दी गई योजना के लिए घोषणा करती है कि एक एजेंट को स्वयं क्या करने की अनुमति है, उसे किस गुणवत्ता पट्टी को साफ़ करना है, और आगे बढ़ने से पहले उसे कहां रुकना होगा और मुझसे जांच करनी होगी। वृद्धि श्रृंखला अभिनय एजेंट से एक डोमेन विशेषज्ञ से मेरे लिए एक संविधान रक्षक तक चलती है, और प्रत्येक संकल्प को एक इकाई के रूप में लिखा जाता है ताकि अगला उदाहरण निर्णय को प्राप्त कर सके।

इनके पीछे अंतर्ग्रहण और समर्थन डेमॉन बैठते हैं जो ग्राफ़ को फीड रखते हैं: ईमेल ट्राइएज, ऑडियो आयात, कैलेंडर तैयारी, स्वास्थ्य और फिटनेस, इश्यू ट्राइएज। प्रत्येक एक छोटी सी प्रक्रिया है जो एक इनबाउंड सिग्नल को नियोटोमा इकाइयों में बदल देती है, बाकी झुंड उस पर कार्य कर सकते हैं।

## कार्य रीढ़

जो चीज़ बेड़े को एक साथ जोड़ती है वह कार्य प्रबंधन है, और यह जानबूझकर उबाऊ है। कार्य एक इकाई है. इसका एक मालिक, एक राज्य, एक प्राथमिकता और इसका एक रिकॉर्ड है कि इसे किसके लिए निष्पादित किया गया था। समूह कार्यों की योजना बनाते हैं और अपने निर्णय और अगले कदम स्वयं उठाते हैं। वर्कफ़्लो परिभाषाएँ उन चरणों और द्वारों की घोषणा करती हैं जिनसे होकर कार्य का एक भाग आगे बढ़ता है।

क्योंकि यह सब बाकी सब चीजों की तरह एक ही स्टोर में है, झुंड एक अलग ऑर्केस्ट्रेशन डेटाबेस के बिना समन्वय करता है। एक डेमॉन नियोटोमा के इवेंट स्ट्रीम पर कार्य इवेंट की सदस्यता लेता है। जब कोई कार्य सामने आता है, तो यह डोमेन के आधार पर सही एजेंट के पास जाता है, एक गेट के पीछे जो एजेंट के विश्वास को मापता है कि गलत कार्रवाई से कितना नुकसान हो सकता है। कम विस्फोट त्रिज्या और उच्च आत्मविश्वास अपने आप चलता है। उच्च विस्फोट त्रिज्या मेरा इंतजार कर रही है।

यह वह रीढ़ है जिसके चारों ओर मैं शेष अनुभव का निर्माण कर रहा हूं।

## यह कहां जा रहा है

मुझे जो इंटरफ़ेस चाहिए वह बताना सरल है। मैं झुंड को निकटतम परिवहन के माध्यम से एक इनपुट देता हूं, और झुंड इसे अवशोषित करता है और कार्य करता है। एक टर्मिनल में एक संकेत. एक ई - मेल। एक टेलीग्राम संदेश. सैर के दौरान रिकॉर्ड किया गया एक ऑडियो मेमो, इस तरह इस पोस्ट के लिए नोट्स की शुरुआत हुई। यह सब एक ही ग्राफ में उतरना चाहिए, और झुंड को उस कार्य के बारे में सक्रिय होना चाहिए, जिसमें मैं किसी भी एजेंट का हाथ न पकड़ूं।

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

निकटतम रोडमैप पहुंच के बारे में है। एटेल्स का निर्माण मेरे स्वयं के उपयोग के लिए किया गया था, इसलिए इसका एक उचित हिस्सा अभी भी एक ऑपरेटर, मुझे लगता है। मैं [इसे इंस्टॉल करने योग्य और मल्टी-ऑपरेटर होने की ओर ले जा रहा हूं](https://github.com/markmhendrickson/ateles/blob/main/docs/multi_tenant.md): एक ऐसा झुंड जिसे कोई और फोर्क कर सकता है, अपने स्वयं के नियोटोमा पर इंगित कर सकता है, अपने स्वयं के संदर्भ संस्थाओं की आपूर्ति कर सकता है, और चला सकता है। चूँकि एजेंट नीति के अनुसार ऑपरेटर-अज्ञेयवादी होते हैं और ऑपरेटर-विशिष्ट कुछ भी कोड में शामिल नहीं किया जाता है, कांटा मामला ज्यादातर संदर्भ का मामला है, न कि पुनर्लेखन का। वास्तव में नया काम एक ही किरायेदार के अंदर एक से अधिक मनुष्यों का समर्थन कर रहा है, यही कारण है कि किरायेदार की सीमा को बाद में फिर से तैयार करने के बजाय अभी डिज़ाइन किया गया है।

नियोटोमा ने ऐसे एजेंट बनाए जो याद रखते हैं, और एटेल्स ने उस स्मृति को संभव बनाया: एक झुंड जो हर कदम के बीच में मेरे बिना उस पर कार्रवाई कर सकता है। दोनों एक साथ उठते हैं. बेहतर स्मृति कोई समाप्त समस्या नहीं है, मैं इससे आगे निकल गया हूँ। यह वह सब्सट्रेट है जिस पर पूरा झुंड खड़ा होता है, और नियोटोमा जो पकड़ सकता है और हल कर सकता है उसमें प्रत्येक लाभ झुंड क्या कर सकता है उसमें एक लाभ है। याददाश्त में सुधार होता रहता है, और झुंड इसके साथ बेहतर होता रहता है।