মূল কনটেন্টে যান
এআই টিউটোরিয়াল

useAgent দিয়ে AI সহকর্মী তৈরি ও নিজস্ব সার্ভারে হোস্ট করুন

জানুন, কীভাবে useAgent Claude Code, Codex এবং OpenCode-কে একটি ইন্টারফেসের মাধ্যমে একত্র করে। এই টিউটোরিয়ালে এর ইভেন্ট-সোর্সড আর্কিটেকচার, নিরাপদ স্যান্ডবক্স, পূর্বশর্ত, স্থানীয় সেটআপ, মৌলিক কর্মপ্রবাহ, প্রোডাকশন সেল্ফ-হোস্টিং, ইন্টিগ্রেশন, যাচাই এবং নির্ভরযোগ্য AI-এজেন্ট ওয়ার্কলোড পরিচালনার কার্যকর পরামর্শ আলোচনা করা হয়েছে।

useAgent দিয়ে AI সহকর্মী তৈরি ও নিজস্ব সার্ভারে হোস্ট করুন
আলফা সতর্কতা: useAgent বর্তমানে সক্রিয়ভাবে উন্নয়নাধীন। রিলিজভেদে API ও স্কিমা পরিবর্তিত হতে পারে, তাই স্থিতিশীলতা গুরুত্বপূর্ণ হলে একটি রিলিজ ট্যাগ পিন করুন।

useAgent কী?

useAgent হলো Claude Code, Codex এবং OpenCode-এর মতো এজেন্ট চালানোর জন্য একটি ওপেন-সোর্স AI সহকর্মী প্ল্যাটফর্ম। শুধু কথোপকথনমূলক উত্তর দেওয়ার পরিবর্তে, এজেন্টগুলো বিচ্ছিন্ন Linux পরিবেশে কাজ করে এবং সম্পূর্ণ ওয়েবসাইট, উপস্থাপনা, স্প্রেডশিট, গবেষণা প্রতিবেদন ও পরীক্ষিত pull request সরবরাহ করতে পারে।

প্রতিটি থ্রেডে একটি টার্মিনাল, রিপোজিটরি, ব্রাউজার এবং noVNC-এর মাধ্যমে দৃশ্যমান ডেস্কটপসহ একটি ওয়ার্কস্টেশন বরাদ্দ হয়। রানগুলো Postgres-এ event-sourced টাইমলাইন হিসেবে উপস্থাপিত হয়, ফলে সম্পন্ন হওয়ার পরও সেগুলো টেকসই, পুনরায় চালানোযোগ্য এবং পরিদর্শনযোগ্য থাকে।

useAgent ওয়ার্কস্পেস ও এজেন্ট কম্পোজার

প্রধান বৈশিষ্ট্য

  • একাধিক এজেন্টের জন্য একটি ইন্টারফেস: প্রোভাইডার-নির্দিষ্ট ইঞ্জিনগুলো একটি ক্যানোনিকাল ইভেন্ট কনট্র্যাক্টের মাধ্যমে যোগাযোগ করে।
  • টেকসই এক্সিকিউশন: ব্যাকএন্ড পুনরায় চালু হলেও রানগুলো টিকে থাকে; পুনরুদ্ধার প্রক্রিয়া সক্রিয় সেশনগুলো পুনরায় পরীক্ষা করে সম্পন্ন কাজ গ্রহণ করতে পারে।
  • বিচ্ছিন্ন Linux স্যান্ডবক্স: প্রতিটি থ্রেড একটি পৃথক ওয়ার্কস্টেশন পায়। Daytona ও CubeSandbox যৌথ স্যান্ডবক্স কনট্র্যাক্ট বাস্তবায়ন করে।
  • বিশ্বস্ত টুল গেটওয়ে: ক্রেডেনশিয়ালগুলো এজেন্ট স্যান্ডবক্সে প্রবেশ না করে কন্ট্রোল প্লেনেই থাকে।
  • মানব অনুমোদন: ধ্বংসাত্মক টুল কলগুলো ওয়েব ইন্টারফেস বা Slack-এ অনুমোদনের জন্য থেমে থাকে; এরপর আর্গুমেন্ট-সংযুক্ত, একবার ব্যবহারযোগ্য সক্ষমতা নিয়ে পুনরায় শুরু হয়।
  • GitHub-ভিত্তিক স্কিল: দলগুলো সংস্করণ-নিয়ন্ত্রিত SKILL.md ফাইল ইমপোর্ট করতে, পরিবর্তন সিঙ্ক্রোনাইজ করতে এবং এজেন্ট টার্নে প্রাসঙ্গিক স্কিলের র‍্যাঙ্ক নির্ধারণ করতে পারে।
  • সাংগঠনিক প্রসঙ্গ: জ্ঞান পুনরুদ্ধারে উদ্ধৃতি অন্তর্ভুক্ত থাকে, আর দলীয় মেমোরি মানব-পর্যালোচিত লার্নিং লেন ব্যবহার করে।
  • নেটিভ আর্টিফ্যাক্ট: প্ল্যাটফর্মটি নেটিভ রেন্ডারারসহ সংস্করণ-নিয়ন্ত্রিত DOCX, XLSX, PPTX ও PDF ফাইল সমর্থন করে।
  • একাধিক প্রবেশ চ্যানেল: ওয়েব অ্যাপ্লিকেশন, Slack, REST API অথবা সময়সূচির মাধ্যমে কাজ আসতে পারে।

আর্কিটেকচার কীভাবে কাজ করে

useAgent তার self-hosted কন্ট্রোল প্লেনকে এজেন্ট যে পরিবেশে কাজ করে, সেখান থেকে পৃথক রাখে। প্রবেশ চ্যানেলগুলো একই রান পাথের মাধ্যমে রান তৈরি করে। ইঞ্জিন অ্যাডাপ্টারগুলো প্রোভাইডার-নির্দিষ্ট কার্যকলাপকে ক্যানোনিকাল ইভেন্টে রূপান্তর করে, আর প্রতিটি থ্রেডকে একটি বিচ্ছিন্ন স্যান্ডবক্স বরাদ্দ করা হয়।

তিনটি আর্কিটেকচারাল বৈশিষ্ট্য বিশেষভাবে গুরুত্বপূর্ণ:

  1. ইঞ্জিন পরিবর্তনযোগ্য: ইঞ্জিন পরিবর্তন করতে থ্রেড, আর্টিফ্যাক্ট বা মেমোরির সাধারণ উপস্থাপনা বদলাতে হয় না।
  2. Postgres হলো সত্যের মূল উৎস: প্রতিটি রান একটি ইভেন্ট লগ হিসেবে সংরক্ষিত হয়, যা পুনরায় চালু হওয়ার পর সঠিক পুনরাবৃত্তি ও পরিদর্শন সম্ভব করে।
  3. সিক্রেট স্যান্ডবক্সের বাইরে থাকে: ইন্টিগ্রেশনগুলো বিশ্বস্ত গেটওয়ের মাধ্যমে টাইপযুক্ত টুল হিসেবে প্রকাশ করা হয় এবং ক্রেডেনশিয়াল কেবল কন্ট্রোল প্লেনেই সংরক্ষিত থাকে।
useAgent সেশন টাইমলাইন ও ওয়ার্কস্পেস

রিপোজিটরি বিন্যাস

  • frontend/-এ সেশন, স্কিল, প্লেবুক, উইকি, আর্টিফ্যাক্ট, অটোমেশন ও সেটিংসের পণ্য ইন্টারফেস রয়েছে।
  • backend/-এ প্রমাণীকরণ, রান অর্কেস্ট্রেশন, ইঞ্জিন অ্যাডাপ্টার, স্যান্ডবক্স, জ্ঞান, মেমোরি, আর্টিফ্যাক্ট ও কানেক্টর রয়েছে।
  • packages/-এ শেয়ার করা ইভেন্ট কনট্র্যাক্ট, ওয়ার্কপিস, আর্টিফ্যাক্ট ফরম্যাট, রেন্ডারার ও সংশ্লিষ্ট প্যাকেজ রয়েছে।
  • docs-site/-এ ডকুমেন্টেশন ওয়েবসাইট রয়েছে।
  • infra/self-host/-এ প্রোভাইডার-স্বাধীন ডিপ্লয়মেন্ট টুলিং এবং Hetzner Terraform রেফারেন্স রয়েছে।
  • memory/-এ ঐচ্ছিক দলীয়-মেমোরি সার্ভিস রয়েছে।

পূর্বশর্ত

স্থানীয় ডেভেলপমেন্ট ইনস্টলেশনের জন্য Bun এবং pgvector এক্সটেনশনসহ Postgres 16 বা তার পরের সংস্করণ প্রয়োজন। সাধারণ Postgres কনটেইনার ইমেজে pgvector অন্তর্ভুক্ত থাকে না, তাই উপযুক্ত pgvector-সক্ষম ইমেজ ব্যবহার করুন।

সরবরাহ করা ডেটাবেস কনটেইনার কমান্ড চালু করতে চাইলে Docker-ও প্রস্তুত থাকা উচিত। নিচের ধাপগুলো useAgent রিপোজিটরির রুট থেকে চালান।

