SSD Nodes Learn 🎉 VPS $5.50/মাস থেকে
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-08-21

এজেন্ট হারনেস (Agent Harness) কী এবং এটি কীভাবে কাজ করে?

এজেন্ট হারনেস হলো ল্যাঙ্গুয়েজ মডেলের চারপাশের লুপ, টুলস ও সেশন স্টেট নিয়ন্ত্রণকারী প্রোগ্রাম। মডেল ও হারনেসের মূল পার্থক্য এবং কেন এটি ছাড়া এআই এজেন্ট অসম্পূর্ণ তা জানুন।

এজেন্ট হারনেস কী

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

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

হারনেস (harness) এবং মডেল এক নয়

ভেন্ডররা একই ব্র্যান্ডের নামে এগুলো রিলিজ করায় এই দুটির মধ্যে বিভ্রান্তি তৈরি হয়।

dsh এবং DeepSeek আলাদা পণ্য। DeepSeek Harness, যা 13 আগস্ট 2026 তারিখে github.com/deepseek-ai/deepseek-harness-এ MIT লাইসেন্সের অধীনে প্রকাশিত হয়েছে, সেটি একটি Node প্রোগ্রাম যা আপনি আপনার মেশিনে ইনস্টল করেন। অন্যদিকে DeepSeek মডেলগুলো হলো এমন কিছু ওয়েট (weights) যা একটি API (application programming interface)-এর মাধ্যমে সার্ভ করা হয়। আপনি যদি dsh-কে অন্য কোনো ভেন্ডরের মডেলের দিকে নির্দেশ করেন, তবে এটি কাজ চালিয়ে যাবে; কারণ হারনেসের শুধু এমন কিছু প্রয়োজন যা মেসেজ গ্রহণ করতে পারে এবং টুল কল (tool call) রিটার্ন করতে পারে।

Claude Code এবং Claude একই জোড়া। Claude Code হলো একটি হারনেস: এটি একটি টার্মিনাল প্রোগ্রাম যাতে একটি লুপ, পারমিশন সিস্টেম এবং ফাইল ও শেল টুলস থাকে। Claude হলো সেই মডেল ফ্যামিলি যা এটি ডিফল্টভাবে কল করে। Codex এবং Gemini CLI-এর ক্ষেত্রেও একই বিভাজন প্রযোজ্য।

নিচে একটি পরীক্ষা দেওয়া হলো যা সবসময় এই বিভ্রান্তি দূর করবে। আপনি একটি হারনেস ইনস্টল করেন। আপনি একটি মডেল কল করেন। যদি সেই জিনিসটির একটি ভার্সন আপনার ডিস্কে থাকে এবং আপনার হোম ডিরেক্টরিতে একটি কনফিগারেশন ফাইল থাকে, তবে সেটি হলো হারনেস। যদি সেটি সেই কনফিগারেশন ফাইলের ভেতরে থাকা একটি স্ট্রিং হয়, যেমন deepseek-chat, তবে সেটি হলো মডেল।

লুপটি আসলে যা করে

একটি হারনেস লুপের প্রতিটি ধাপ নিচে দেওয়া হলো। এটি মনোযোগ দিয়ে পড়ুন, কারণ হারনেসগুলোর মধ্যে প্রায় সব পার্থক্যই এই পাঁচটি ধাপের ভেতরে লুকিয়ে থাকে।

  1. হারনেসটি এখন পর্যন্ত হওয়া কথোপকথন এবং টুল ডেফিনিশনের একটি তালিকা মডেলের কাছে পাঠায়।
  2. মডেলটি টেক্সট অথবা কোনো টুল কল করার অনুরোধ জানিয়ে উত্তর দেয়।
  3. হারনেসটি সেই অনুরোধটিকে তার পারমিশন রুলসের সাথে মিলিয়ে দেখে এবং হয় সেটি রান করে, নয়তো আপনার অনুমতির জন্য অপেক্ষা করে।
  4. হারনেসটি টুলটি রান করে, আউটপুট ও এক্সিট কোড সংগ্রহ করে এবং আউটপুট খুব বড় হলে তা কেটে ছোট করে ফেলে।
  5. হারনেসটি সেই ফলাফল কথোপকথনের সাথে যুক্ত করে এবং 1 নম্বর ধাপে ফিরে যায়।

দৈনন্দিন ব্যবহারের ক্ষেত্রে 3 নম্বর ধাপেই হারনেসগুলোর মধ্যে সবচেয়ে বেশি পার্থক্য দেখা যায়। যে হারনেস প্রতিটি কমান্ডের আগে অনুমতি চায়, সেটি নিরাপদ কিন্তু ক্লান্তিকর। যে হারনেস কখনোই অনুমতি চায় না, সেটি কোনো এক সময় মডেলের ভুল করা কোনো পাথে ধ্বংসাত্মক কমান্ড চালিয়ে দিতে পারে। বর্তমানে প্রতিটি কার্যকর হারনেসে একটি মধ্যবর্তী ব্যবস্থা থাকে: কিছু কমান্ডের একটি অ্যালাউ-লিস্ট থাকে যা অনুমতি ছাড়াই চলে, আর বাকি সবকিছুর জন্য প্রম্পট দেখানো হয়।

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

বর্তমানে অধিকাংশ হারনেস MCP (model context protocol)-এর মাধ্যমে এক্সটারনাল টুল যুক্ত করে। এটি এমন একটি স্ট্যান্ডার্ড পদ্ধতি যার মাধ্যমে যেকোনো হারনেসে টুল এক্সপোজ করা যায়, ফলে একটি ইন্টিগ্রেশন একাধিক হারনেসে কাজ করে। VPS-এ MCP সার্ভার চালানো অংশে এই বিষয়টি বিস্তারিত আলোচনা করা হয়েছে।

Agent harness বনাম agent framework

নতুন কোনো harness আসার সময় এই প্রশ্নটি বারবার ওঠে এবং এর উত্তরগুলো ভিন্ন হয়, কারণ ভেন্ডরদের মতও ভিন্ন। নিচে এর একটি গ্রহণযোগ্য ব্যাখ্যা দেওয়া হলো।

Framework হলো এমন একটি library যা আপনি import করেন। লুপটি আপনি নিজেই লেখেন, কখন model-কে কল করতে হবে তা আপনি ঠিক করেন এবং tool-এর ফলাফলগুলো আপনি নিজেই হ্যান্ডেল করেন। LangChain এর একটি সুপরিচিত উদাহরণ: আপনি কিছু building block পান এবং কোডের মাধ্যমে agent-টিকে তৈরি করেন।

Harness হলো এমন একটি প্রোগ্রাম যা আপনি run করেন। লুপটি আগে থেকেই লেখা থাকে, tool-গুলো আগে থেকেই বিদ্যমান থাকে এবং permission model-এর একটি default সেটিংস থাকে। প্রথম কমান্ডেই আপনি একটি কার্যকর agent পেয়ে যান এবং সেখান থেকে সেটিকে কনফিগার করেন।

Install test সাধারণত এটি নির্ধারণ করে। যদি আপনি এটি install করার পর কোড লেখেন, তবে এটি একটি framework। যদি আপনি এটি install করার পর সরাসরি সেটির সাথে যোগাযোগ করেন, তবে এটি একটি harness।

এই সীমানাটি নিয়ে বিতর্ক রয়েছে এবং এর সবচেয়ে স্পষ্ট প্রমাণ হলো LangChain-এর নিজস্ব documentation। 2026 সালের আগস্ট পর্যন্ত এটি Deep Agents-কে LangGraph-এর ওপর ভিত্তি করে তৈরি একটি "opinionated, batteries-included" framework হিসেবে বর্ণনা করে, অন্যদিকে langchain-ai/deepagents repository নিজেকে "the batteries-included agent harness" বলে দাবি করে। উভয় বর্ণনাই সঠিক। Deep Agents হলো একটি Python SDK (software development kit) যা আপনি import করেন, তাই install test অনুযায়ী এটি একটি library, কিন্তু এটি এত বেশি default আচরণ প্রদান করে যে মানুষ এটিকে harness-এর মতো ব্যবহার করে। Microsoft 2026 সালের আগস্টে একটি harness এবং hosted agent-কে general availability-তে নিয়ে আসে, যা প্রমাণ করে যে এই শব্দটি এখন jargon-এর চেয়ে বরং একটি product category।

তাই আপনার কাজের ধরন অনুযায়ী প্রশ্নটি করুন। যদি লুপটি আপনি লেখেন, তবে লুপটির দায়ভার আপনার: retry, context trimming, permission prompt এবং কী ঘটেছে তার রেকর্ড—সবই আপনার নিয়ন্ত্রণে। যদি লুপটি আগে থেকেই তৈরি থাকে, তবে আপনি অন্য কারো তৈরি করা সমাধান গ্রহণ করছেন, যা শুরু করার জন্য অনেক দ্রুত কিন্তু পরবর্তীতে পরিবর্তন করা কঠিন।

Harness এবং chat window-এর মধ্যে পার্থক্য

Chat window এবং harness উভয়ই আপনাকে মডেলের আউটপুট দেখায়। এদের মূল পার্থক্য হলো কাজটি কার কম্পিউটারে সম্পন্ন হচ্ছে। Chat window-তে মডেল যে কোড চালায় তা ভেন্ডরের স্যান্ডবক্সের ভেতরে এবং আপনার আপলোড করা ফাইলের ওপর কার্যকর হয়, যা সেশন শেষ হওয়ার সাথে সাথে মুছে যায়। অন্যদিকে, একটি harness আপনার নিজের মেশিনে, আপনার ইউজার প্রিভিলেজ ব্যবহার করে, আপনার আসল ফাইল এবং এনভায়রনমেন্টে থাকা ক্রেডেনশিয়াল ব্যবহার করে টুলস চালায়।

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

যেসব হারনেস বর্তমানে ব্যবহৃত হচ্ছে

এই তালিকাটি 19 আগস্ট 2026 তারিখের হিসেবে তৈরি করা হয়েছে। এই ক্যাটাগরিটি প্রতি সপ্তাহে পরিবর্তিত হচ্ছে, তাই যেকোনো রাউন্ডআপ দ্রুত পুরনো হয়ে যায়।

  • Claude Code এবং Codex হলো ভেন্ডর-নির্ভর হারনেস। এগুলো মূলত টার্মিনাল-কেন্দ্রিক, ডিফল্টভাবে তাদের নিজস্ব মডেলের সাথে যুক্ত এবং এগুলোতে পারমিশন হ্যান্ডলিং সবচেয়ে উন্নত। Claude Code, Cursor, Codex এবং Copilot-এর মধ্যে তুলনা অংশে এগুলো বিস্তারিত আলোচনা করা হয়েছে।
  • DeepSeek Harness (dsh) হলো MIT লাইসেন্সপ্রাপ্ত একটি টুল, যা একটি মূল ধারণার ওপর ভিত্তি করে তৈরি: সবকিছুই একটি প্লাগইন। ফলে মডেল, টুল, সেশন, স্যান্ডবক্স এবং ইউজার ইন্টারফেস—সবই পরিবর্তনযোগ্য। 19 আগস্ট 2026 তারিখে, অর্থাৎ প্রকাশের ছয় দিন পর, এটি GitHub-এ প্রায় 166,800 স্টার পেয়েছিল।
  • Hermes, যা Nous Research থেকে এসেছে, এটি মূলত একটি কোডিং টুল নয় বরং একটি সাধারণ অটোনোমাস এজেন্ট। এটি ফেব্রুয়ারি 2026 সালে MIT লাইসেন্সের অধীনে রিলিজ করা হয় এবং এটি আপনার মেশিনের লোকাল SQLite ডাটাবেসে মেমোরি ও স্কিল সংরক্ষণ করে। VPS-এ Hermes সেলফ-হোস্ট করা অংশে এর বিস্তারিত প্রক্রিয়া দেওয়া আছে।
  • Omnigent হলো একটি মেটা-হারনেস: এটি Claude Code এবং Codex-সহ অন্যান্য হারনেসকে একটি API-এর মাধ্যমে নিয়ন্ত্রণ করে, যেখানে শেয়ারড সেশন, স্পেন্ড ক্যাপ এবং অপারেটিং সিস্টেম লেভেলের স্যান্ডবক্স সুবিধা থাকে। মাল্টি-এজেন্ট হারনেস হিসেবে Omnigent অংশে এর সুবিধাগুলো আলোচনা করা হয়েছে।
  • OneCLI হলো টিমগুলোর জন্য তৈরি একটি স্যান্ডবক্সড হারনেস। এটি একটি গেটওয়ের চারপাশে গঠিত যা আউটবাউন্ড রিকোয়েস্টে আসল ক্রেডেনশিয়াল ইনজেক্ট করে, যাতে এজেন্ট নিজে শুধুমাত্র প্লেসহোল্ডার কি (key) দেখতে পায়।

dsh কুইক স্টার্ট হলো একটি সিঙ্গেল কমান্ড, এবং এটি একবার রান করাই হারনেস কী তা বোঝার দ্রুততম উপায়। এর জন্য মেশিনে Node.js থাকা প্রয়োজন।

npx @deepseek-ai/dsh web

এটি http://127.0.0.1:3080-এ ওয়েব UI (ইউজার ইন্টারফেস) চালু করে। এটি ব্যবহারের আগে README ফাইলটি পড়ে নিন, কারণ dsh নিজেকে ডেভেলপার প্রিভিউ হিসেবে বর্ণনা করে এবং স্পষ্টভাবে উল্লেখ করে যে এতে কম্প্যাটিবিলিটি নষ্ট হতে পারে এমন পরিবর্তন আসবে। VPS-এ DeepSeek Harness চালানো অংশে সার্ভার ইন্সটলেশন এবং কেন এই অ্যাড্রেসটি 127.0.0.1 দিয়ে শুরু হয় অংশে লুপব্যাক ডিফল্ট হওয়ার কারণ ব্যাখ্যা করা হয়েছে।

রাউটারগুলো হারনেসের উপরে অবস্থান করে

একটি মডেল রাউটার হলো হারনেস এবং প্রোভাইডার API-এর মধ্যে একটি লোকাল প্রক্সি। Claude Code Router হলো এর সাধারণ উদাহরণ: এটি ডিফল্টভাবে 127.0.0.1:3456-এ বাইন্ড হয়, Claude Code তার নিজস্ব ভেন্ডরের কাছে যে অনুরোধগুলো পাঠাতো তা গ্রহণ করে এবং আপনার কনফিগার করা প্রোভাইডারের কাছে পাঠিয়ে দেয়। হারনেস জানে না যে কোনো কিছু পরিবর্তিত হয়েছে।

রাউটারগুলো থাকার কারণ হলো মডেল পরিবর্তনযোগ্য, তাই এই পোস্টের মূল পয়েন্ট প্রমাণের জন্য এগুলো ভালো উদাহরণ। এগুলো ঝুঁকিও কেন্দ্রীভূত করে, কারণ প্রক্সি প্রতিটি প্রম্পট দেখতে পায় এবং প্রতিটি প্রোভাইডার কি (key) সংরক্ষণ করে। একে একটি সুবিধা হিসেবে না দেখে অবকাঠামো হিসেবে বিবেচনা করুন। যেখানে একটি হারনেস তার API কি এবং মডেল সেটিংস রাখে তা এক স্তর নিচে একই সমস্যার সৃষ্টি করে।

হ্যারনেস যখন একটি VPS-এ চলে তখন কী কী পরিবর্তিত হয়

আপনার ল্যাপটপ থেকে সরিয়ে যখন কোনো ভাড়া করা সার্ভারে হ্যারনেস চালানো হয়, তখন চারটি বিষয় পরিবর্তিত হয়।

ল্যাপটপের ঢাকনা বন্ধ করলেও এটি চলতে থাকে। দীর্ঘমেয়াদী কাজ আপনার যাতায়াত বা ব্যাটারির স্থায়িত্বের ওপর নির্ভর করে না। এটিকে tmux-এর ভেতরে শুরু করুন এবং ডিটাচ (detach) করুন:

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

রিবুট-এর পরেও যে কাজগুলো চালু থাকা প্রয়োজন, সেগুলোর জন্য টার্মিনাল সেশনের চেয়ে ইউজার সার্ভিস বেশি কার্যকর:

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger হলো সেই অংশটি যা অনেকেই এড়িয়ে যান। এটি ছাড়া, আপনার শেষ SSH (secure shell) সেশন বন্ধ হওয়ার সাথে সাথেই systemd আপনার ইউজারের সার্ভিসগুলো বন্ধ করে দেয়। ফলে আপনি লগ আউট করার সাথে সাথে এজেন্টটি বন্ধ হয়ে যায় এবং কোনো এরর মেসেজও দেখা যায় না। systemd-এর অধীনে dsh হেডলেস চালানো-তে ইউনিট ফাইলটি দেওয়া আছে। একবার সার্ভারে একটি সেশন চালু হয়ে গেলে, দ্বিতীয় সেশন চালাতে বাড়তি কোনো খরচ হয় না এবং একই মেশিনে দুটি Claude Code সেশন একে অপরের সাথে যোগাযোগ করতে পারে। ফলে সকালে শুরু করা সেশনটি আপনার কোনো হস্তক্ষেপ ছাড়াই অন্য সেশনকে কাজ বুঝিয়ে দিতে পারে।

এটি আপনার কি (keys) সংরক্ষণ করে। প্রোভাইডার কি এখন সেই সার্ভারের একটি কনফিগারেশন ফাইলে থাকে। কারা এটি পড়তে পারে তা যাচাই করুন:

ls -l ~/.config

আপনার ইউজার হিসেবে চলমান যেকোনো প্রসেস এই ফাইলটি পড়তে পারে, যার মধ্যে এজেন্ট এবং এজেন্টের মাধ্যমে চালানো যেকোনো কিছু অন্তর্ভুক্ত।

এটি আপনার অন্যান্য মেশিনে পৌঁছাতে পারে। আপনার অন্যান্য বক্সের সাথে একই প্রাইভেট নেটওয়ার্কে থাকা একটি VPS এজেন্টকে সেগুলোর সাথে সংযোগ স্থাপনের পথ তৈরি করে দেয়। এটিই এর মূল উদ্দেশ্য, এবং এটিই এর ব্লাস্ট রেডিয়াস (blast radius)।

এটি যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য। বেশিরভাগ হ্যারনেস একটি ওয়েব UI প্রদর্শন করে এবং বেশিরভাগ ক্ষেত্রে নিরাপত্তার খাতিরে সেগুলোকে লুপব্যাক (loopback)-এ বাইন্ড করা হয়। আপনারটি পরীক্ষা করুন:

ss -tlnp | grep 3080

127.0.0.1:3080 মানে হলো শুধুমাত্র সার্ভার নিজেই সংযোগ করতে পারবে। 0.0.0.0:3080 মানে হলো যার কাছে ঠিকানা আছে সে-ই সংযোগ করতে পারবে। বাইন্ড অ্যাড্রেস পরিবর্তন না করে বরং একটি SSH টানেলের মাধ্যমে লুপব্যাক UI-তে প্রবেশ করুন:

ssh -N -L 3080:127.0.0.1:3080 you@your-server

এরপর আপনার ল্যাপটপের ব্রাউজারে http://127.0.0.1:3080 খুলুন। ট্রাফিকটি SSH সেশনের ভেতর দিয়ে যায়, তাই ইন্টারনেটে নতুন কোনো কিছু উন্মুক্ত হয় না।

নিরাপত্তার দৃষ্টিকোণ থেকে প্রতিটি বিষয়ই গুরুত্বপূর্ণ

একজন আক্রমণকারীর দৃষ্টিভঙ্গি থেকে এই চারটি বৈশিষ্ট্য পুনরায় বিবেচনা করুন।

এটি স্বয়ংক্রিয়ভাবে চলে, তাই মডেল কোনো পাথ ভুলভাবে পড়লে তা দেখার মতো কেউ থাকে না। এটি আপনার কি (keys) সংরক্ষণ করে, তাই একটি মাত্র রিডেবল কনফিগারেশন ফাইল মানেই আপনার পুরো প্রোভাইডার অ্যাকাউন্টের নিয়ন্ত্রণ। এটি আপনার অন্যান্য মেশিনে পৌঁছাতে পারে, তাই প্রম্পট ইনজেকশন—অর্থাৎ কোনো ওয়েব পেজ বা ফাইলে লুকিয়ে রাখা নির্দেশনা যা এজেন্ট পড়ে—এখন আপনার ডাটাবেস হোস্ট পর্যন্ত পৌঁছানোর পথ তৈরি করে দেয়। এটি যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য, তাই কোনো পাসওয়ার্ড ছাড়া 0.0.0.0-এ বাইন্ড করা ওয়েব UI মানেই পাবলিক ইন্টারনেটে একটি শেল।

প্রতিটি ক্ষেত্রেই এর সমাধানটি সাধারণ এবং সবসময় একই। এজেন্টকে আপনার অ্যাকাউন্টের পরিবর্তে নিজস্ব একটি আনপ্রিভিলেজড (unprivileged) ইউজার অ্যাকাউন্ট দিন:

sudo adduser --disabled-password --gecos "" agent

ওয়েব UI-কে লুপব্যাক (loopback) ইন্টারফেসে রাখুন এবং SSH-এর মাধ্যমে তা অ্যাক্সেস করুন। এজেন্টকে শুধুমাত্র প্রয়োজনীয় ন্যূনতম ক্রেডেনশিয়াল দিন যা দিয়ে সে তার কাজ সম্পন্ন করতে পারে, এ বিষয়ে AI এজেন্ট থেকে সিক্রেট দূরে রাখা অংশে বিস্তারিত আলোচনা করা হয়েছে। আপনি যখন পর্যবেক্ষণ করছেন না, তখন এমন কোনো কাজের জন্য সতর্কভাবে কনফিগার করা মেশিনের চেয়ে একটি ডিসপোজেবল (throwaway) মেশিন ব্যবহার করা অনেক বেশি কার্যকর: ডিসপোজেবল VM-এ কোডিং এজেন্ট চালানো এবং নিরাপদভাবে VPS-এ Claude Code চালানো—উভয় পদ্ধতিই এই পথ অনুসরণ করে।

আপনার কি একটি এজেন্ট হারনেস প্রয়োজন?

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

এই ক্যাটাগরির বেশিরভাগ টুলই নতুন। dsh-এর নিজস্ব README-তে আগস্ট 2026 পর্যন্ত ডেভেলপার প্রিভিউ লেখা আছে এবং বাকিগুলো এত দ্রুত পরিবর্তিত হচ্ছে যে আজ আপনি যে কনফিগারেশন ফাইলটি লিখবেন, সেটি আগামী মাসে সম্পাদনা করার প্রয়োজন হতে পারে। এটি আপনার সেটআপ ছোট এবং পুনরুৎপাদনযোগ্য রাখার একটি কারণ, এবং আপনি কী পরিবর্তন করেছেন তা লিখে রাখারও একটি কারণ। একই সংযম লুপের ভেতরেও সাহায্য করে, যেখানে এমন একটি দক্ষতা যা এজেন্টকে ক্ষুদ্রতম কার্যকর পরিবর্তনের দিকে চালিত করে আপনাকে এমন একটি ডিফারেন্স (diff) দেয় যা আপনি একটি আনঅ্যাটেন্ডেড রান শেষে সহজেই পড়তে পারবেন। একটি সার্ভারে একটি হারনেস দিয়ে শুরু করুন, সেটিকে একটি কাজ এবং একটি সীমিত অ্যাক্সেস কি (key) দিন। প্রথম কাজটি এক সপ্তাহ ধরে সফলভাবে সম্পন্ন হওয়ার পরেই কেবল এর অ্যাক্সেস বাড়ান। আজকের দিনে চালানোর মতো স্ব-হোস্টেড এজেন্টসমূহ আপনার প্রথম এজেন্টটি বেছে নেওয়ার জন্য একটি উপযুক্ত জায়গা।

FAQ

এজেন্ট হারনেস (agent harness) বলতে সহজ কথায় কী বোঝায়?

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

Claude Code কি একটি মডেল নাকি হারনেস?

Claude Code একটি হারনেস। এটি একটি টার্মিনাল প্রোগ্রাম যার মধ্যে লুপ, পারমিশন সিস্টেম এবং বিল্ট-ইন ফাইল ও শেল টুল রয়েছে। Claude হলো সেই মডেল ফ্যামিলি যা এটি ডিফল্টভাবে কল করে। একই বিভাজন DeepSeek Harness (dsh)-এর ক্ষেত্রেও প্রযোজ্য, যা একটি Node প্রোগ্রাম যা আপনি ইনস্টল করেন, আর DeepSeek মডেলগুলো একটি API-এর মাধ্যমে সার্ভ করা হয়। আপনি একটি মেশিনে হারনেস ইনস্টল করেন। আপনি নেটওয়ার্কের মাধ্যমে একটি মডেল কল করেন।

এজেন্ট হারনেস এবং এজেন্ট ফ্রেমওয়ার্কের মধ্যে পার্থক্য কী?

ফ্রেমওয়ার্ক হলো একটি লাইব্রেরি যা আপনি ইমপোর্ট করেন এবং যার ওপর ভিত্তি করে কোড লেখেন, ফলে লুপ, রিট্রাই (retries) এবং কনটেক্সট হ্যান্ডলিংয়ের নিয়ন্ত্রণ আপনার হাতে থাকে। হারনেস হলো এমন একটি প্রোগ্রাম যা আপনি সরাসরি চালান, ফলে এর সবকিছু ডিফল্ট হিসেবেই থাকে যা আপনি কোড না লিখে কনফিগার করেন। বাস্তবে এই দুটির মধ্যে পার্থক্য অস্পষ্ট: LangChain-এর Deep Agents হলো একটি ইমপোর্টযোগ্য SDK, যাকে এর নিজস্ব রিপোজিটরিতে আগস্ট 2026 অনুযায়ী একটি 'ব্যাটারিস-ইনক্লুডেড' এজেন্ট হারনেস বলা হয়েছে। নিজেকে প্রশ্ন করুন যে আপনি লুপটি নিজে লিখবেন কি না। সেই উত্তরই ঠিক করবে আপনার পরিস্থিতির জন্য কোন শব্দটি উপযুক্ত।

এজেন্ট হারনেস চালানোর জন্য কি আমার একটি VPS প্রয়োজন?

না। এখানে উল্লিখিত প্রতিটি হারনেস ল্যাপটপে চলে। একটি সার্ভার চারটি বিষয় পরিবর্তন করে: ল্যাপটপের ঢাকনা বন্ধ করলেও এজেন্ট চলতে থাকে, এটি আপনার কি (keys) এমন একটি মেশিনে রাখে যা সবসময় চালু থাকে, এটি আপনার অন্যান্য সার্ভারে পৌঁছাতে পারে এবং আপনি যেকোনো ডিভাইস থেকে একই সেশনে ফিরে আসতে পারেন। এর প্রতিটিই নিরাপত্তার বিষয়, তাই এজেন্টকে তার নিজস্ব ইউজার অ্যাকাউন্ট দিন এবং যেকোনো web UI-কে 127.0.0.1-এ bind করে রাখুন।

আমি কি একই হারনেসের ভেতরে ভিন্ন কোনো মডেল ব্যবহার করতে পারি?

সাধারণত হ্যাঁ, এবং এটিই একটি হারনেসের প্রধান বৈশিষ্ট্য। এদের বেশিরভাগই কনফিগারেশনে মডেলের নাম এবং base URL গ্রহণ করে, তাই অন্য কোনো প্রোভাইডারের দিকে নির্দেশ করা মানে হলো একটি এডিট করা, নতুন করে লেখা নয়। যেখানে হারনেস বাধা দেয়, সেখানে Claude Code Router-এর মতো একটি লোকাল রাউটার হারনেস এবং প্রোভাইডারের মাঝে বসে অনুরোধগুলো অনুবাদ করে, যা ডিফল্টভাবে 127.0.0.1:3456-এ bind হয়। সেই প্রক্সির ব্যাপারে সতর্ক থাকুন, কারণ এটি প্রতিটি প্রম্পট দেখতে পায় এবং প্রতিটি কি (key) সংরক্ষণ করে।