কোডেক্স এবং মাল্টি-এজেন্ট ওয়ার্কফ্লো: নিয়ন্ত্রণ না হারিয়ে এজেন্টদের সাথে কাজ করুন
· 6 min read · Filippo Spinella · AI, Developer Tools, Productivity, Software Engineering
প্রথমবার একটি কোডিং এজেন্ট আসলে আপনার জন্য একটি বাগ সংশোধন করে, প্রতিক্রিয়া প্রায় সবসময় একই হয়: উত্সাহ এবং সন্দেহের মিশ্রণ। চমৎকার, নিশ্চিত. কিন্তু তারপর আপনি পার্থক্য তাকান এবং নিজেকে জিজ্ঞাসা করুন: "ঠিক আছে, কিন্তু তিনি ঠিক কি স্পর্শ করেছেন? আমি কি তাকে বিশ্বাস করতে পারি? সে কি আগামীকাল আবার একইভাবে এটি করবে?"।
এখানেই আমি মনে করি আকর্ষণীয় অংশ শুরু হয়। এজেন্ট যখন একটি ফাংশন লেখেন তখন নয়, কিন্তু যখন এটি সম্পূর্ণ কাজ করার জন্য যথেষ্ট সক্ষম হয়: সংগ্রহস্থল পড়ুন, একটি প্যাচ তৈরি করুন, পরীক্ষা চালান, একটি PR খুলুন, একটি পর্যালোচনা মন্তব্যের পরে ফিরে আসুন৷ কোডেক্স ঠিক সেই দিকেই অগ্রসর হচ্ছে: ব্যাকগ্রাউন্ড ওয়ার্ক, আলাদা ওয়ার্কট্রি, ইন্টিগ্রেটেড ব্রাউজার, অটোমেশন, প্লাগইন, মেমরি এবং আরও স্পষ্ট অনুমতি নিয়ন্ত্রণ।
বিন্দুটি এমন ভবিষ্যতের কল্পনা করা নয় যেখানে কেউ আর কোড পড়ে না। এটি একটি ভয়ানক ভবিষ্যত হবে, সেইসাথে বেশ নিষ্পাপ। মূল বিষয় হল এজেন্টদের সাথে কীভাবে কাজ করা যায় যারা তাদের সবকিছু করতে না দিয়ে অনেক কিছু করতে পারে।
অভ্যাসের পরিবর্তন
ঐতিহ্যগত স্বয়ংসম্পূর্ণ সঙ্গে আপনি সবসময় চাকা ছিল. এআই একটি লাইনের পরামর্শ দিয়েছে, আপনি সিদ্ধান্ত নিয়েছেন। একজন এজেন্টের সাথে, তবে, সম্পর্ক পরিবর্তিত হয়: আপনি তাকে একটি লক্ষ্য দেন এবং সে নিজেই একাধিক ধাপ অতিক্রম করে।
এটি শক্তিশালী, কিন্তু এটি সমস্যাটি পরিবর্তন করে। প্রশ্ন এখন আর শুধু "মডেল প্রোগ্রাম করতে পারেন?"। প্রশ্ন হয়ে যায়:
- আমি কি তাকে একটি ছোট যথেষ্ট সুযোগ দিয়েছি?
- আপনি ফলাফল চেক কিভাবে জানেন?
- আমি কি বিচ্ছিন্ন পরিবেশে কাজ করছি?
- চূড়ান্ত পর্যালোচনা এখনও মানবিক এবং সতর্ক?
একটি স্বাস্থ্যকর কর্মপ্রবাহ একটি জাদুর কাঠির চেয়ে এইরকম দেখায়:
এটি "এজেন্ট সবকিছু তৈরি করে" এর চেয়ে কম রোমান্টিক শোনায়, তবে এটি আরও ভাল কাজ করে। এবং এটিও যে দলগুলি মানুষের সাথে ভাল কাজ করে: পরিষ্কার কাজ, দ্রুত প্রতিক্রিয়া, স্পষ্ট জবাবদিহিতা।
ভাল প্রম্পট প্রায় একটি ভাল টিকিট
সবচেয়ে বিপজ্জনক প্রম্পট হল অস্পষ্ট কিন্তু আত্মবিশ্বাসী: "চালান পৃষ্ঠা ঠিক করুন", "আর্কিটেকচার উন্নত করুন", "প্রমাণ মডিউল পরিষ্কার করুন"। এগুলি এমন অনুরোধ যা উত্পাদনশীল শোনায় এবং বিশাল পার্থক্য তৈরি করে৷ কিন্তু তারপর আপনি নিজেকে প্রত্নতত্ত্ব করছেন.
একটি সহায়ক প্রম্পট আরো বিরক্তিকর. উদাহরণ স্বরূপ: চালান পৃষ্ঠার জন্য CSV রপ্তানি প্রয়োগ করুন, জেনে রাখুন যে টেবিলটি app/(dashboard)/invoices/page.tsx-এ রয়েছে, প্রশ্নগুলি src/server/invoices.ts-এ রয়েছে এবং ইতিমধ্যেই app/(dashboard)/reports-এ অনুরূপ প্যাটার্ন রয়েছে।
তারপর স্পষ্ট সীমাবদ্ধতা যোগ করুন: ডাটাবেস স্কিমা পরিবর্তন করবেন না, নির্ভরতা যোগ করবেন না যদি একটি ছোট ইউটিলিটি যথেষ্ট হয়, বিদ্যমান UI শৈলী রাখুন। এবং যাচাইকরণের সাথে বন্ধ করুন: npm test -- invoices এবং npm run build।
এই ধরনের সংক্ষিপ্ত মানে "AI কে আরও ভালভাবে ব্যাখ্যা করা" নয়। আপনি কী অর্পণ করছেন তা আপনার কাছে পরিষ্কার করার জন্য এটি সর্বোপরি কাজ করে। আপনি যদি এটি সুনির্দিষ্টভাবে লিখতে না পারেন, তাহলে হয়তো কাজটি এখনও এজেন্টের জন্য প্রস্তুত নয়।
তিনটি কাজ যা আমি স্বেচ্ছায় অর্পণ করি
প্রথমটি পুনরাবৃত্তিমূলক কিন্তু যাচাইযোগ্য কাজ: পরীক্ষা যোগ করা, একটি নতুন অভ্যন্তরীণ API তে কল স্থানান্তর করা, আমদানি আপডেট করা, অবচিত উপাদানগুলি প্রতিস্থাপন করা, টাইপস্ক্রিপ্ট ত্রুটিগুলি ঠিক করা। এখানে এজেন্ট ঘন্টা বাঁচাতে পারে এবং ঝুঁকি নিয়ন্ত্রণযোগ্য।
দ্বিতীয়টি হল অনুসন্ধানমূলক কাজ: "এই মোট হিসাবটি কোথায় করা হয়েছে তা খুঁজুন", "আমাকে ব্যাখ্যা করুন কেন এই পরীক্ষাটি ভঙ্গুর", "বাগটি পুনরুত্পাদন করুন এবং আমাকে বলুন কোন ফাইলগুলি প্রভাবিত বলে মনে হচ্ছে"। এমনকি যখন এটি অবিলম্বে একটি প্যাচ তৈরি করে না, এটি দরকারী পুনরুদ্ধার করতে পারে।
তৃতীয়টি হল পুনরাবৃত্ত রক্ষণাবেক্ষণের কাজ: ছোট নির্ভরতা আপডেট, পুরানো বৈশিষ্ট্যের ফ্ল্যাগ পরিষ্কার করা, অবরুদ্ধ পিআরগুলির সারাংশ, ভুলে যাওয়া TODOগুলি পরীক্ষা করা। এটি গ্ল্যামারাস নয়, তবে এটি ঠিক সেই ধরণের কাজ যা গাদা করে।
আমি মানুষের রাখা যে তিনটি কাজ
পণ্যের সিদ্ধান্ত মানুষের থাকে। যদি কোনও পরিবর্তন পরিবর্তন করে যে কোনও ব্যবহারকারী কীভাবে অর্থ প্রদান করে, ডেটা মুছে দেয়, দাম দেখে বা অনুমতি বোঝে, আমি একজন দায়িত্বশীল ব্যক্তি চাই।
নিরাপত্তা সীমানাও মানুষের মনোযোগের দাবি রাখে: প্রমাণীকরণ, ভূমিকা, টোকেন, সংবেদনশীল ডেটা লগিং, ডাটাবেস স্থানান্তর। একজন এজেন্ট বাস্তবায়নে সাহায্য করতে পারে, কিন্তু একমাত্র সিদ্ধান্ত গ্রহণকারী হতে হবে না।
অবশেষে, আমি স্থাপত্য রুচি মানুষের প্রয়োজন সবকিছু রাখা. একটি এজেন্ট একটি রিফ্যাক্টর প্রস্তাব করতে পারে, কিন্তু একটি বিমূর্ততা সত্যিই প্রয়োজনীয় কিনা বা আমরা একটি অস্তিত্বহীন সমস্যাকে পালিশ করছি কিনা তা বোঝা একটি কাজ থেকে যায়।
পর্যালোচনা ঐচ্ছিক নয়
প্রলোভন, যখন একটি এজেন্ট ভাল হয়, CI এর সবুজকে বিশ্বাস করা। এটা বোধগম্য. এটাও যখন সমস্যা শুরু হয়।
আমি সর্বদা কমপক্ষে পাঁচটি জিনিস দেখি:
- প্যাচ শুধুমাত্র অনুরোধ করা টাস্ক সমাধান করে?
- তিনি কি এমন ফাইলগুলি স্পর্শ করেছিলেন যার সাথে কিছুই করার ছিল না?
- পরীক্ষাগুলি কি অভিনব আচরণ বা শুধু সুখী সুযোগ কভার করে?
- কোড স্থানীয় নিদর্শন অনুসরণ করে?
- প্রকল্পের বাকি হিসাবে ত্রুটিগুলি পরিচালনা করা হয়?
যখন কিছু ভুল হয়, প্রতিক্রিয়া নির্দিষ্ট হওয়া প্রয়োজন। "এটি ঠিক করুন" অলস। আরও ভাল: এই ইউটিলিটি parseMoney-কে src/lib/money.ts-এ নকল করে; সেই ফাংশনটি পুনরায় ব্যবহার করুন, EUR কেসের জন্য একটি পরীক্ষা যোগ করুন এবং বিলিং মডিউলের সর্বজনীন API পরিবর্তন করবেন না।
এজেন্ট ছোট, যাচাইযোগ্য মন্তব্যে অনেক ভালো সাড়া দেয়। কৌতূহলবশত, মানুষ তাই না.
প্রহর মূল্য প্রচেষ্টা
যদি একজন এজেন্ট ফাইল পড়তে, কোড লিখতে এবং কমান্ড চালাতে পারে তবে এটি একটি শক্তিশালী প্রক্রিয়া হিসাবে বিবেচিত হওয়া উচিত। বিভ্রান্তির দরকার নেই, আপনার স্বাস্থ্যবিধি দরকার।
আলাদা ওয়ার্কট্রি বা শাখা ব্যবহার করুন। তাই আপনি পার্থক্য তুলনা করতে পারেন, ব্যর্থ পরীক্ষাগুলি ফেলে দিতে পারেন এবং আপনি যা করছেন তার সাথে এজেন্টের কাজ মিশ্রিত করবেন না।
সীমিত অনুমতি. rg, git diff, npm test এবং npm run build এর মতো কমান্ডগুলি বেশ বিনামূল্যে হতে পারে। স্থাপনা, ডাটাবেস স্থানান্তর, গোপনীয়তায় অ্যাক্সেস এবং ধ্বংসাত্মক কমান্ড অবশ্যই স্পষ্ট থাকতে হবে।
আপনার প্রয়োজন না হলে নেটওয়ার্ক অ্যাক্সেস হ্রাস করুন। অনেক কাজের জন্য, অফিসিয়াল ডকুমেন্টেশন, প্যাকেজ রেজিস্ট্রি এবং নির্দিষ্ট অভ্যন্তরীণ পরিষেবাগুলি যথেষ্ট। কম পৃষ্ঠ এলাকা, কম আশ্চর্য.
ট্র্যাক কর্ম. যখন একটি প্যাচ পর্যালোচনায় আসে, তখন আপনি প্রম্পট পুনর্গঠন করতে সক্ষম হবেন, কমান্ড কার্যকর করা হবে, পরীক্ষা পাস করা হয়েছে এবং ফাইলগুলি সংশোধন করা হয়েছে৷ আমলাতন্ত্র তৈরি করার জন্য নয়, কিছু ভুল হলে কী হয়েছে তা বোঝার জন্য।
একটি দল হিসাবে শুরু করার একটি সহজ উপায়
যদি আমি একটি ছোট দলে এজেন্টদের পরিচয় করিয়ে দিই, আমি বড় বিপ্লব ছাড়াই শুরু করব।
আমি স্পষ্ট সুযোগ সহ সমস্যার জন্য একটি agent-ready লেবেল তৈরি করব। আমি প্রসঙ্গ, সীমাবদ্ধতা এবং যাচাইকরণ আদেশ সহ একটি টেমপ্লেট যোগ করব। আমি ছোট পিআর চাইব, আদর্শভাবে কয়েকশ লাইনের নিচে। দৃশ্যমান পরিবর্তনের জন্য আমার পরীক্ষা বা স্ক্রিনশট লাগবে। এবং সর্বোপরি আমি একত্রিত হওয়ার জন্য একজন ব্যক্তিকে দায়ী রাখব।
দুই সপ্তাহ পরে আমি ডেটা দেখব: কোন কাজগুলিকে সত্যিই গতি দেওয়া হয়েছিল, কোন পর্যালোচনাগুলি ভারী ছিল, কোন প্রম্পটগুলি বিভ্রান্তিকর ছিল, কোডবেসের কোন অংশগুলি অর্পণ করার জন্য খুব ভঙ্গুর।
এটি "আজ থেকে আমরা এজেন্টদের সাথে সবকিছু করব" এর চেয়ে কম দর্শনীয় পদ্ধতি, তবে এটি এমন একটি যা আপনাকে অনুশোচনা ছাড়াই তৃতীয় সপ্তাহে যেতে দেয়।
সবচেয়ে মানবিক অংশ
মজার বিষয় হল যে যত বেশি স্বায়ত্তশাসিত এজেন্ট হবে, ক্লাসিক দক্ষতাগুলি তত বেশি গুরুত্বপূর্ণ হয়ে উঠবে: একটি ভাল টিকিট লেখা, ছোট কাট করা, পরীক্ষা তৈরি করা, পার্থক্য পড়া, যোগাযোগ করা ট্রেড-অফ। এজেন্ট তাদের ত্বরান্বিত করে যারা ইতিমধ্যেই ভালভাবে কাজ করতে জানে। যারা খারাপভাবে অর্পণ করে তাদের বিশৃঙ্খলাও এটি প্রসারিত করে।
তাই না, আমি ইঞ্জিনিয়ারিং করা বন্ধ করার শর্টকাট হিসাবে মাল্টি-এজেন্ট ওয়ার্কফ্লো দেখতে পাচ্ছি না। আমি এগুলিকে গুরুত্বপূর্ণ অংশগুলিতে আরও শক্তি স্থানান্তর করার উপায় হিসাবে দেখি: কী তৈরি করতে হবে তা সিদ্ধান্ত নেওয়া, এটি কাজ করে তা নিশ্চিত করা, সিস্টেমটিকে বোধগম্য রাখা।
এজেন্টরা দুর্দান্ত অ্যাসিঙ্ক্রোনাস সহকর্মী তৈরি করতে পারে। কিন্তু একজন অ্যাসিঙ্ক্রোনাস সহকর্মী, দরকারী হতে, প্রসঙ্গ, সীমানা এবং পর্যালোচনা প্রয়োজন। অন্য সবার মতোই।