ভূমিকা: সেই এজেন্ট যা সবাই চায়, কিন্তু বাড়াবাড়ি ছাড়াই
কোডিং এজেন্টদের সমস্যা হলো, এদের বেশিরভাগই আপনার বস, আপনার সহ-পাইলট এবং আপনার থেরাপিস্ট হওয়ার চেষ্টা করে—কিন্তু কোড লেখাটাই ভুলে যায়। এদের নিয়ম হলো: এক ডজন ভেক্টর স্টোর যোগ করো, কিছু অর্কেস্ট্রেশন পিক্সির জাদু ছিটিয়ে দাও, একটা ব্রাউজার জুড়ে দাও, ব্যস হয়ে গেল। এটা দেখতে ভালো লাগে। কিন্তু যখন শুক্রবার বিকেল ৪:৫২ মিনিটে একটা নড়বড়ে ইন্টিগ্রেশন টেস্ট ঠিক করতে বলা হয়, তখনই এটি ভেঙে পড়ে।
Claude 4.5 দিয়ে একটা হালকা-ওজনের কোডিং এজেন্ট তৈরি করা—অবাক করার মতো হলেও—আসলে খুবই সহজ, যদি আপনি একজন সার্বজনীন সফটওয়্যার বাটলারের স্বপ্ন দেখা বন্ধ করেন এবং এমন একটা টুল তৈরি করেন যা কোড পড়তে, পরিকল্পনা করতে, সম্পাদনা করতে, চালাতে এবং পুনরাবৃত্তি করতে পারে। এখানে “AI ডেভেলপারদের প্রতিস্থাপন করবে” এমন কোনো প্রচার নেই। কোনো রুব গোল্ডবার্গ পাইপলাইনও নেই। শুধু একটা টাইট লুপ যা সাধারণ কাজগুলো ভালোভাবে করে।
কীভাবে একটি এআই অপারেশনস বিভাগকে না এনেই এটা করা যায়, তার একটি নির্দেশিকা এখানে দেওয়া হল। আমরা Claude 4.5 কে মস্তিষ্ক হিসেবে, ফাইলসিস্টেম এবং শেলকে হাত হিসেবে এবং স্বল্প-মেয়াদী ফোকাসের জন্য একটি ছোট মেমরি ব্যবহার করব। এইটুকুই। হালকা-ওজনের মানে হল আপনি এক বসাতেই এটা বুঝতে পারবেন, স্থানীয়ভাবে চালাতে পারবেন এবং বিশ্বাস করতে পারবেন কারণ প্রতিটি ধাপ পরিদর্শন করা যায়। আপনি যদি সম্প্রতি এই ক্ষেত্রে কিছু ব্যবহার করে থাকেন, তবে এটি প্রায় বিপ্লবী।
কেনো একটি মিনিমাল এজেন্টের জন্য Claude 4.5 ভালো কাজ করে
কোডের জন্য Claude 4.5-এর যে মেজাজ প্রয়োজন, তা হলো: নির্দেশাবলী পালনে সতর্ক, ডিফস (diffs) পড়ার ক্ষেত্রে আশ্চর্যজনকভাবে ভালো এবং আপনার না চাওয়া ফ্রেমওয়ার্ক নিয়ে অতিরিক্ত উৎসুক নয়। মডেলটি পুরো প্রম্পট উপন্যাস (prompt novel) না চেয়েও ধাপে ধাপে যুক্তি দিতে সক্ষম। এই সমন্বয়—যুক্তি এবং সংযম—একটি কোডিং এজেন্ট লুপের জন্য এটিকে আদর্শ করে তোলে:
- পর্যবেক্ষণ: বর্তমান ফাইল, ত্রুটি লগ এবং পরীক্ষা পড়ুন।
- পরিকল্পনা: যুক্তিসহ বাস্তবসম্মত সম্পাদনার প্রস্তাব করুন।
- কাজ: ফাইল প্যাচ করুন, কমান্ড চালান।
- প্রতিফলন: আউটপুট মূল্যায়ন করুন, পুনরাবৃত্তি করুন বা থামুন।
আপনি যেকোনো রেপোতে (repo) এটি যোগ করতে পারেন এবং একদিনের মধ্যে ভালো ফল পেতে পারেন। আসল কথা হল এটিকে একটি “এআই প্ল্যাটফর্ম”-এ পরিণত করার লোভ সামলানো। যদি আপনি এজেন্টকে হালকা রাখেন, তাহলে Claude 4.5 আপনার পথে না এসেও কঠিন কাজগুলো করে দিতে পারবে।
হালকা আর্কিটেকচার: পাঁচটি অংশ, কোনো ঝামেলা নেই
আপনার প্রয়োজনীয় সম্পূর্ণ স্ট্যাকটি এখানে দেওয়া হলো:
- কোর লুপ: একটি প্রক্রিয়া যা Claude 4.5 কে কল করে এবং এর টুল-ব্যবহারের বার্তাগুলো ব্যাখ্যা করে।
- সরঞ্জাম: খুব সামান্য কিছু—read_file, write_file, list_dir, run_tests (অথবা run_cmd), search_code।
- কনটেক্সট বিল্ডার: রেপো মেটাডেটা (repo metadata) এবং সাম্প্রতিক ডিফস (diffs) দিয়ে একটি ছোট, সুস্পষ্ট প্রম্পট একত্রিত করুন।
- স্বল্প-মেয়াদী মেমরি: একটি চলমান কথোপকথন উইন্ডো এবং পরিকল্পনা ও সীমাবদ্ধতার জন্য একটি স্পষ্ট স্ক্র্যাচপ্যাড।
- গার্ডরেইল: টোকেন, সময় এবং ফাইল লেখার সীমা; একটি ড্রাই-রান মোড; এবং রোলব্যাক স্ন্যাপশট।
এইটুকুই। আপনি এটিকে টার্মিনালে হেডলেসভাবে চালাতে পারেন অথবা চাইলে একটি ছোট ইউআই (UI) দিয়ে মুড়ে দিতে পারেন। এর কারণ হল: প্রতিটি কাজ পর্যবেক্ষণ করা যায় এবং যাচাই করা যায়। এজেন্ট একটি পরিবর্তনের প্রস্তাব করে, ডিফস (diff) দেখায়, পরীক্ষা চালায়, আউটপুট পড়ে এবং হয় চালিয়ে যায়, না হয় থেমে যায়। এখানে কোনো লুকোচুরি নেই।
কীভাবে এজেন্ট তৈরি করবেন (এবং পথ হারাবেন না)
ধাপ ১: চুক্তি নির্ধারণ করুন—প্রম্পট এবং সরঞ্জাম
আপনার এজেন্ট মডেলের সাথে তার চুক্তির মতোই ভালো। সিস্টেম প্রম্পট ছোট, কঠোর এবং বাস্তবসম্মত রাখুন।
সিস্টেম প্রম্পট, সংক্ষিপ্ত আকারে:
- আপনি একজন কোডিং এজেন্ট। আপনার কাজ হল ব্যবহারকারীর কাজ সম্পাদনের জন্য রেপোতে (repo) ছোট, সঠিক পরিবর্তন করা।
- একটি লুকানো স্ক্র্যাচপ্যাডে চিন্তা করুন; ব্যবহারকারীর কাছে শুধুমাত্র পরিকল্পনা এবং ডিফস (diffs) প্রকাশ করুন।
- কম ডিফস (diffs), কার্যকরী পরীক্ষা এবং ক্রমবর্ধমান অগ্রগতিকে অগ্রাধিকার দিন।
- নিশ্চিত না হলে, একটি পরীক্ষার প্রস্তাব করুন এবং চালান।
- কখনও ফাইল বা কমান্ড তৈরি করবেন না—সম্পাদনা করার আগে তালিকাভুক্ত করুন এবং পড়ুন।
টুল স্কিমা (tool schema) (বেশি চিন্তা করবেন না):
- read_file(path, offset?, length?)
- write_file(path, content, create_if_missing=false)
- run_cmd(command, timeout=60, cwd=repo_root)
- search_code(query, path=repo_root, max_results=50)
ঐচ্ছিক ভালো জিনিস: আপনি যদি হাত-বিহীন রোলব্যাক চান তবে git_diff এবং git_revert(sha)। আপনি ভেক্টর স্টোর বাদ দিতে পারেন; বেশিরভাগ দরকারী কাজ কার্যকরী মেমরিতে থাকা কয়েকটি ফাইলের উপর নির্ভর করে এবং দ্রুত অনুসন্ধানের মাধ্যমে করা যায়।
ধাপ ২: কনটেক্সট (Context) সংক্ষিপ্ত রাখুন
কনটেক্সট স্টাফিং (context stuffing) হল এজেন্ট ডিজাইনের কার্গো কাল্ট (cargo cult)। আপনার পুরো মনোরেপো (monorepo) প্রম্পটে ডাম্প করবেন না। পরিবর্তে:
- রেপো (Repo) সারসংক্ষেপ: এক-অনুচ্ছেদের README ডাইজেস্ট; প্রবেশ বিন্দু; টেস্ট রানার কমান্ড।
- সক্রিয় ফাইল: শুধুমাত্র সেই ফাইলগুলি যা এজেন্ট স্পর্শ করার পরিকল্পনা করছে—প্রয়োজন অনুযায়ী খণ্ড খণ্ড করে পড়ুন।
- কাজ: ব্যবহারকারীর লক্ষ্য, স্পষ্টভাবে বলুন: “tests/foo_test.py-এ FooTest.test_bar নামক ফেইলিং টেস্টটি (failing test) ঠিক করুন।”
- সীমাবদ্ধতা: রানটাইম সীমা, ফাইল লেখার হোয়াইটলিস্ট (whitelist), স্টাইল নিয়ম এবং প্রযোজ্য ক্ষেত্রে শব্দার্থিক সংস্করণ প্রত্যাশা।
- সাম্প্রতিক ইতিহাস: শেষ দুটি ডিফস (diffs) এবং তাদের পরীক্ষার ফলাফল। আর কিছু নয়।
Claude 4.5 search_code এবং read_file এর মাধ্যমে যখন প্রয়োজন হবে তখন আরও কনটেক্সট (context) আনতে সক্ষম। একে ম্যাপ দিন, পুরো অঞ্চল নয়।
ধাপ ৩: লুপ (পর্যবেক্ষণ → পরিকল্পনা → কাজ → প্রতিফলন)
- পর্যবেক্ষণ: ডিরেক্টরি তালিকাভুক্ত করে, ফেইলিং টেস্ট (failing test), পরীক্ষার অধীনে থাকা কোড এবং ত্রুটি লগ পড়ে শুরু করুন। Claude-কে দুটি বা তিনটি বুলেট পয়েন্টে ব্যর্থতার লক্ষণগুলো সারসংক্ষেপ করতে বলুন।
- পরিকল্পনা: Claude-কে একটি পরিকল্পনা প্রস্তাব করতে বলুন:
- পরিদর্শন বা সম্পাদনা করার জন্য ফাইল
- চেষ্টা করার জন্য সংক্ষিপ্ত ডিফস (diffs)
- বৈধতা যাচাই করার জন্য একটি টেস্ট কমান্ড
- কাজ: write_file এর মাধ্যমে প্রস্তাবিত ডিফস (diff) প্রয়োগ করুন। ডিফস (diff) হুবহু দেখান। পরীক্ষা চালান।
- প্রতিফলন: stdout/stderr ফেরত দিন। Claude-কে জিজ্ঞাসা করুন: এগিয়ে যাব, রোলব্যাক করব নাকি থামব? যদি পরিকল্পনার পরিবর্তন হয়, তাহলে প্রকৃত আউটপুটের উল্লেখ করে একটি বাক্যে ন্যায্যতা দিতে হবে।
- প্রস্থান: যখন পরীক্ষা পাস হবে, অথবা N সংখ্যক পুনরাবৃত্তির পর, যেটি আগে আসে তখন থামুন।
এটি মূলত গ্লোরিফায়েড পেয়ার প্রোগ্রামিং (glorified pair programming) যেখানে আপনি জুটিকে সৎ রাখেন।
ধাপ ৪: গার্ডরেইল যা আপনার সপ্তাহান্ত বাঁচায়
- রাইট হোয়াইটলিস্ট: শুধুমাত্র src/, lib/ অথবা স্পষ্টভাবে অনুমোদিত পাথের (path) মধ্যে লেখার অনুমতি দিন।
- ডিফ সাইজ লিমিট: প্রতিটি ধাপে ২০০-৫০০ লাইনের মধ্যে সম্পাদনা সীমাবদ্ধ করুন। যদি এর চেয়ে বড় হয়, তবে উপ-ধাপে ভাগ করুন।
- কমান্ড অ্যালোলিস্ট (command allowlist): টেস্ট রানার, লিন্টার এবং কয়েকটি ডেভ স্ক্রিপ্ট। নেটওয়ার্ক নিষিদ্ধ করুন। আপনি পুনরুৎপাদনযোগ্যতা চান, ওয়াইল্ড-ওয়েস্ট কার্ল (wild-west curl) নয়।
- টাইমআউট এবং পুনরায় চেষ্টা: সংক্ষিপ্ত টাইমআউট, সর্বোচ্চ একটি পুনরায় চেষ্টা—অবিরাম পুনরায় চালানোর লুপ হল সেই জায়গা যেখানে এজেন্টরা মারা যায়।
- ড্রাই রান মোড: প্রস্তাবিত ডিফস (diffs) প্রিন্ট করুন কিন্তু লিখবেন না। কোড পর্যালোচনার জন্য দারুণ।
Claude 4.5 নিয়ম মেনে চলবে যদি আপনি সেগুলি স্পষ্টভাবে উল্লেখ করেন। যদি আপনি না করেন, তবে অবাক হবেন না যখন এটি আপনার পুরো রেপোকে (repo) ২০১৭ সালের কোনো ব্লগ পোস্টের সাথে সঙ্গতি রেখে পুনর্গঠন করার চেষ্টা করবে।
ধাপ ৫: মেমরি যা আসলে দরকারী
স্বল্প-মেয়াদী মেমরি ৮০% সমস্যার সমাধান করে। যা রাখবেন:
- বর্তমান অনুমান এবং পরিকল্পনার জন্য একটি স্ক্র্যাচপ্যাড।
- এই সেশনে স্পর্শ করা ফাইলগুলোর একটি তালিকা।
- শেষ দুটি কমান্ডের আউটপুট।
Claude 4.5 এর জন্য এটি যথেষ্ট ভালোভাবে যুক্তি দেওয়ার জন্য। দীর্ঘ-মেয়াদী মেমরি—টাস্ক লগ, এম্বেডিং—পুনরাবৃত্ত কোডবেসের জন্য সহায়ক হতে পারে, তবে এটিকে ঐচ্ছিক চিনি হিসাবে বিবেচনা করুন। যদি আপনার এজেন্ট 500MB ভেক্টর ইনডেক্স (vector index) ছাড়া একটি টেস্ট ঠিক করতে না পারে, তবে এটি কোনো এজেন্ট নয়—এটি একটি নির্ভরতা।
মিনিমাল ইমপ্লিমেন্টেশন স্কেচ (Minimal Implementation Sketch)
সিউডোকোড (pseudocode) এর ভাষায়, আপনি এই এজেন্টকে কয়েকশ লাইনে বাস্তবায়ন করতে পারেন:
- initialize: রেপো (repo) মেটাডেটা, সীমাবদ্ধতা এবং মডেল ক্লায়েন্ট লোড করুন
- observe: ফেইলিং টেস্ট (failing tests), ফাইল, লগ পড়ুন
- plan = model.propose_plan(context)
- while not done and steps < MAX:
- diff = model.propose_patch(plan)
- show(diff); maybe approve
- out = run_cmd(plan.test_cmd)
- reflect = model.evaluate(out)
- if reflect == pass: done = true
- else if reflect == rollback: git_revert(last_commit)
- else: plan = model.revise_plan(out)
আপনি অনুপস্থিত অংশগুলো লক্ষ্য করবেন: এজেন্টদের পরিচালনা করার জন্য কোনো এজেন্ট নেই, কোনো “ডেলিগেট” নেই, কোনো আলাদা “প্ল্যানার মডেল” এবং “এক্সিকিউটর মডেল” নেই। Claude 4.5 যদি আপনি এটিকে রুব গোল্ডবার্গ যন্ত্র দিয়ে নাশকতা না করেন তবে উভয় কাজ ভালোভাবে করতে পারে।
প্রম্পটিং যা খুব বেশি চেষ্টা করে না
খারাপ প্রম্পটগুলি চতুর হওয়ার চেষ্টা করে। ভালো প্রম্পটগুলি একঘেয়ে এবং নির্দিষ্ট হয়। আপনার মূল নির্দেশ ব্লকের জন্য এখানে একটি সাধারণ কাঠামো দেওয়া হল:
- লক্ষ্য: সঠিক কোডিং টাস্ক এবং সাফল্যের মানদণ্ড উল্লেখ করুন।
- কনটেক্সট (Context): প্রকল্পের কাঠামো, প্রবেশ বিন্দু এবং টেস্ট কমান্ড।
- সীমাবদ্ধতা: রাইট হোয়াইটলিস্ট, ডিফস (diff) সাইজের সীমা, কোনো নেটওয়ার্ক নয়।
- স্টাইল পছন্দ: ভাষার সংস্করণ, ফরম্যাটার, লিন্টার নিয়ম।
- প্রক্রিয়া: পর্যবেক্ষণ → পরিকল্পনা → কাজ → প্রতিফলন; ডিফস (diffs) দেখান; পরীক্ষা চালান; N সংখ্যক ধাপ পর্যন্ত পুনরাবৃত্তি করুন; পরীক্ষা পাস হলে থামুন।
এই কাঠামো সহ Claude 4.5-এর 100 লাইনের রোল-প্লে (role-play) পরিস্থিতির প্রয়োজন হবে না। এটা শুধু কাজ করে।
বাস্তব উদাহরণ: একটি ফেইলিং টেস্ট (failing test) ঠিক করুন
ধরুন tests/time_test.py-এ একটি টেস্ট ফেইল (fail) করছে কারণ parse_time("09:00") 32400 এর পরিবর্তে 5400 রিটার্ন করে। এজেন্টের লুপটি দেখতে এইরকম হওয়া উচিত:
- পর্যবেক্ষণ: time.py এবং time_test.py পড়ুন; pytest -k parse_time চালান।
- পরিকল্পনা: অনুমান—সেকেন্ড বনাম মিনিটের গণিতে ভুল; parse_time সম্পাদনা করার প্রস্তাব করুন; ইউনিট এজ কেস (unit edge case) যোগ করুন।
- কাজ: parse_time প্যাচ করুন, লিডিং-জিরো (leading-zero) ঘণ্টার জন্য একটি পরীক্ষা যোগ করুন; পরীক্ষা চালান।
- প্রতিফলন: যদি পরীক্ষা এখনও ফেইল (fail) করে, ত্রুটি পড়ুন, গণিত বা রেজেক্স (regex) সামঞ্জস্য করুন, পুনরায় চালান।
মিনিমাল সফল প্যাচটি (minimal successful patch) সম্ভবত দুই লাইনের পরিবর্তন হতে পারে। এটাই মূল বিষয়। ছোট সম্পাদনা, দ্রুত চক্র, আসল অগ্রগতি।
কোথায় হালকা-ওজন রান্নাঘরের সিঙ্কের চেয়ে ভালো
- বিলম্বতা: একটি মডেল, একটি লুপ, কোনো অর্কেস্ট্রেশন ওভারহেড (orchestration overhead) নেই।
- স্বচ্ছতা: প্রতিটি ধাপ নিরীক্ষণযোগ্য। আপনি এটি ডিফস (diff) করতে পারেন, আপনি এটি রিভার্ট (revert) করতে পারেন, আপনি এটি পুনরায় চালাতে পারেন।
- নিয়ন্ত্রণ: গার্ডরেইল ক্ষয়ক্ষতি স্থানীয় রাখে। এজেন্ট আপনার অবকাঠামোতে ঘুরে বেড়াতে পারবে না।
- খরচ: কম কল, কম কনটেক্সট (context), অনুমানযোগ্য টোকেন।
- ইউএক্স (UX): আপনি এটি বোঝেন। আপনার সহকর্মীরা এটি বোঝেন। আপনার ভবিষ্যতের আপনি আপনাকে ঘৃণা করবে না।
এবং আপস:
- বিস্তৃতি: একটি হালকা-ওজনের কোডিং এজেন্ট একবারে আপনার পাঁচটি ভাষায় লেখা মনোরেপোকে (monorepo) রিফ্যাক্টর (refactor) করবে না। এবং করাও উচিত নয়।
- উদ্যোগ: এটি বহু-সপ্তাহব্যাপী রোডম্যাপ (roadmap) তৈরি করবে না। আপনি একে কাজ দেবেন।
- স্টেটফুলনেস (Statefulness): একটি বড় মেমরি লেয়ার (memory layer) ছাড়া, এটি নকশা অনুযায়ী দূরের ইতিহাস ভুলে যায়। এটি একটি বৈশিষ্ট্য যতক্ষণ না এটি একটি বাগ হয়।
কোডিং এজেন্টদের জন্য Claude 4.5-এর সেরা স্থান
Claude 4.5 যেখানে উজ্জ্বল:
- ডিফস (diffs) এবং লগ সম্পর্কে পড়া এবং যুক্তি দেওয়া।
- সুসংগত, সংক্ষিপ্ত কোড পরিবর্তন তৈরি করা।
- সীমাবদ্ধতা অনুসরণ করা এবং অনিশ্চয়তা সম্পর্কে স্পষ্ট হওয়া।
যেখানে এটি খুব ভালো নয়:
- API আচরণ অনুমান করা যা এটি পড়তে পারে না।
- ভারী টুল কোরিওগ্রাফি (tool choreography) (এখানে প্রয়োজন নেই)।
- মানুষের সাহায্য ছাড়া দীর্ঘ মাল্টি-ফাইল রিফ্যাক্টর (multi-file refactor)।
শেষের পয়েন্টটি গুরুত্বপূর্ণ। শক্তিশালী ফলাফল পাওয়ার সেরা উপায় হল এজেন্টকে বড় না করা—কাজটিকে ছোট করা। আপনার মস্তিষ্ক ব্যবহার করুন পরিধির জন্য, এবং Claude 4.5 সেই পরিধির মধ্যে সম্পাদনের জন্য।
IDE ইন্টিগ্রেশন নিয়ে কিছু কথা
পঞ্চাশটি টগল (toggle) সহ সরাসরি একটি IDE প্যানে (pane) এর মধ্যে এটি তৈরি করার লোভ প্রতিরোধ করুন। প্লেইন টেক্সট (plain text) ডিফস (diffs) সহ একটি টার্মিনাল-ভিত্তিক লুপ (loop) বিশ্বাস করা এবং ডিবাগ (debug) করা সহজ। আপনি যদি এডিটর সুগার (editor sugar) চান তবে এটিকে বোকা রাখুন:
- লুপ শুরু/বন্ধ করার কমান্ড।
- একটি স্প্লিট ভিউতে (split view) ডিফস (diffs) দেখান।
- রাইটের (write) জন্য অনুমোদন প্রম্পট (ঐচ্ছিক কিন্তু বুদ্ধিমানের কাজ)।
আপনি পরে ইন্টিগ্রেট (integrate) করতে পারেন। প্রথমে, এটিকে কাজ করান।
Sider.AI, পরিমিতভাবে ব্যবহার করলে, আসলে সাহায্য করে আপনি যদি এই ধরণের লুপ চালানোর জন্য কোনো ব্যবহারিক পরিবেশ চান, যেখানে নতুন করে কিছু তৈরি করতে হবে না, তাহলে Sider.AI সত্যিই কাজ করে—অন্তত যখন আপনি এটিকে সেই কাজের জন্য ব্যবহার করেন যেটাতে এটি ভালো। এটি কথোপকথন এবং ডিফস (diffs) পরিষ্কার রাখে, আপনাকে কমান্ড চালাতে দেয় এবং কোনো জাঁকজমকপূর্ণ “স্বয়ংক্রিয় এজেন্ট ফ্রেমওয়ার্ক” চাপিয়ে দেয় না। আসল কথা হল নিজের নিয়ম বজায় রাখা: ছোট প্রম্পট, টাইট লুপ, দৃশ্যমান ডিফস (diffs)। আপনার পথে আসে না, যা হওয়ার চেয়েও বিরল। সাধারণ ভুল (এবং কীভাবে বোকা দেখা যাওয়া এড়িয়ে যাওয়া যায়)
- অতিরিক্ত স্টাফড কনটেক্সট (stuffed context): আপনার প্রম্পট যদি মুক্তিপণের চিঠির মতো হয়, তবে আপনি ভুল করছেন। চাহিদার ভিত্তিতে ফাইল আনুন।
- অপরিপক্ক রিফ্যাক্টরিং: এজেন্ট মডিউল (module) পুনর্গঠন করার পরামর্শ দিচ্ছে? প্রথমে এটিকে পরীক্ষা পাস করান। পরে রিফ্যাক্টর (refactor) করুন।
- হ্যালুসিনেটেড ফাইল (Hallucinated files): একটি নতুন পাথে (path) কোনো write_file করার আগে list_dir এবং read_file প্রয়োজন।
- অসীম পুনরায় চালানোর লুপ: ধাপের সীমা দিন। প্রতিটি নতুন অনুমানের জন্য কারণ দর্শানোর দাবি করুন।
- একটি বিশাল ডিফস (diff): পরিবর্তন ভাগ করুন। ছোট ডিফস (diffs) দ্রুত ব্যর্থ হয় এবং যুক্তি দেওয়া সহজ।
প্যারানয়া (paranoia) ছাড়া নিরাপত্তা ও সুরক্ষা
- স্থানীয়ভাবে সম্পাদন: একটি স্যান্ডবক্সড ডিরেক্টরিতে (sandboxed directory) চালান। ডিফল্টরূপে কোনো নেটওয়ার্ক নয়।
- নির্ভরতা বিচ্ছিন্নতা: একটি স্থানীয় venv বা কন্টেইনার ব্যবহার করুন। সংস্করণ পিন করুন।
- সিক্রেট: এজেন্টের এটির প্রয়োজন নেই। যদি কোনো কমান্ডের টোকেনের (token) প্রয়োজন হয়, তবে থামুন এবং জিজ্ঞাসা করুন।
- নিরীক্ষণ: প্রতিটি পরিকল্পনা, ডিফস (diff) এবং কমান্ড একটি লগে (log) সংরক্ষণ করুন।
কীভাবে বুঝবেন এটি কাজ করছে
- সীসা সময় কমে যায়: যে বাগফিক্স (bugfix) করতে এক ঘণ্টা লাগত, এখন তা দশ মিনিটে হয়ে যায়।
- কম মোটা আঙুলের ভুল: ডিফস (diffs) ছোট হয়, পরীক্ষা সবুজ হয়।
- আপনি এটিকে বিশ্বাস করেন: আপনি প্রতিটি কাজের উপর নজর রাখা বন্ধ করে দেন কারণ এটি আপনাকে পোড়ায়নি।
- সহকর্মীরা এটি ব্যবহার করে: সাফল্যের সংজ্ঞা হল অন্যেরা কোনো মিটিং ছাড়াই এটি গ্রহণ করে।
সাবধানে স্কেলিং আপ (scaling up)
যদি আপনাকে সত্যিই স্কেল (scale) করতে হয়, তবে নিয়ম মেনে করুন:
- সমান্তরাল সাবটাস্ক (subtask), সমান্তরাল মস্তিষ্ক নয়: কাজ ভাগ করুন, আলাদা ডিরেক্টরিতে একাধিক হালকা-ওজনের লুপ চালান এবং সবুজ হয়ে গেলে মার্জ (merge) করুন।
- এপিসোডিক মেমরি (episodic memory), ব্রেইন ডাম্প (brain dump) নয়: সফল প্যাচ এবং লক্ষণ-থেকে-ফিক্স ম্যাপিং (symptoms-to-fix mappings) সংরক্ষণ করুন। প্রয়োজনে ব্যবহার করুন।
- পর্যায়ক্রমিক “বড়” পাস (pass): রিফ্যাক্টরের (refactor) জন্য মানুষ-পরিচালিত সেশন (session) রাখুন; এজেন্ট সহায়তা করে, নেতৃত্ব দেয় না।
একটি মিনিমাল রেফারেন্স ইমপ্লিমেন্টেশন (Minimal Reference Implementation) (স্কেচ)
এগিয়ে যাওয়ার জন্য পাইথন-ধরণের সিউডোকোড:
- def init(self, repo_root, model):
- self.history = [] # শেষ দুটি ডিফস (diffs) এবং পরীক্ষার আউটপুট
- "repo": summarize_repo(self.root),
- "constraints": {"write_whitelist": ["src/", "tests/"], "max_diff_lines": 300, "no_network": True},
- "history": self.history[-2:],
- plan = self.model("propose_plan", self.context(task))
- diff = self.model("propose_patch", {"plan": plan})
- out = run_cmd(plan.test_cmd)
- eval = self.model("evaluate", {"output": out, "plan": plan})
- self.history.append({"diff": diff, "out": tail(out)})
একটি মানুষের আকারের সমাপ্তি
শিল্প ক্রমাগত স্বয়ংক্রিয় ডেভেলপার এজেন্টদের প্রতিশ্রুতি দিয়ে চলেছে। আমাদের যা প্রয়োজন তা হল একজন সৎ সহকারী, যে পড়বে, পরিকল্পনা করবে, সম্পাদনা করবে, চালাবে এবং থামবে। Claude 4.5 সেই কাজে ভালো, যদি আপনি এটিকে এমন ফ্রেমওয়ার্কের নিচে চাপা না দেন যা মূলত নিজেদের ন্যায্যতা প্রমাণ করার জন্য বিদ্যমান। হালকা-ওজন কোনো আপস নয়—এটাই মূল বিষয়। লুপ তৈরি করুন, গার্ডরেইল যোগ করুন এবং টুলটিকে সেই কাজটি করতে দিন যা টুলগুলি সবসময় করে, যখন আপনি সেগুলোকে সহজ রাখেন: কাজকে ছোট করে।
উপসংহার: একঘেয়ে শর্টকাট যা জয়ী হয়
Claude 4.5 সহ একটি হালকা-ওজনের কোডিং এজেন্টের জন্য আপনার চেকলিস্ট এখানে দেওয়া হল:
- একটি লুপ, একটি মডেল, ছোট টুল।
- টাইট কনটেক্সট: কাজ, কয়েকটি ফাইল, শেষ আউটপুট।
- মিনিমাল ডিফস (diffs), ঘন ঘন পরীক্ষা, কঠিন সীমা।
- স্থানীয়, স্যান্ডবক্সড সম্পাদন; কোনো নেটওয়ার্ক নয়।
- ঐচ্ছিক এডিটর সুগার; কখনও প্রয়োজন নেই।
যদি আপনি ভালোভাবে দেখেন, তবে এটি ভালো সফটওয়্যার ইঞ্জিনিয়ারিংয়ের মতোই, শুধু দ্রুত। এবং এটাই আসল কথা। এখানে আপনি সবচেয়ে বুদ্ধিমানের কাজ যা করতে পারেন তা হল “স্বয়ংক্রিয়তা” অনুসরণ না করে—বরং শৃঙ্খলাবদ্ধতাকে বিধিবদ্ধ করা। আপনি এজেন্টের কাছে যত কম চাইবেন, তত বেশি পাবেন।
সাধারণ জিজ্ঞাসা
প্রশ্ন ১: কিভাবে Claude 4.5 দিয়ে একটি হালকা-ওজনের কোডিং এজেন্ট তৈরি করা শুরু করব?
একটি ছোট টুলসেট (পড়া, লেখা, অনুসন্ধান, চালানো) নির্ধারণ করুন, একটি কঠোর সিস্টেম প্রম্পট লিখুন এবং একটি পর্যবেক্ষণ → পরিকল্পনা → কাজ → প্রতিফলন লুপ বাস্তবায়ন করুন। কনটেক্সট ছোট রাখুন এবং আসল লগ ও ডিফস (diffs) দিন—যখন কাজটি সংকীর্ণ হয় এবং প্রতিক্রিয়া বাস্তব হয় তখন Claude 4.5 সবচেয়ে ভালো কাজ করে।
প্রশ্ন ২: Claude 4.5 কোডিং এজেন্টের জন্য কি আমার কোনো ভেক্টর ডেটাবেস বা মেমরি লেয়ারের প্রয়োজন?
না। বেশিরভাগ কাজের জন্য স্বল্প-মেয়াদী মেমরি এবং search_code যথেষ্ট। দীর্ঘ-মেয়াদী মেমরি তখনই যোগ করুন যদি আপনি বারবার একই রেপোতে (repo) যান এবং প্রমাণ করতে পারেন যে এটি এজেন্টকে বোকা না বানিয়ে টোকেন সাশ্রয় করে।
প্রশ্ন ৩: Claude 4.5 কোডিং এজেন্টের জন্য কোন গার্ডরেইলগুলি অত্যাবশ্যকীয়?
লেখার যোগ্য পাথগুলোর (path) হোয়াইটলিস্ট করুন, ডিফস (diff) সাইজের সীমা দিন, কমান্ড সীমাবদ্ধ করুন এবং প্রতিটি কাজ লগ করুন। এই সাধারণ সীমাগুলি এজেন্টকে অনুমানযোগ্য রাখে এবং রোলব্যাককে একঘেয়ে করে তোলে—যা ভাল।
প্রশ্ন ৪: একটি হালকা-ওজনের এজেন্ট কি মাল্টি-ফাইল রিফ্যাক্টর (multi-file refactor) পরিচালনা করতে পারে?
হ্যাঁ, যদি আপনি কাজটিকে ছোট ধাপে ভাগ করেন এবং লুপটিকে টাইট রাখেন। Claude 4.5 রিফ্যাক্টর (refactor) পরিচালনা করতে পারে, তবে আপনি পরিধি পরিচালনা করবেন; অন্যথায় আপনি একটি বিশাল, ভঙ্গুর ডিফস (diff) পাবেন যা আপনি পর্যালোচনা করতে চাইবেন না।
প্রশ্ন ৫: Sider.AI Claude 4.5 কোডিং এজেন্টের সাথে কোথায় ফিট (fit) করে?
Sider.AI একটি পরিপাটি কর্মক্ষেত্র হিসাবে উপযোগী: কথোপকথন, ডিফস (diffs) এবং কমান্ড এক জায়গায়, কোনো ভারী এজেন্ট ফ্রেমওয়ার্ক চাপানো ছাড়াই। আপনার লুপ চালানোর জন্য এটি ব্যবহার করুন, এটিকে নতুন করে তৈরি করার জন্য নয়।