-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task bn
লক্ষ্য: আপনার এজেন্টকে নির্দেশ দিয়ে CLI-তে একটি একদম নতুন কমান্ড যোগ করুন —
শুরু থেকে শেষ পর্যন্ত। আমরা lockedin endorse যোগ করব: এটি সম্পূর্ণ অচেনা মানুষদের
এমন সব দক্ষতার জন্য endorse করে যা তাদের প্রায় নিশ্চিতভাবেই নেই। একদম brand-এর সঙ্গে
মানানসই।
এটাই টিউটোরিয়ালের হৃদয়। আপনি আসল loop অনুশীলন করবেন: spec → test → implementation → সবুজ গেট → review।
← পূর্ববর্তী: টিউটোরিয়াল ২ কোড কীভাবে কাজ করে · পরবর্তী: টিউটোরিয়াল ৪ প্রম্পটিং ও রিভিউ
কিছু prompt করার আগে, spec-টি নিজে সাধারণ ভাষায় লিখুন। অস্পষ্ট অনুরোধ অস্পষ্ট কোড আনে — মানুষ বা এজেন্ট, যেকারো কাছ থেকে।
endorse৫–৭টি লাইন print করে, প্রতিটি এলোমেলোভাবে বেছে নেওয়া একজন ব্যক্তিকে (বিদ্যমানNAMESpool পুনর্ব্যবহার করুন) এলোমেলোভাবে বেছে নেওয়া একটি buzzword skill-এর জন্য (একটি নতুন pool) endorse করে। এটি একটি স্যাটায়ারিক এক-লাইন দিয়ে শেষ হয়। এটিlockedin endorseহিসেবে, in-session/endorseহিসেবে reachable হতে হবে, এবংhelp-এ দেখাতে হবে। সমস্ত randomness অবশ্যই seededpick/shufflehelper ব্যবহার করবে যাতে output deterministic থাকে।npm testসবুজ থাকতে হবে, এবং অন্তত একটি invariant নির্দিষ্ট করে এমন একটি নতুন test থাকা উচিত।
ওই অনুচ্ছেদটাই আপনি এজেন্টকে দেবেন। খেয়াল করুন এটি অধ্যায় ২-এর constraint-গুলোর নাম বলে (seeded RNG, test গেট, invariant অভ্যাস)।
একটি plan চেয়ে শুরু করুন। কোনো ফাইল বদলানোর আগে একটি খারাপ approach ধরার এটাই আপনার সুযোগ।
"আমি LockedIn CLI-তে একটি
endorseকমান্ড যোগ করতে চাই। spec এই: [paste your spec]। কোড লেখার আগে, বলো কোন ফাইলগুলো বদলাবে এবং তোমার approach কী, যাতে আমি অনুমোদন করতে পারি।connect-এর মতো একটি কমান্ডের বিদ্যমান pattern অনুসরণ করো।"
একটি ভালো plan উল্লেখ করে: একটি নতুন SKILLS pool + src/lockedin.js-এ একটি
renderEndorse(), এটিকে dispatch() ও handleSlash()-এ যুক্ত করা, renderHelp()-এ
একটি row যোগ করা, নতুন function/pool export করা, এবং দুটি test ফাইলেই test যোগ করা।
যদি plan seeded-RNG নিয়ম বা test মিস করে, এখনই তা বলুন।
এজেন্টকে implementation-এর আগে test লিখতে বলুন। Test-first আপনার spec-কে চালানো যায় এমন কিছুতে রূপান্তর করে, এবং এটি এজেন্টকে সৎ রাখে।
"দারুণ। প্রথমে, শুধু failing test যোগ করো: একটি unit test যে
renderEndorse()একটি পরিচিত skill এবং অন্তত ৫টি endorsement উল্লেখকারী text ফেরত দেয়, এবং একটিcli.test.jstest যেlockedin endorseexit 0 করে ও একটি endorsement print করে। একটি fixed seed ব্যবহার করো।renderEndorseএখনো implement করো না — আগে test ফেল হতে দেখি।"
সেগুলো চালান এবং সঠিক কারণে ফেল হতে দেখুন (function এখনো নেই):
npm testএবার implementation-এ সবুজ সংকেত দিন:
"এবার সেই test-গুলো পাস করানোর জন্য এটি implement করো,
connectpattern অনুসরণ করে। ~২৫টি buzzword skill-এর একটিSKILLSpool, একটিrenderEndorse()যা string ফেরত দেয়,dispatchওhandleSlashযুক্ত করো, একটিhelprow যোগ করো, এবং যা যোগ করলে তা export করো। randomness-এর জন্য শুধুpick/shuffleব্যবহার করো।"
এজেন্ট যা তৈরি করে তা ফাইলের বাকি অংশের মতোই দেখতে হওয়া উচিত। উদাহরণস্বরূপ, একটি
SKILLS pool এবং একটি renderer:
const SKILLS = [
'Thought Leadership', 'Synergy', 'গল্প বলা', 'Vibes',
'কৌশলগত ঘুম', 'Stakeholder Alignment', 'Radical Candour', /* ...~25 total... */
];
function renderEndorse() {
const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
const skills = shuffle(SKILLS);
const out = [''];
people.forEach((n, i) =>
out.push(' ✔ ' + n + '-কে endorse করা হয়েছে: ' + skills[i % skills.length]));
out.push('', ' আপনি যাচাই করতে পারেন না এমন skill-এর জন্য ৬ জন অপরিচিতকে endorse করেছেন। এক ঘণ্টার মধ্যে তারাও আপনাকে endorse করবে।');
return out.join('\n');
}…সঙ্গে dispatch() ও handleSlash()-এ একটি করে line, renderHelp()-এ একটি row,
এবং module.exports-এ SKILLS, renderEndorse যোগ করা।
npm testসবুজ? আপনি এইমাত্র একটি এজেন্টের সঙ্গে, test-first, একটি feature ship করলেন। সবুজ নয়? সেটা স্বাভাবিক — অধ্যায় ৪-এর iteration loop-এ যান এবং এজেন্টকে ঠিক কী ফেল করেছে বলুন।
তারপর আসল জিনিসটা চোখ বুলিয়ে দেখুন (test text পরীক্ষা করে, কিন্তু আপনার তবুও দেখা উচিত):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproducibleযে diff আপনি পড়েননি সেটি কখনো গ্রহণ করবেন না। বিশেষভাবে এগুলোর জন্য চোখ বুলান:
-
এটি কি pattern অনুসরণ করেছে? নতুন কমান্ডের
connect-এর প্রতিফলন হওয়া উচিত — কোনো নতুন dependency নেই,src/-এর ভেতরে কোনোconsole.logনেই। -
শুধু seeded RNG? diff-এ
Math.randomখুঁজুন। কোনোটাই থাকা উচিত নয়। - এটি কি এমন কিছু ছুঁয়েছে যা ছোঁয়া উচিত ছিল না? পরিবর্তন additive হওয়া উচিত; সম্পর্কহীন line নড়া উচিত নয়।
-
নতুন test কি অর্থবহ? পরে কেউ feature ভাঙলে এটি ফেল হওয়া উচিত — শুধু
trueassert করা নয়।
কিছু ঠিক না থাকলে, একটি fix চান (অধ্যায় ৪)। ভালো থাকলে, আপনার কাজ শেষ।
উপরের গোটা loop-টা সত্যিকারভাবে করুন। তারপর, বাড়তি নম্বরের জন্য, এজেন্টকে এটি বাড়াতে বলুন:
- "
endorse-কে একটি ঐচ্ছিক নাম নিতে দাও:lockedin endorse Adaনির্দিষ্টভাবে Ada-কে endorse করবে। একটি test যোগ করো, গেট সবুজ রাখো।"
আপনি এখন একটি feature শুরু থেকে শেষ পর্যন্ত তৈরি করেছেন। শেষ অধ্যায় এটি মসৃণভাবে করা নিয়ে — একজন লিড ইঞ্জিনিয়ারের মতো prompt দেওয়া ও review করা।
পরবর্তী: টিউটোরিয়াল ৪ প্রম্পটিং ও রিভিউ
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.