Skip to content

Tutorial 3 Your First Agent Task bn

James Morris edited this page Jul 29, 2026 · 1 revision

টিউটোরিয়াল ৩ · আপনার প্রথম এজেন্ট টাস্ক

লক্ষ্য: আপনার এজেন্টকে নির্দেশ দিয়ে CLI-তে একটি একদম নতুন কমান্ড যোগ করুন — শুরু থেকে শেষ পর্যন্ত। আমরা lockedin endorse যোগ করব: এটি সম্পূর্ণ অচেনা মানুষদের এমন সব দক্ষতার জন্য endorse করে যা তাদের প্রায় নিশ্চিতভাবেই নেই। একদম brand-এর সঙ্গে মানানসই।

এটাই টিউটোরিয়ালের হৃদয়। আপনি আসল loop অনুশীলন করবেন: spec → test → implementation → সবুজ গেট → review।

← পূর্ববর্তী: টিউটোরিয়াল ২ কোড কীভাবে কাজ করে · পরবর্তী: টিউটোরিয়াল ৪ প্রম্পটিং ও রিভিউ


ধাপ ০ — "সম্পন্ন" দেখতে কেমন হবে ঠিক করুন

কিছু prompt করার আগে, spec-টি নিজে সাধারণ ভাষায় লিখুন। অস্পষ্ট অনুরোধ অস্পষ্ট কোড আনে — মানুষ বা এজেন্ট, যেকারো কাছ থেকে।

endorse ৫–৭টি লাইন print করে, প্রতিটি এলোমেলোভাবে বেছে নেওয়া একজন ব্যক্তিকে (বিদ্যমান NAMES pool পুনর্ব্যবহার করুন) এলোমেলোভাবে বেছে নেওয়া একটি buzzword skill-এর জন্য (একটি নতুন pool) endorse করে। এটি একটি স্যাটায়ারিক এক-লাইন দিয়ে শেষ হয়। এটি lockedin endorse হিসেবে, in-session /endorse হিসেবে reachable হতে হবে, এবং help-এ দেখাতে হবে। সমস্ত randomness অবশ্যই seeded pick/shuffle helper ব্যবহার করবে যাতে output deterministic থাকে। npm test সবুজ থাকতে হবে, এবং অন্তত একটি invariant নির্দিষ্ট করে এমন একটি নতুন test থাকা উচিত।

ওই অনুচ্ছেদটাই আপনি এজেন্টকে দেবেন। খেয়াল করুন এটি অধ্যায় ২-এর constraint-গুলোর নাম বলে (seeded RNG, test গেট, invariant অভ্যাস)।

ধাপ ১ — এজেন্টকে plan করতে বলুন, code নয়

একটি 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 মিস করে, এখনই তা বলুন।

ধাপ ২ — Test-first

এজেন্টকে implementation-এর আগে test লিখতে বলুন। Test-first আপনার spec-কে চালানো যায় এমন কিছুতে রূপান্তর করে, এবং এটি এজেন্টকে সৎ রাখে।

"দারুণ। প্রথমে, শুধু failing test যোগ করো: একটি unit test যে renderEndorse() একটি পরিচিত skill এবং অন্তত ৫টি endorsement উল্লেখকারী text ফেরত দেয়, এবং একটি cli.test.js test যে lockedin endorse exit 0 করে ও একটি endorsement print করে। একটি fixed seed ব্যবহার করো। renderEndorse এখনো implement করো না — আগে test ফেল হতে দেখি।"

সেগুলো চালান এবং সঠিক কারণে ফেল হতে দেখুন (function এখনো নেই):

npm test

ধাপ ৩ — এজেন্টকে implement করতে দিন

এবার implementation-এ সবুজ সংকেত দিন:

"এবার সেই test-গুলো পাস করানোর জন্য এটি implement করো, connect pattern অনুসরণ করে। ~২৫টি buzzword skill-এর একটি SKILLS pool, একটি renderEndorse() যা string ফেরত দেয়, dispatchhandleSlash যুক্ত করো, একটি help row যোগ করো, এবং যা যোগ করলে তা 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

ধাপ ৫ — গ্রহণ করার আগে review করুন

যে diff আপনি পড়েননি সেটি কখনো গ্রহণ করবেন না। বিশেষভাবে এগুলোর জন্য চোখ বুলান:

  • এটি কি pattern অনুসরণ করেছে? নতুন কমান্ডের connect-এর প্রতিফলন হওয়া উচিত — কোনো নতুন dependency নেই, src/-এর ভেতরে কোনো console.log নেই।
  • শুধু seeded RNG? diff-এ Math.random খুঁজুন। কোনোটাই থাকা উচিত নয়।
  • এটি কি এমন কিছু ছুঁয়েছে যা ছোঁয়া উচিত ছিল না? পরিবর্তন additive হওয়া উচিত; সম্পর্কহীন line নড়া উচিত নয়।
  • নতুন test কি অর্থবহ? পরে কেউ feature ভাঙলে এটি ফেল হওয়া উচিত — শুধু true assert করা নয়।

কিছু ঠিক না থাকলে, একটি fix চান (অধ্যায় ৪)। ভালো থাকলে, আপনার কাজ শেষ।


✅ আপনার এজেন্ট দিয়ে করে দেখুন

উপরের গোটা loop-টা সত্যিকারভাবে করুন। তারপর, বাড়তি নম্বরের জন্য, এজেন্টকে এটি বাড়াতে বলুন:

  • "endorse-কে একটি ঐচ্ছিক নাম নিতে দাও: lockedin endorse Ada নির্দিষ্টভাবে Ada-কে endorse করবে। একটি test যোগ করো, গেট সবুজ রাখো।"

আপনি এখন একটি feature শুরু থেকে শেষ পর্যন্ত তৈরি করেছেন। শেষ অধ্যায় এটি মসৃণভাবে করা নিয়ে — একজন লিড ইঞ্জিনিয়ারের মতো prompt দেওয়া ও review করা।

পরবর্তী: টিউটোরিয়াল ৪ প্রম্পটিং ও রিভিউ

📘 LockedIn CLI wiki

Tutorial

Reference


Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.

Clone this wiki locally