ধাপ 1: pgvector সহ Postgres চালু করুন

আপনার কাছে সামঞ্জস্যপূর্ণ ডেটাবেস না থাকলে Docker-এ একটি চালু করুন:

docker run -d --name useagent-pg -p 5432:5432 \
  -e POSTGRES_HOST_AUTH_METHOD=trust pgvector/pgvector:pg16
export DATABASE_URL=postgres://postgres@localhost:5432/postgres

প্রথম কমান্ডটি 5432 পোর্টে Postgres উন্মুক্ত করে। দ্বিতীয়টি অ্যাপ্লিকেশন ব্যবহৃত সংযোগ স্ট্রিং সেট করে। স্থানীয় ডেভেলপমেন্টের জন্য trust কনফিগারেশন সুবিধাজনক; প্রোডাকশন পরিবেশে যথাযথভাবে সুরক্ষিত ডেটাবেস ক্রেডেনশিয়াল ব্যবহার করা উচিত।

ধাপ 2: ওয়ার্কস্পেসের নির্ভরতা ইনস্টল করুন

শেয়ার করা প্যাকেজ, ব্যাকএন্ড ও ফ্রন্টএন্ড ওয়ার্কস্পেসে নির্ভরতাগুলো পৃথকভাবে ইনস্টল করা হয়:

for workspace in \
  packages/agent-harness packages/artifact-workspace \
  packages/agent-client packages/artifact-formats packages/conformance \
  backend frontend; do
  (cd "$workspace" && bun install)
done

ধাপ 3: ব্যাকএন্ড ও ফ্রন্টএন্ড চালু করুন

দুটি আলাদা টার্মিনাল সেশন খুলে ডেভেলপমেন্টের দুটি প্রক্রিয়া চালু করুন:

bun run dev:backend
bun run dev:frontend

