কয়েক মাস আগে আমি [আমার এজেন্টিক স্ট্যাক](/posts/what-my-agentic-stack-actually-does) সম্পর্কে লিখেছিলাম: একটি প্রাইভেট মনোরেপো যেখানে AI এজেন্টরা আমার ইমেল, পেমেন্ট এবং ডিপ্লোয়মেন্টগুলি পরিচালনা করে, [Neotoma](https://neotoma.io) নীচে স্ট্রাকচার্ড মেমরি হিসেবে। সেই পোস্টটি একটি প্রতিশ্রুতিতে শেষ হয়েছিল। আমি বলেছিলাম যে আমি কৌশল স্তর, এবং আর্কিটেকচারটি সফ্টওয়্যার দ্বারা সেই ভূমিকাটি প্রতিস্থাপনযোগ্য করার জন্য ডিজাইন করা হয়েছিল। এটা করা নিয়েই এই পোস্ট।

[Ateles](https://github.com/markmhendrickson/ateles) হল আমার দ্বিতীয় প্রোডাক্ট, নিওটোমার পরে, এবং এটি সরাসরি এর উপরে তৈরি হয়। এটি একটি ব্যক্তিগত এজেন্ট ঝাঁক। যেখানে পুরানো স্ট্যাক প্রতিটি কাজের জন্য লুপে আমার সাথে প্রতি সেশনে একজন এজেন্ট ছিল, অ্যাটেলস হল ভূমিকা দ্বারা সংজ্ঞায়িত এজেন্টদের একটি স্থায়ী বহর, নিওটোমার মাধ্যমে সমন্বিত, লঞ্চের অধীনে প্রতিদিন চলছে। প্রতিটি এজেন্টকে ড্রাইভ করা এবং এমন একটি দলকে পরিচালনা করার মধ্যে পার্থক্য যা ইতিমধ্যে তার কাজগুলি জানে৷

এই পোস্টটি ব্যাখ্যা করে যে আমি কেন এটি তৈরি করেছি, এটি কীভাবে কাজ করে এবং এটি কোথায় যাচ্ছে।

## কেন স্ট্যাক স্কেলিং বন্ধ করে দিয়েছে

ট্রিগার ভলিউম ছিল. ফেব্রুয়ারির শেষের দিকে নিওটোমার [ডেভেলপার রিলিজ](/পোস্ট/নিওটোমা-ডেভেলপার-রিলিজ) হওয়ার পর, আমার মনোযোগ তিনটি মোড জুড়ে বিভক্ত হয় যেগুলি খুব বেশি ভাগ করে না: পণ্য তৈরি করা, বিপণন করা এবং প্রাথমিক ব্যবহারকারীদের সাথে সম্পর্ক পরিচালনা করা। আমি পেশাগতভাবে এবং ব্যক্তিগতভাবে আমার জীবন সম্পর্কে নিওটোমাকে আরও বেশি করে প্রসঙ্গ খাওয়াচ্ছিলাম এবং মেমরিটি যত ভাল হয়েছে, যে কোনও একক এজেন্ট এটির সাথে আরও বেশি কাজ করতে পারে। যে সীমাবদ্ধতা অপসারণ না, এটি এটি সরানো. সীমা আর ছিল না এজেন্টরা যা জানত। আমি ছিলাম, একমাত্র তারা যা জানত তা কাজে পরিণত করেছিলাম, এক সময়ে একটি সেশন।

পুরানো পদ্ধতিটি ছিল রেপো-নির্দিষ্ট নিয়ম এবং দক্ষতার একটি সেট। তারা আমাকে পদ্ধতিতে নিজেকে পুনরাবৃত্তি এড়াতে দেয়। একটি দক্ষতা ইমেল ট্রাইজ বা একটি ওয়েবসাইট স্থাপনের পদক্ষেপগুলিকে সংজ্ঞায়িত করে এবং যেকোন সেশন এটিকে নিওটোমায় ইতিমধ্যেই প্রেক্ষাপটের বিরুদ্ধে চালাতে পারে। সেশনগুলি ব্যস্ত না হওয়া পর্যন্ত এটি কাজ করেছিল।

ব্যর্থতা নির্দিষ্ট ছিল. যখন একটি জেনেরিক এজেন্ট প্রতিটি নিয়ম এবং প্রতিটি ভূমিকা একবারে বহন করে, তখন এটি তাদের সকলকে সমানভাবে ধরে রাখে না। যে কোন মোড় এ এটি এক ধরনের কাজের দিকে ঝুঁকে পড়ে এবং বাকিটা স্লাইড করতে দেয়। এটি ইমেলটি ভালভাবে খসড়া করে এবং আমি কীভাবে সাইন অফ করব সে সম্পর্কে স্থায়ী নিয়ম ভুলে যায়। এটি বাগ সংশোধন করে এবং রিগ্রেশন পরীক্ষা এড়িয়ে যায়। কোন প্রতিপক্ষ চেক এছাড়াও ছিল. একজন এজেন্ট তার নিজের কাজ পরিকল্পনা, সম্পাদন এবং পর্যালোচনা করেছে, যখন এটি আত্মবিশ্বাসের সাথে ভুল ছিল তখন এটি ধরার কিছু নেই।

আরও দুটি জিনিস একই দিকে ঠেলে দিয়েছে। আমি ডিফল্টভাবে আমার পণ্যের ক্রিয়াকলাপগুলিকে GitHub-এ সরিয়ে নিয়েছি, সরাসরি প্রধান থেকে কমিট করার পরিবর্তে সমস্যা এবং পুল অনুরোধগুলি ব্যবহার করে। এটি আংশিকভাবে [আমি তৈরি করা ইস্যু পাইপলাইন](/posts/agent-to-agent-issue-resolution-with-humans-at-the-edges) দ্বারা বাধ্য করা হয়েছিল, যা ব্যবহারকারীদের এবং তাদের এজেন্টদের কাছ থেকে আসল রিপোর্টগুলিকে Neotoma এবং GitHub-এ রুট করা শুরু করে৷ এবং আমি চেয়েছিলাম যে আমার উন্নয়ন প্রক্রিয়া জনসমক্ষে সুস্পষ্ট হবে, যাতে নিওটোমা ব্যবহার করা লোকেরা ঠিক কী কাজ চলছে তা দেখতে পারে। তারা উভয়ই ডিজাইন, প্রোডাক্ট ম্যানেজমেন্ট, QA এবং রিলিজ জুড়ে বিশেষ এজেন্টের একটি ক্রম চায়। এক এজেন্ট এটা সব করছেন বিন্দু পরাজিত.

তাই Ateles হল একটি নৌবহর ঘোরানোর সিদ্ধান্ত, এবং সেই বহরটিকে নিওটোমাতেই সংজ্ঞায়িত করা।

## নিওটোমা ফ্যাব্রিক হিসাবে, শুধু স্মৃতি নয়

যে পদক্ষেপটি অ্যাটেলসকে আলাদা করে তোলে তা হল নিওটোমা একবারে দুটি জিনিস ধরে রাখে। এটি ঝাঁকের প্রয়োজনের অপারেশনাল প্রেক্ষাপট ধারণ করে, একই তথ্য যা আমার পুরানো স্ট্যাক পড়ে এবং লিখেছিল। এবং এটি ঝাঁকটি নিজেই ধরে রাখে।

এজেন্ট হল Neotoma সত্তা। প্রতিটি একটি প্রম্পট, একটি টুল অনুমোদিত তালিকা এবং সক্ষমতা অনুদানের একটি সেট সহ একটি `এজেন্ট_সংজ্ঞা`। একটি এজেন্ট কীভাবে আচরণ করে তা আপডেট করা সেই সত্তার বিরুদ্ধে একটি `সঠিক()` কল, সম্পূর্ণ সংস্করণ ইতিহাস এবং লেখকের বৈশিষ্ট্য সহ। কোন প্রতিশ্রুতি, কোন পুনঃনিয়োগ. ডিস্কের SKILL.md ফাইলগুলি সেই সত্তাগুলির আয়না তৈরি করে, উৎস নয়।

তাদের সম্পর্ক নিওটোমা সত্তাও। ঝাঁকটির একটি শ্রেণিবিন্যাস রয়েছে, এটি একটি গাছ হিসাবে প্রকাশ করা হয়, তাই একজন সমন্বয়কারী জানেন যে এটি কোন এজেন্টকে প্রেরণ করে এবং একটি টাস্ক জানে কোন এজেন্ট এটির মালিক। এবং কাজটি নিজেই নিওটোমা সত্তা: কাজ, পরিকল্পনা, কর্মপ্রবাহের সংজ্ঞা, অংশগ্রহণের রেকর্ড। একজন এজেন্ট একটি কাজ বাছাই করে, এটি করে এবং ফলাফলটিকে তার পরিচয়ের জন্য দায়ী একটি পর্যবেক্ষণ হিসাবে আবার লিখে।

ফলাফল সবকিছুর জন্য এক বিশ্ব গ্রাফ। ঝাঁক যে তথ্যের উপর কাজ করে, ঝাঁক যে তাদের উপর কাজ করে তার সংজ্ঞা এবং এটি কী করেছে তার রেকর্ড সবই একই সংযোজন-শুধু স্টোরে বাস করে। এটি পুরো জিনিসটিকে তিনটি বৈশিষ্ট্য দেয় যা আমি যত্নশীল। এটি স্বচ্ছ, কারণ প্রতিটি ক্রিয়া একটি বৈশিষ্ট্যযুক্ত পর্যবেক্ষণ যা আপনি আবার পড়তে পারেন। এটি নিরীক্ষণযোগ্য, কারণ আপনি যেকোন উইন্ডোতে যেকোন এজেন্টের অ্যাকশন রিপ্লে করতে পারেন। এবং এটি বিপরীত, কারণ কিছু জায়গায় সত্য ওভাররাইট করে না। যদি একজন এজেন্ট একটি খারাপ কল করে, আমি ঘটনাটি খুঁজে বের করতে পারি যেটি এটি ঘটিয়েছে, রাষ্ট্রটি প্রত্যাবর্তন করতে এবং যে নিয়মটি এটির দিকে পরিচালিত করেছিল তা একবার সংশোধন করতে পারি৷

আইডেন্টিটি এমন একটি অংশ যা অ্যাট্রিবিউশনকে উচ্চাভিলাষী না করে বাস্তব করে তোলে। প্রতিটি এজেন্টের একটি [AAuth](/posts/know-which-of-your-agents-wrote-what) কী-পেয়ার থাকে এবং প্রতিটি টুল কলে স্বাক্ষর করে। জোতা অভিনয় করার আগে স্বাক্ষর যাচাই করে এবং যারা আসলে GitHub-এ অভিনয় করেছে তাদের সাথে অভিনয় করার দাবি করেছে। একজন কোড-রাইটিং এজেন্ট আর শুধু আমার মতো কাজ করে না। এটি নিজেই কাজ করে, এবং লগ তাই বলে।

## এজেন্ট, ভূমিকা দ্বারা

ঝাঁকটি স্তরে সংগঠিত হয়। T1 হল হোস্ট: প্রক্রিয়া যা একটি চ্যানেলের মালিক এবং এজেন্টদের জন্ম দেয়, বর্তমানে আমি যাদের সাথে কথা বলেছি তাদের জন্য OpenClaw এবং ব্যাকগ্রাউন্ডের জন্য চালু করা হয়েছে। এটি অবকাঠামো, ভূমিকা সহ একটি এজেন্ট নয়। এজেন্টরা নিজেরাই এর উপরে তিন স্তরে চলে। T2 এজেন্ট সর্বদা চালু থাকে এবং একটি ব্যক্তিত্ব ধরে রাখে: অ্যাটেলেস নিজেই যার সাথে আমি কথা বলি, এবং এটিই একমাত্র এজেন্ট যে আমাকে পেজ করে। T3 ডেমন হল ইভেন্ট-চালিত ব্যাকগ্রাউন্ড প্রক্রিয়া যার কোনো ব্যক্তিত্ব নেই, প্রতিটি নিওটোমা ইভেন্ট বা একটি বাহ্যিক ওয়েবহুকের সদস্য। T4 এজেন্টরা রাষ্ট্রহীন, প্রতি টাস্কের জন্ম দেয়, একটি স্থিতিশীল পরিচয় এবং মেমরির সাথে তারা নিওটোমাকে জিজ্ঞাসা করে।

আজ চলমান কিছু ভূমিকা:

**পণ্য।** একজন সমন্বয়কারী ডেমন নিওটোমা থেকে ওয়ার্কফ্লো সংজ্ঞা পড়ে এবং ক্রমানুসারে গেট পাঠায়: নকশা, পণ্য ব্যবস্থাপনা, QA, প্রকাশ। কোডের কাজ একটি সমস্যা কর্মীর কাছে যায় যা রিপোজ জুড়ে পুল অনুরোধগুলি খোলে। প্রতিটি পুল অনুরোধ একটি পৃথক পর্যালোচক এজেন্টের কাছ থেকে একটি বেসলাইন পর্যালোচনা পায়, ডোমেন বিশেষজ্ঞরা তাদের মালিকানাধীন পাথগুলিতে ফ্যানিং করে। এগুলিকে বিভক্ত করার বিন্দু হল প্রতিপক্ষের চেক একক এজেন্ট কখনই করেনি। যে কোডটি লিখছে সে এটি পরিষ্কার করছে না।

**ফাইনান্স।** একটি পুনরাবৃত্ত-পেমেন্ট ডেমন ক্যালেন্ডার ইভেন্ট এবং টাস্কের নির্ধারিত তারিখ দ্বারা ট্রিগার করা ওয়াইজ এবং বিটকয়েন স্থানান্তর চালায়, প্রতিটি প্রাপক এবং কোডের পরিবর্তে পেমেন্ট প্রোফাইল সত্তা থেকে লোড করা পরিমাণ। একটি নতুন পুনরাবৃত্ত অর্থ যোগ করা একটি নতুন সত্তা, একটি প্রতিশ্রুতি নয়। একটি অর্থ উপদেষ্টার ভূমিকা এবং একটি ট্যাক্স-এন্ড-ফাইলিং ভূমিকা বাজেট এবং পুনর্মিলনের জন্য সংজ্ঞায়িত করা হয়।

**আইনি এবং সম্মতি।** একটি আইনি ভূমিকা ঝুঁকি মূল্যায়ন এবং শর্তাবলী পর্যালোচনা কভার করে। একটি সম্মতি ভূমিকা গোপনীয়তা এবং ডেটা শাসন কভার করে। এই মুহুর্তে একটি ঝাঁক মানুষের তথ্যের উপর কাজ করতে পারে, যা আমার কাজ করে।

**কৌশল।** এই ভূমিকাটি আমি শেষ পোস্টে আমার হিসাবে বর্ণনা করেছি, এবং এটি আমি সবচেয়ে ইচ্ছাকৃতভাবে হস্তান্তর করছি। এই হ্যান্ডঅফটি হল একটি যুক্তির কংক্রিট সংস্করণ যা আমি [The Human Inversion](/posts/series/the-human-inversion) এ করেছি: এজেন্টরা যখন কার্য সম্পাদনের মাঝামাঝি শুষে নেয়, মানুষের লিভারেজ শেষ পর্যন্ত চলে যায়, তীক্ষ্ণ মান প্রবেশ করে এবং আরও ঘনত্বের বিচার বেরিয়ে আসে। স্বায়ত্তশাসন পরিকল্পনা অনুযায়ী ক্রমাঙ্কিত হয়, বিশ্বব্যাপী নয়। একটি কার্যকরী নীতি সত্তা ঘোষণা করে, একটি প্রদত্ত পরিকল্পনার জন্য, একজন এজেন্টকে নিজে থেকে কী করার অনুমতি দেওয়া হয়েছে, এটিকে কী গুণমানের বারটি পরিষ্কার করতে হবে এবং এটিকে কোথায় থামতে হবে এবং এগিয়ে যাওয়ার আগে আমার সাথে চেক করতে হবে৷ বর্ধিতকরণ শৃঙ্খল ভারপ্রাপ্ত এজেন্ট থেকে একজন ডোমেন বিশেষজ্ঞ থেকে একজন সংবিধান রক্ষক পর্যন্ত আমার কাছে চলে, এবং প্রতিটি রেজোলিউশন একটি সত্তা হিসাবে আবার লেখা হয় যাতে পরবর্তী উদাহরণটি রায়ের উত্তরাধিকার পায়।

এগুলোর পিছনে ইনজেশন এবং সাপোর্ট ডেমনগুলি থাকে যা গ্রাফকে ফিড রাখে: ইমেল ট্রাইজ, অডিও ইম্পোর্ট, ক্যালেন্ডার প্রিপ, হেলথ অ্যান্ড ফিটনেস, ইস্যু ট্রাইজ। প্রতিটি একটি ছোট প্রক্রিয়া যা একটি অন্তর্মুখী সংকেতকে নিওটোমা সত্তায় পরিণত করে যা বাকী ঝাঁক কাজ করতে পারে।

## টাস্ক মেরুদণ্ড

বহরের সাথে যা বাঁধে তা হল টাস্ক ম্যানেজমেন্ট, এবং এটি ইচ্ছাকৃতভাবে বিরক্তিকর। একটি কাজ একটি সত্তা. এটির একটি মালিক, একটি রাষ্ট্র, একটি অগ্রাধিকার এবং কার জন্য এটি কার্যকর করা হয়েছিল তার একটি রেকর্ড রয়েছে৷ গ্রুপের কাজগুলি পরিকল্পনা করে এবং তাদের নিজস্ব সিদ্ধান্ত এবং পরবর্তী পদক্ষেপগুলি বহন করে। ওয়ার্কফ্লো সংজ্ঞা পর্যায় এবং গেট ঘোষণা করে যে কাজের একটি অংশের মধ্য দিয়ে চলে।

কারণ এই সবই অন্য সব কিছুর মতো একই স্টোরে রয়েছে, ঝাঁক আলাদা অর্কেস্ট্রেশন ডাটাবেস ছাড়াই স্থানাঙ্ক করে। একটি ডেমন নিওটোমার ইভেন্ট স্ট্রীমের উপর টাস্ক ইভেন্টে সদস্যতা নেয়। যখন একটি কাজ প্রদর্শিত হয়, এটি ডোমেনের মাধ্যমে সঠিক এজেন্টের কাছে চলে যায়, একটি গেটের পিছনে যা এজেন্টের আত্মবিশ্বাসকে ওজন করে যে একটি ভুল কাজ কতটা ক্ষতি করতে পারে। কম বিস্ফোরণ ব্যাসার্ধ এবং উচ্চ আত্মবিশ্বাস তার নিজের উপর সঞ্চালিত হয়. উচ্চ বিস্ফোরণ ব্যাসার্ধ আমার জন্য অপেক্ষা করছে.

এই মেরুদণ্ড আমি চারপাশে বাকি অভিজ্ঞতা নির্মাণ করছি.

## এই কোথায় যাচ্ছে

আমি যে ইন্টারফেসটি চাই তা বলা সহজ। আমি ঝাঁকটিকে একটি ইনপুট দিই, যে কোনো পরিবহনের মাধ্যমেই, এবং ঝাঁক এটি শোষণ করে এবং কাজ করে। একটি টার্মিনালে একটি প্রম্পট। একটি ইমেইল। একটি টেলিগ্রাম বার্তা। হাঁটার সময় রেকর্ড করা একটি অডিও মেমো, এই পোস্টের জন্য নোটগুলি কীভাবে শুরু হয়েছিল৷ এটির সবকটিই একই গ্রাফে অবতরণ করা উচিত, এবং ঝাঁকটি যে কাজটি বোঝায় সে সম্পর্কে সক্রিয় হওয়া উচিত, আমি এটির মাধ্যমে কোনও এজেন্টের হাত না ধরেছি।

দুটি বৈশিষ্ট্য এটি সম্ভব করে তোলে। ঝাঁককে স্ব-বিকশিত হতে হবে। যেহেতু এটি নতুন প্রেক্ষাপট এবং নতুন ধরণের কাজ গ্রহণ করে, এটির সক্ষমতাগুলি সরবরাহ করা উচিত এবং প্রয়োজনীয় দক্ষতাগুলি বৃদ্ধি করা উচিত, আমার সংশোধনগুলির সাথে খাপ খাইয়ে নেওয়ার পরিবর্তে আমার হাতে এটি পুনরায় কনফিগার করার জন্য অপেক্ষা করা উচিত৷ এবং আমার ইনপুট, এখনও সেই মুহুর্তে প্রয়োজনীয় যে সত্যই বিচারের প্রয়োজন, কখনও দুবার দেওয়া উচিত নয়। আমি একবার জিনিসগুলি করার একটি উপায় সংশোধন করি, এটি একটি সত্তা হয়ে যায় এবং সংশোধন থাকে।

কাছাকাছি রোডম্যাপ নাগাল সম্পর্কে. অ্যাটেলস আমার নিজের ব্যবহারের জন্য তৈরি করা হয়েছিল, তাই এটির একটি ন্যায্য পরিমাণ এখনও একজন অপারেটর ধরে নেয়, আমি। আমি [এটি ইন্সটলযোগ্য এবং মাল্টি-অপারেটরের দিকে চালিত করছি](https://github.com/markmhendrickson/ateles/blob/main/docs/multi_tenant.md): একটি ঝাঁক অন্য কেউ কাঁটাচামচ করতে পারে, তাদের নিজস্ব নিওটোমাকে নির্দেশ করতে পারে, তাদের নিজস্ব প্রসঙ্গ সত্তা সরবরাহ করতে পারে এবং চালাতে পারে। কারণ এজেন্টরা নীতি অনুসারে অপারেটর-অজ্ঞেয়বাদী এবং কোডে অপারেটর-নির্দিষ্ট কিছুই বেক করা হয় না, কাঁটাচামচ বেশিরভাগ ক্ষেত্রেই প্রেক্ষাপটের বিষয়, পুনর্লিখন নয়। সত্যিকারের নতুন কাজটি একক ভাড়াটেদের মধ্যে একাধিক মানুষকে সমর্থন করছে, এই কারণেই ভাড়াটেদের সীমানা পরে রেট্রোফিট করার পরিবর্তে এখন ডিজাইন করা হয়েছে।

নিওটোমা এমন এজেন্ট তৈরি করেছে যা মনে রাখে, এবং অ্যাটেলস সেই স্মৃতিই সম্ভব করেছে: একটি ঝাঁক যা প্রতিটি পদক্ষেপের মাঝখানে আমাকে ছাড়াই এটিতে কাজ করতে পারে। দুজনে একসাথে উঠে। ভাল মেমরি আমি অতীত সরানো একটি সমাপ্ত সমস্যা নয়. এটি এমন একটি সাবস্ট্রেট যার উপর পুরো ঝাঁক দাঁড়িয়ে আছে, এবং নিওটোমা যা ধরে রাখতে পারে এবং সমাধান করতে পারে তার প্রতিটি লাভ হল ঝাঁক যা করতে পারে তার একটি লাভ। স্মৃতিশক্তির উন্নতি ঘটতে থাকে, এবং ঝাঁক তার সাথে উন্নতি করতে থাকে।