𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁 𝗔𝘀𝗸𝗲𝗱 𝗣𝗲𝗿𝗺𝗶𝘀𝘀𝗶𝗼𝗻 𝗳𝗼𝗿 𝗘𝘃𝗲𝗿𝘆 𝗧𝗶𝗻𝘆 𝗦𝘁𝗲𝗽
আমার AI অ্যাসিস্ট্যান্টের একটি বড় সমস্যা ছিল। এটি অনুমতি চাইতে অস্বীকার করেনি, বরং এটি অতিরিক্ত ঘন ঘন অনুমতি চাইত।
আমি একে একটি PDF পড়ার মতো সহজ কাজ দিতাম। অ্যাসিস্ট্যান্টটি একটি পদক্ষেপ নিত, অনুমোদনের জন্য চাইত, কমান্ডটি চালাত এবং তারপর সাথে সাথেই পরবর্তী ছোট পদক্ষেপের জন্য আবার অনুমতি চাইত। একটি কাজ প্রম্পটের অন্তহীন চক্রে পরিণত হতো।
অনুমোদনের প্রম্পটগুলো প্রয়োজনীয়। আপনি চান যে একটি লোকাল অ্যাসিস্ট্যান্ট কমান্ড চালানোর আগে, ফাইল লেখার আগে বা অ্যাপ খোলার আগে থেমে যাক। কিন্তু প্রকৃত কাজের জন্য অনেকগুলো পদক্ষেপের প্রয়োজন হয়। একটি PDF পড়ার ক্ষেত্রে Python আছে কি না তা পরীক্ষা করা, একটি কনভার্টার খুঁজে বের করা, সেই কনভার্টার চালানো এবং টেক্সট পড়া—এসব অন্তর্ভুক্ত।
যদি প্রতিটি পদক্ষেপের জন্য অনুমতির প্রয়োজন হয়, তবে আপনি ঝুঁকির মূল্যায়ন করা বন্ধ করে দেবেন। আপনি কেবল বিরক্তি দূর করার জন্য প্রম্পটগুলোতে ক্লিক করতে শুরু করবেন। এটি আপনাকে সুরক্ষা ব্যবস্থা উপেক্ষা করতে অভ্যস্ত করে তোলে। যা কোনো সুরক্ষা না থাকার চেয়েও বেশি বিপজ্জনক।
পুরানো কাজের ধারাটি এমন ছিল:
- অ্যাসিস্ট্যান্ট একটি টুল বেছে নেয়
- পলিসির কারণে কনফার্মেশন প্রয়োজন হয়
- ইউজার অনুমোদন দেয়
- টুলটি চলে
- অ্যাসিস্ট্যান্ট পরবর্তী টুলের জন্য আবার জিজ্ঞাসা করে
অ্যাসিস্ট্যান্টটি ইউজারের উদ্দেশ্য বুঝতে ব্যর্থ হচ্ছিল। আপনি কেবল একটি ছোট পরীক্ষা অনুমোদন দিচ্ছিলেন না, বরং আপনি একটি সম্পূর্ণ কাজ অনুমোদন দিচ্ছিলেন।
আমি CliGate-এর কাজের ধরন পরিবর্তন করেছি। এখন, চ্যাটে একবার প্রথম পদক্ষেপটি অনুমোদন দিলে সিস্টেম একটি ফ্ল্যাগ সেট করে দেয়। এর ফলে পরবর্তী পদক্ষেপগুলো নতুন করে অনুমোদনের প্রয়োজন ছাড়াই চলতে পারে। অ্যাসিস্ট্যান্টটি তখনও প্রকৃত ফলাফল পায় যাতে সে কাজ চালিয়ে যেতে পারে।
আমি একটি escape hatch যোগ করেছি: /safe। এই কমান্ডটি explicit confirmation mode পুনরায় চালু করে দেয়।
আমি একটি language bug-ও ঠিক করেছি। যখন সিস্টেম কোনো কাজ চালিয়ে যেত, তখন এটি মাঝে মাঝে প্রম্পটের ভাষা পরিবর্তন করে ফেলত। আপনি যদি চীনা ভাষায় কথা বলতেন, অ্যাসিস্ট্যান্টটি পরবর্তী প্রম্পটের জন্য ইংরেজিতে চলে যেত। এখন, অ্যাসিস্ট্যান্টটি সঠিক ভাষা বেছে নেওয়ার জন্য আপনার শেষ প্রকৃত মেসেজটি দেখে নেয়।
সমাধানটি অনুমোদন বন্ধ করা নয়। সমাধান হলো ইউজার কেন অনুমোদন দিয়েছিলেন তা মনে রাখা।
লোকাল টুলের জন্য, task-scoped trust ব্যবহার করুন:
- বড় কোনো সীমানা অতিক্রম করার আগে জিজ্ঞাসা করুন
- বর্তমান কাজের জন্য দেওয়া অনুমোদনটি মনে রাখুন
- strict mode-এ ফিরে যাওয়ার উপায় রাখুন
- সিস্টেম মেসেজ যেন ইউজারের উদ্দেশ্য পরিবর্তন না করে তা নিশ্চিত করুন
এভাবেই আমি CliGate-এ অনুমোদন ব্যবস্থা তৈরি করি। এটি Claude Code, Codex CLI এবং Gemini CLI-এর জন্য আমার লোকাল control plane।
আপনি কীভাবে approval fatigue সামলান? আপনি কি প্রতিটি tool call-এর জন্য, প্রতিটি task-এর জন্য, নাকি প্রতিটি session-এর জন্য অনুমোদন দেন?
আমার কোডিং এজেন্ট প্রতিটি ছোট পদক্ষেপের জন্য অনুমতি চাচ্ছিল
আমি ইদানীং বিভিন্ন AI কোডিং এজেন্ট নিয়ে কাজ করছি, এবং আমার অভিজ্ঞতা বেশ মিশ্র। কিছু এজেন্ট অবিশ্বাস্যভাবে দক্ষ, আবার কিছু এজেন্ট এতটাই সাবধানী যে তারা কাজের গতি কমিয়ে দেয়।
সম্প্রতি আমার সাথে যা ঘটল তা হলো: আমার কোডিং এজেন্ট প্রতিটি ছোট পদক্ষেপের জন্য আমার কাছে অনুমতি চাচ্ছিল।
"আমি কি এই ফাইলটি পড়তে পারি?" "আমি কি এই কমান্ডটি চালাতে পারি?" "আমি কি এই ডিরেক্টরি তৈরি করতে পারি?"
প্রতিবার যখন আমি 'Yes' বা 'y' টাইপ করতাম, তখন আমার কাজের মনোযোগ বা 'flow' নষ্ট হয়ে যাচ্ছিল। আমি চাইছিলাম এজেন্টটি যেন স্বয়ংক্রিয়ভাবে কাজ করতে পারে, কিন্তু সে যেন অন্ধভাবে সবকিছু না করে।
কেন এমন হয়?
এর মূল কারণ হলো 'Safety' এবং 'Alignment'। ডেভেলপাররা চান না তাদের এজেন্ট যেন ভুলবশত কোনো গুরুত্বপূর্ণ ফাইল মুছে ফেলে বা ক্ষতিকারক কমান্ড চালায়। তাই তারা এজেন্টকে খুব বেশি সতর্ক করে দেন। এটি একটি নিরাপদ পদ্ধতি, কিন্তু এটি ডেভেলপারদের জন্য বিরক্তিকর হতে পারে।
সমাধান কী?
আমি বুঝতে পারলাম যে, এর সমাধান হলো এজেন্টকে আরও স্পষ্ট নির্দেশিকা বা system prompt দেওয়া। আমি এজেন্টকে বলে দিলাম যে, সে নির্দিষ্ট কিছু কাজের জন্য (যেমন: ফাইল পড়া বা টেস্ট রান করা) সরাসরি অনুমতি না চেয়ে কাজ করতে পারে, কিন্তু বড় কোনো পরিবর্তন বা কমান্ড চালানোর আগে অবশ্যই জানাবে।
এতে করে কাজের গতি এবং নিরাপত্তা—উভয়ের মধ্যে একটি ভারসাম্য বজায় রাখা সম্ভব হয়েছে।