ব্যাকএন্ড 3201 পোর্টে API ও অর্কেস্ট্রেশন সার্ভিস সরবরাহ করে। ফ্রন্টএন্ড 3400 পোর্টে চলে এবং /api/*-এর অধীনে অনুরোধগুলো ব্যাকএন্ডে প্রক্সি করে।

ইন্টারফেসে প্রবেশ করতে ব্রাউজারে http://localhost:3400 খুলুন। প্রোভাইডার ও স্যান্ডবক্সের কনফিগারেশন ভিন্ন হতে পারে, তাই কোনো এজেন্ট ইঞ্জিন সংযুক্ত করা বা এর এক্সিকিউশন পরিবেশ প্রস্তুত করার সময় বর্তমান useAgent ডকুমেন্টেশন অনুসরণ করুন।

ধাপ ৪: কোডবেস যাচাই করুন

ইনস্টলেশনের পর অথবা কোনো পরিবর্তন জমা দেওয়ার আগে পুরো রিপোজিটরির টাইপ চেকার চালান:

bun run typecheck

এই কমান্ডটি রিপোজিটরির প্রতিটি প্যাকেজ পরীক্ষা করে এবং শেয়ার করা কনট্র্যাক্ট, ব্যাকএন্ড ও ফ্রন্টএন্ডের মধ্যে অসামঞ্জস্যপূর্ণ পরিবর্তন শনাক্ত করতে সাহায্য করে।

মৌলিক ব্যবহার

এজেন্ট রান তৈরি করুন

  1. পোর্ট 3400-এ ওয়েব ইন্টারফেস খুলুন।
  2. আপনার প্রয়োজনীয় সম্পূর্ণ ফলাফলটি এজেন্ট কম্পোজারে বর্ণনা করুন।
  3. রান শুরু করুন এবং এর লাইভ ইভেন্ট টাইমলাইন অনুসরণ করুন।
  4. এজেন্ট কাজ করার সময় টার্মিনাল, ব্রাউজার, ডেস্কটপ বা ওয়ার্কস্পেসের কার্যকলাপ পরিদর্শন করুন।
  5. ধ্বংসাত্মক কোনো টুল অপারেশনের অনুমতি দেওয়ার আগে অনুমোদন কার্ড পর্যালোচনা করুন।
  6. সেশন থেকে ফেরত পাওয়া সম্পূর্ণ আর্টিফ্যাক্ট বা রিপোজিটরির কাজ সংগ্রহ করুন।

কোনো কাজকে একটি নির্দিষ্ট ডেলিভারেবলকে কেন্দ্র করে এভাবে নির্ধারণ করা যেতে পারে:

বিষয়টি গবেষণা করুন, প্রাসঙ্গিক উৎসগুলোর উদ্ধৃতি দিন এবং ফলাফলটি একটি কাঠামোবদ্ধ প্রতিবেদন হিসেবে ফেরত দিন।

সফটওয়্যার সংক্রান্ত কাজের ক্ষেত্রে প্রত্যাশিত বাস্তবায়ন ও যাচাই নির্ধারণ করুন:

রিপোজিটরিতে অনুরোধ করা পরিবর্তনটি বাস্তবায়ন করুন, প্রাসঙ্গিক টেস্ট চালান এবং পর্যালোচনার জন্য সম্পূর্ণ কাজ প্রস্তুত করুন।

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

Slack-এর মাধ্যমে কাজ করুন

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

প্রাতিষ্ঠানিক জ্ঞান ও স্কিল ব্যবহার করুন

জ্ঞান, উইকি কনটেন্ট ও দলের স্মৃতি উদ্ধৃতিসহ প্রতিষ্ঠান-নির্দিষ্ট প্রসঙ্গ সরবরাহ করতে পারে। পুনর্ব্যবহারযোগ্য নির্দেশনাগুলো GitHub থেকে সংস্করণ-নিয়ন্ত্রিত SKILL.md স্কিল হিসেবে আমদানি করা যায়। useAgent স্বয়ংক্রিয়ভাবে এসব স্কিল পুনঃসিঙ্ক্রোনাইজ করতে পারে এবং প্রতিটি টার্নে প্রাসঙ্গিক স্কিলগুলোর অগ্রাধিকার নির্ধারণ করতে পারে।

useAgent স্ব-হোস্টিং

AWS, Google Cloud, Azure, Hetzner বা বেয়ার মেটালসহ যেকোনো Linux হোস্টে useAgent চালানো যায়। রিপোজিটরিতে প্রোভাইডার-নিরপেক্ষ ডিপ্লয়মেন্ট স্ক্রিপ্টের পাশাপাশি Terraform দিয়ে তৈরি এক-কমান্ডের Hetzner রেফারেন্স হোস্টও রয়েছে।

Linux হোস্ট প্রস্তুত করা এবং প্রয়োজনীয় মান নির্ধারণের পর রিপোজিটরি থেকে ডিপ্লয়মেন্ট স্ক্রিপ্টটি চালান:

SERVER_IP=<host-ip> PG_PASSWORD=... OPENROUTER_API_KEY=... \
  infra/self-host/deploy-app.sh /path/to/this/repo

প্রোভিশনিং প্রক্রিয়াটি SSH-এর মাধ্যমে লক্ষ্য মেশিনে সংযোগ করে। সম্পূর্ণ প্রোডাকশন নির্দেশিকা ও প্রয়োজনীয় পরিবেশের বিবরণের জন্য infra/self-host/README.md দেখুন; সংক্ষিপ্ত উদাহরণটিকে সম্পূর্ণ নিরাপত্তা কনফিগারেশন হিসেবে বিবেচনা করবেন না।

একটি স্যান্ডবক্স রানটাইম বেছে নিন

  • Daytona: একটি ম্যানেজড স্যান্ডবক্স সার্ভিস, যা যেকোনো ক্লাউডে থাকা কন্ট্রোল-প্লেন হোস্টের সঙ্গে যুক্ত হতে পারে। README-তে এটিকে শুরু করার সবচেয়ে সহজ বিকল্প বলা হয়েছে।
  • CubeSandbox: নিজেদের হার্ডওয়্যারে স্যান্ডবক্স চালাতে এবং সম্পূর্ণ ডেটা লোকালিটি বজায় রাখতে চায় এমন প্রতিষ্ঠানগুলোর জন্য একটি স্ব-হোস্টেড রানটাইম।

উভয় রানটাইম একই স্যান্ডবক্স কনট্র্যাক্টের আড়ালে কাজ করে। ফলে কন্ট্রোল প্লেন কোনো নির্দিষ্ট স্যান্ডবক্স প্রোভাইডারের ওপর মূল রান মডেল নির্ভরশীল না করেই এজেন্টের কাজ পরিচালনা করতে পারে।

উন্নত অপারেশনাল পরামর্শ

  • রিলিজ ট্যাগ নির্দিষ্ট করুন: প্রকল্পটি আলফা পর্যায়ে থাকায় পরিচিত কোনো ট্যাগ নির্দিষ্ট করলে পরিবর্তনশীল API বা স্কিমার কারণে অপ্রত্যাশিত সমস্যা কমে।
  • Postgres সংরক্ষণ করুন: ইভেন্ট লগই রানগুলোর সত্যের উৎস। সেই অনুযায়ী ডেটাবেসের ব্যাকআপ নিন এবং পরিচালনা করুন।
  • গেটওয়েতে ক্রেডেনশিয়াল রাখুন: দীর্ঘমেয়াদি ইন্টিগ্রেশন সিক্রেট স্যান্ডবক্সে কপি করে আর্কিটেকচারের বিকল্প পথ তৈরি করবেন না।
  • সচেতনভাবে অনুমোদন ব্যবহার করুন: ধ্বংসাত্মক কাজের জন্য মানব-নিয়ন্ত্রিত অনুমোদন চালু রাখুন, বিশেষ করে যখন Slack বা সময়সূচির মাধ্যমে রান শুরু হয়।
  • অপারেশন অনুযায়ী স্যান্ডবক্স নির্বাচন করুন: Daytona একটি ম্যানেজড পথ দেয়, আর CubeSandbox স্ব-হোস্টেড এক্সিকিউশন ও ডেটা লোকালিটি সমর্থন করে।
  • নিয়মিত টাইপ চেক চালান: শেয়ার করা কনট্র্যাক্ট একাধিক ওয়ার্কস্পেসে বিস্তৃত, তাই প্যাকেজজুড়ে পরিবর্তনের পর bun run typecheck ব্যবহার করুন।
  • প্রোডাকশন লেন পর্যালোচনা করুন: সম্পূর্ণ ডিপ্লয়মেন্ট নির্দেশিকা infra/self-host/-এর অধীনে রয়েছে এবং সংযোজনভিত্তিক অপরিবর্তনীয়-কনটেইনার রিলিজ লেনের বিবরণ docs/operations/immutable-releases.md-এ দেওয়া আছে।
  • রিকোয়েস্টের প্রবাহ পরিদর্শন করুন: গভীরতর আর্কিটেকচার অধ্যয়নের জন্য রিপোজিটরিতে docs/architecture/request-flow.html-এ একটি ইন্টার‌্যাক্টিভ ডায়াগ্রাম রয়েছে।

ইন্টিগ্রেশন ও ডেলিভারি সারফেস

নেটিভ Slack ও GitHub সাপোর্টের পাশাপাশি প্ল্যাটফর্মটি কানেক্টরের মাধ্যমে Gmail, Linear, Notion ও HubSpot তালিকাভুক্ত করে। OAuth একটি ব্রোকার পরিচালনা করে এবং টোকেন সার্ভার পাশে সিল করা থাকে। ওয়ার্কস্পেস সারফেসগুলোর মধ্যে রয়েছে নলেজ বেস, দলের স্মৃতি, স্কিল, প্লেবুক ও নির্ধারিত অটোমেশন।

GitHub ইন্টিগ্রেশন App অথেন্টিকেশন, রিপোজিটরি ক্লোনিং ও pull-request ওয়ার্কফ্লো সমর্থন করে। ইন্টিগ্রেশন যাই হোক, টুল কলগুলো বিশ্বস্ত গেটওয়ের মধ্য দিয়ে যায়; ফলে এজেন্টের ওয়ার্কস্টেশনে সরাসরি ক্রেডেনশিয়াল প্রকাশ পায় না।

লাইসেন্স সংক্রান্ত বিবেচনা

useAgent GNU AGPL v3.0-only লাইসেন্সের অধীনে বিতরণ করা হয়। এই শর্তে এটি ব্যবহার, পরিবর্তন এবং নিজস্ব সার্ভারে হোস্ট করা যেতে পারে। মালিকানাধীন এমবেডিং, OEM বা হোয়াইট-লেবেল পণ্য, AGPL-এর বাধ্যবাধকতা ছাড়া বিতরণ, অথবা অন্যান্য লাইসেন্সিং প্রয়োজনের জন্য বাণিজ্যিক লাইসেন্স পাওয়া যায়।

উপসংহার

useAgent একটিমাত্র নিজস্ব সার্ভারে হোস্টযোগ্য প্ল্যাটফর্মে একাধিক এজেন্ট ইঞ্জিন, টেকসই Postgres-সমর্থিত রান, বিচ্ছিন্ন Linux স্যান্ডবক্স, সাংগঠনিক প্রেক্ষাপট, নিরাপদ ইন্টিগ্রেশন, অনুমোদন এবং সম্পাদনাযোগ্য আর্টিফ্যাক্ট একত্র করে। Bun ও pgvector দিয়ে স্থানীয়ভাবে শুরু করুন, এর টাইপ চেকার দিয়ে মনোরেপো যাচাই করুন, এরপর Linux প্রোডাকশন হোস্টে স্থানান্তরের সময় নথিভুক্ত self-hosting পদ্ধতি ব্যবহার করুন।