𝗖𝗼𝗱𝗲𝘅 𝗙𝗶𝘅𝗶𝗻𝗴 𝗖𝗼𝗱𝗲𝘅: 𝗔 𝗖𝗼𝗻𝘀𝗲𝗻𝘀𝘂𝘀 𝗟𝗼𝗼𝗽
আমি এমন একটি এজেন্ট লুপ তৈরি করেছি যা কেবল কোড সাজেস্ট করার চেয়েও বেশি কিছু করতে পারে। এটি কোড লেখে, তা রিভিউ করে এবং নিজেই নিজের পুল রিকোয়েস্ট (pull requests) মার্জ করে।
এটি পরীক্ষা করার জন্য, আমি লুপটিকে codex CLI-এর একটি ফোর্ক (fork)-এর দিকে নির্দেশিত করেছি। আমি এজেন্টদের সফটওয়্যারটি নিজে থেকেই ঠিক করার সুযোগ দিয়েছি। এটি একটি বিশুদ্ধ পরীক্ষা। এই ফোর্কটিতে কোনো ইউজার বা স্টার নেই। এটি কোনো প্রোডাক্ট নয়, বরং একটি মেকানিজম বা কার্যপদ্ধতি নিয়ে পরীক্ষা।
লুপটি যেভাবে কাজ করে তা নিচে দেওয়া হলো:
- ইনটেক (Intake): একটি আপস্ট্রিম বাগ (upstream bug) ফোর্কটিতে একটি ইস্যু হিসেবে দেখা দেয়। লুপটি কেবল ছোট এবং যান্ত্রিক বাগগুলো বেছে নেয় যা এটি সম্পন্ন করতে পারে।
- সলভারদের বিতর্ক (Solvers Argue): একাধিক এজেন্ট ভিন্ন ভিন্ন ফিক্স বা সমাধানের প্রস্তাব দেয়। একজন সলভার চায় সবচেয়ে ছোট পরিবর্তন করতে। অন্যজন চায় একটি পরিচ্ছন্ন স্ট্রাকচার। তৃতীয়জন কোড যোগ করার পরিবর্তে কোড মুছে ফেলতে চায়। তাদের মধ্যে মতপার্থক্য তৈরি হয়।
- বিচারকের মধ্যস্থতা (Judge Arbitrates): একজন বিচারক বিতর্কটি পড়েন। যদি সলভারদের মধ্যে মতভেদ থাকে, বিচারক তাদের আরও কয়েক রাউন্ডের জন্য ফেরত পাঠান। বিচারক কেন নির্দিষ্ট কিছু আইডিয়া প্রত্যাখ্যান করা হয়েছে তাও রেকর্ড করে রাখেন।
- ইমপ্লিমেন্ট এবং মার্জ (Implement and Merge): একবার তারা ঐকমত্যে (consensus) পৌঁছালে, লুপটি প্যাচ (patch) লেখে, টেস্ট চালায় এবং একটি PR ওপেন করে। যদি টেস্ট সফল হয়, তবে এটি নিজেই নিজেকে মার্জ করে নেয়।
আপনি issue #34-এ এটি সরাসরি দেখতে পারেন। এজেন্টরা একটি কনকারেন্সি বাগ (concurrency bug) নিয়ে বিতর্ক করেছিল। একটি সিদ্ধান্তে পৌঁছানোর আগে তারা মধ্যস্থতার তিনটি রাউন্ড পার করেছে। একজন মানুষ একটি লাইন কোড না লিখেই লুপটি একটি আসল ফিক্স এবং একটি রিগ্রেশন টেস্ট তৈরি করেছে।
PR #16-এ একটি মজার ঘটনা ঘটেছিল। লুপটি রিপোর্ট করা একটি বাগ পুনরায় তৈরি (reproduce) করতে পারছিল না। একটি ভুয়া ফিক্স তৈরি করার পরিবর্তে, এটি কেবল সেই আচরণটি লক করার জন্য একটি টেস্ট যোগ করেছিল এবং থেমে গিয়েছিল। যে লুপ জানে কখন প্যাচ করা উচিত নয়, সেটি সবসময় ডিফ (diff) তৈরি করা লুপের চেয়ে বেশি কার্যকর।
লুপটি এ পর্যন্ত প্রায় ১৬টি PR মার্জ করেছে। এটি UTF-8 হ্যান্ডলিং এবং কমান্ড ফিক্সের মতো ছোট ছোট কাজগুলো সম্পন্ন করে। এটি পুরো একটি কোডবেস রক্ষণাবেক্ষণ করে না, তবে ছোট এবং নির্দিষ্ট সীমার বাগগুলো শুরু থেকে শেষ পর্যন্ত সমাধান করে।
মানুষ এখনও নিয়ম নির্ধারণ করে এবং কাজগুলো রিভিউ করে। আমরা এখনও প্রতিটি PR পরীক্ষা করি। কোডটি স্বয়ংক্রিয়, কিন্তু এর তদারকি মানুষের হাতে।
আপনি GitHub-এ পুরো প্রক্রিয়াটি দেখতে পারেন। বিতর্কটি দেখতে issue #34 এবং PR #37 দেখুন।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi