𝗧𝗵𝗲 𝗥𝗲𝗽𝗼 𝗜𝘀 𝗧𝗵𝗲 𝗖𝗼𝗻𝘁𝗲𝘅𝘁: 𝗪𝗵𝘆 𝗔𝗴𝗲𝗻𝘁𝘀 𝗗𝗼𝗻’𝘁 𝗡𝗲𝗲𝗱 𝗛𝗶𝘀𝘁𝗼𝗿𝘆

কোডিং এজেন্টরা আপনি তাদের যা দেন তা-ই পড়ে। এটি শুনতে একটি শক্তির মতো মনে হতে পারে। কিন্তু সাধারণত, এটি একটি সমস্যা।

আমি আগে এজেন্টদের অনেক বেশি ডকুমেন্টেশন দিতাম। আমি specs, ADRs এবং planning docs লিখতাম। আমি ভাবতাম যত বেশি কনটেক্সট হবে ততই ভালো। তারপর আমি দেখলাম একটি এজেন্ট অত্যন্ত আত্মবিশ্বাসের সাথে একটি ভুল করছে। এটি কোনো হ্যালুসিনেশন (hallucination) ছিল না। এটি কেবল একটি পুরনো ডকুমেন্ট অনুসরণ করছিল যা এমন একটি সিস্টেমের বর্ণনা দিচ্ছিল যা আমরা মাসখানেক আগেই ব্যবহার করা বন্ধ করে দিয়েছি। এটি সত্যের পরিবর্তে ইতিহাসকে মেনে চলছিল।

ইতিহাস মানুষের জন্য। এটি ব্যাখ্যা করে কেন একটি সিস্টেমের অস্তিত্ব আছে। এটি আপনাকে ট্রেড-অফ (trade-offs) এবং পুরনো সিদ্ধান্তগুলো বুঝতে সাহায্য করে।

এজেন্টরা আলাদা। তারা বর্তমান সিস্টেমটি এডিট করে। সেই কাজের জন্য তাদের ঐতিহাসিক লিখিত বর্ণনার প্রয়োজন নেই। তাদের প্রয়োজন বর্তমানের 'সোর্স অফ ট্রুথ' (source of truth)।

তাদের প্রয়োজন: • বর্তমান schemas • বর্তমান module boundaries • বর্তমান APIs • বর্তমান tests • বর্তমান configurations

আপনি যদি চান একটি এজেন্ট একটি ডাটাবেস বুঝুক, তবে তাকে প্রতিটি মাইগ্রেশন লগ (migration log) পুনরায় পড়তে বাধ্য করবেন না। তাকে বর্তমান schema দিন। আপনি যদি চান সে আর্কিটেকচার বুঝুক, তবে তাকে পুরনো ADRs পড়তে দেবেন না। তাকে বর্তমান module graph দিন।

বিপদ হলো কনটেক্সট পলিউশন (context pollution)। এটি তখন ঘটে যখন একটি তথ্য দুটি জায়গায় থাকে: কোডে এবং একটি Markdown ফাইলে। কোড দ্রুত পরিবর্তিত হয়। কিন্তু লিখিত বর্ণনা কেবল তখনই পরিবর্তিত হয় যখন কেউ তা মনে করে। যখন এই দুটি ভিন্ন হয়ে যায়, এজেন্ট পুরনো বা মেয়াদোত্তীর্ণ ডকুমেন্টটিকে বিশ্বাস করে। একজন মানুষের মতো এজেন্ট চোখ কুঁচকে দেখে না বা ক্রস-চেক করে না। এটি যা প্রথমে পড়ে, তাকেই সত্য হিসেবে ধরে নেয়।

আরও ভালো ডকুমেন্টেশন লেখা বন্ধ করুন। বরং তথ্যগুলো যাতে নষ্ট বা পুরনো হয়ে যাওয়ার সুযোগ কম থাকে, সেই ব্যবস্থা করুন।

নিয়মগুলোকে টেক্সট থেকে সিস্টেমের কাঠামোর মধ্যে নিয়ে আসুন: • আর্কিটেকচারের জন্য directory structures ব্যবহার করুন। • উদ্দেশ্যের (intent) জন্য naming ব্যবহার করুন। • APIs-এর জন্য package exports ব্যবহার করুন। • boundaries-এর জন্য lint rules ব্যবহার করুন। • data contracts-এর জন্য schemas ব্যবহার করুন। • behavior-এর জন্য tests ব্যবহার করুন।

README-তে থাকা একটি নিয়ম হলো একটি পরামর্শ। কিন্তু একটি ESLint config-এ থাকা নিয়ম হলো একটি দেয়াল। এজেন্ট কোনো দেয়ালকে উপেক্ষা করতে পারে না।

আমি আমার instruction ফাইলগুলো ছোট করে এনেছি। সেগুলো এখন আর আর্কিটেকচার পুনরায় বর্ণনা করে না। পরিবর্তে, সেগুলো আর্কিটেকচার কোথায় আছে তার দিকে নির্দেশ করে।

ইতিহাস মানুষের জন্য রাখুন। এজেন্টদের জন্য বর্তমানকে সাজান।

উৎস: https://dev.to/gyu07/the-repo-is-the-context-why-agents-dont-need-history-4ien

ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi