𝗖𝗼𝗱𝗲𝘅 𝗙𝗶𝘅𝗶𝗻𝗴 𝗖𝗼𝗱𝗲𝘅: 𝗔 𝗖𝗼𝗻𝘀𝗲𝗻𝘀𝘂𝘀 𝗟𝗼𝗼𝗽
میں نے ایک ایسا ایجنٹ لوپ بنایا ہے جو صرف کوڈ تجویز کرنے سے کہیں زیادہ کام کرتا ہے۔ یہ کوڈ لکھتا ہے، اس کا جائزہ لیتا ہے، اور خود ہی اپنے پل ریکویسٹس (pull requests) کو مرج (merge) کرتا ہے۔
اس کی جانچ کے لیے، میں نے اس لوپ کو codex CLI کے ایک فورک (fork) پر استعمال کیا۔ میں نے ایجنٹس کو خود سافٹ ویئر ٹھیک کرنے کی کوشش کرنے دی۔ یہ ایک خالص تجربہ ہے۔ اس فورک کے کوئی صارفین یا اسٹارز نہیں ہیں۔ یہ ایک میکانزم کے بارے میں ہے، کسی پروڈکٹ کے بارے میں نہیں۔
یہ لوپ اس طرح کام کرتا ہے:
- انٹیک (Intake): ایک اپ اسٹریم بگ فورک میں ایک ایشو (issue) بن جاتا ہے۔ لوپ صرف چھوٹے اور میکانکی بگ منتخب کرتا ہے جنہیں وہ مکمل کر سکے۔
- سالورز کی بحث (Solvers Argue): متعدد ایجنٹس مختلف حل تجویز کرتے ہیں۔ ایک سالور کم سے کم تبدیلی چاہتا ہے۔ دوسرا صاف ستھرا ڈھانچہ (structure) چاہتا ہے۔ تیسرا کوڈ شامل کرنے کے بجائے اسے حذف کرنا چاہتا ہے۔ وہ آپس میں متفق نہیں ہوتے۔
- جج کا فیصلہ (Judge Arbitrates): ایک جج بحث کا مطالعہ کرتا ہے۔ اگر سالورز متفق نہ ہوں، تو جج انہیں مزید راؤنڈز کے لیے واپس بھیج دیتا ہے۔ جج یہ بھی ریکارڈ کرتا ہے کہ اس نے مخصوص آئیڈیاز کو کیوں مسترد کیا۔
- نفاذ اور مرج (Implement and Merge): جب وہ اتفاقِ رائے پر پہنچ جاتے ہیں، تو لوپ پیچ (patch) لکھتا ہے، ٹیسٹ چلاتا ہے، اور ایک PR کھولتا ہے۔ اگر ٹیسٹ پاس ہو جائیں، تو یہ خود ہی اسے مرج کر دیتا ہے۔
آپ اسے ایشو #34 میں عملی طور پر دیکھ سکتے ہیں۔ ایجنٹس نے ایک کنکرنسی بگ (concurrency bug) پر بحث کی۔ فیصلے تک پہنچنے سے پہلے انہوں نے ثالثی کے تین راؤنڈز مکمل کیے۔ لوپ نے انسانی مداخلت کے بغیر، یعنی کسی انسان کے کوڈ کی ایک لائن بھی ٹائپ کیے بغیر، ایک حقیقی حل اور ریگریشن ٹیسٹ (regression test) تیار کیا۔
ایک دلچسپ نتیجہ PR #16 میں دیکھنے کو ملا۔ لوپ رپورٹ شدہ بگ کو دوبارہ پیدا (reproduce) کرنے میں ناکام رہا۔ ایک فرضی حل بنانے کے بجائے، اس نے محض اس رویے کو لاک کرنے کے لیے ایک ٹیسٹ شامل کیا اور رک گیا۔ ایک ایسا لوپ جو یہ جانتا ہو کہ کب پیچ نہیں کرنا ہے، اس لوپ سے زیادہ مفید ہے جو ہمیشہ ڈف (diff) پیدا کرتا ہے۔
لوپ اب تک تقریباً 16 PRs کو مرج کر چکا ہے۔ یہ UTF-8 ہینڈلنگ اور کمانڈ کی اصلاح جیسے چھوٹے کاموں کو سنبھالتا ہے۔ یہ مکمل کوڈ بیس کو برقرار نہیں رکھتا، لیکن یہ چھوٹے اور محدود بگ کو شروع سے آخر تک حل کر دیتا ہے۔
انسان اب بھی اصول طے کرتے ہیں اور کام کا جائزہ لیتے ہیں۔ ہم اب بھی ہر PR کو چیک کرتے ہیں۔ کوڈ خودکار ہے، لیکن توجہ انسانی ہے۔
آپ پورا عمل GitHub پر دیکھ سکتے ہیں۔ بحث دیکھنے کے لیے ایشو #34 اور PR #37 دیکھیں۔
Optional learning community: https://t.me/GyaanSetuAi