লোকাল কোডিং এজেন্টরা একটি এনভায়রনমেন্ট সমস্যা

প্রম্পট এখন আর কোডিং এজেন্ট সেটআপের কেন্দ্রবিন্দু নয়।

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

আসল লোকাল এজেন্টরা অনেক বেশি জটিল। যখন একটি এজেন্ট আপনার রিপোজিটরির (repo) কাছাকাছি থাকে, কমান্ড চালায় এবং টুলস ব্যবহার করে, তখন মূল প্রশ্নটি বদলে যায়।

প্রশ্নটি এখন আর "আমি কি একটি নিখুঁত প্রম্পট লিখেছি?" নয়। প্রশ্নটি হলো "আমি এই জিনিসটিকে কী ধরনের এনভায়রনমেন্ট দিয়েছি?"

একটি চ্যাট অ্যাসিস্ট্যান্টের সীমানা স্পষ্ট। আপনি কনটেক্সট পেস্ট করেন। আপনি টেক্সট ফেরত পান। কিন্তু একটি লোকাল কোডিং এজেন্ট ভিন্ন। এটি আপনার শেল (shell), লোকাল টুলস, প্যাকেজ ম্যানেজার এবং ক্রেডেনশিয়াল (credentials) স্পর্শ করে। এনভায়রনমেন্টই তখন আসল প্রোডাক্ট হয়ে দাঁড়ায়।

একটি লোকাল এজেন্ট সেটআপ করা হলো ডেভেলপার ইনফ্রাস্ট্রাকচার। এটি কেবল একটি AI টুল ইনস্টল করা নয়।

আপনাকে সিদ্ধান্ত নিতে হবে:

  • এজেন্ট কী কী পড়তে পারে?
  • এটি কী কী এডিট করতে পারে?
  • এটি কোন কমান্ডগুলো চালাতে পারে?
  • ডিফল্টভাবে কোন টুলগুলো উপলব্ধ আছে?
  • স্টেট (state) কোথায় থাকে?
  • অন্য কোনো ডেভেলপার কি এই সেটআপটি পুনরায় তৈরি করতে পারবে?
  • এজেন্ট কী ধরনের প্রমাণ বা চিহ্ন রেখে যায়?

যদি এই উত্তরগুলো অস্পষ্ট হয়, তবে আপনার প্রম্পট আপনাকে রক্ষা করতে পারবে না।

একটি উন্নত প্রম্পট কেবল একটি উত্তরকে উন্নত করে। কিন্তু একটি উন্নত এনভায়রনমেন্ট পুরো লুপটিকেই উন্নত করে।

এজেন্ট সেটআপকে CI/CD বা ডিপ্লয়মেন্ট গেটের মতো বিবেচনা করুন। এটিকে ব্যক্তিগত পছন্দ হিসেবে দেখবেন না। এটিকে একটি সিস্টেম হিসেবে বিবেচনা করুন।

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

লক্ষ্য হলো ছোট এবং পর্যবেক্ষণযোগ্য (inspectable) সক্ষমতার দিকে এগিয়ে যাওয়া।

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

ভালো সফটওয়্যারের নির্দিষ্ট সীমানা থাকে।

এজেন্ট কতগুলো টুলের সাথে কানেক্ট হতে পারে সেদিকে মনোযোগ দেবেন না। বরং প্রতিটি টুল এজেন্টকে কী করতে দিচ্ছে সেদিকে মনোযোগ দিন। এটি কি স্টেট পরিবর্তন (mutate state) করতে পারে? এটি কি প্রোডাকশনে পৌঁছাতে পারে? এটি কি সিক্রেট (secrets) প্রকাশ করে ফেলে?

আউটপুট মানেই লিভারেজ (leverage) নয়। এজেন্টরা আরও বেশি কোড এবং আরও বেশি ব্রাঞ্চ তৈরি করতে পারে। যদি কাজগুলো পড়া সহজ না হয়, তবে এটি রিভিউ ডেট (review debt) তৈরি করতে পারে।

একটি লোকাল সেটআপ মানুষের কাজ সহজ করার জন্য হওয়া উচিত। যদি এটি কেবল এজেন্টকে দ্রুততর করে, তবে আপনার টিম হয়তো মোটেও দ্রুততর হবে না।

আউটপুটের ওপর ভরসা করার আগে এনভায়রনমেন্টের ওপর ভরসা করুন।

Source: https://dev.to/hefty_69a4c2d631c9dd70724/local-coding-agents-are-an-environment-problem-1o4p

Optional learning community: https://t.me/GyaanSetuAi