-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task fa
🌎 زبان: فارسی — مشاهدهٔ هر ۳۳ زبان
هدف: افزودن یک فرمانِ کاملاً نو به CLI — سرتاسری — با هدایتِ عاملِ خود. فرمانِ
lockedin endorse را اضافه میکنیم: غریبههای کاملاً ناشناس را برای مهارتهایی که تقریباً
بهیقین ندارند تأیید مهارت میکند. کاملاً هماهنگ با برند.
این قلبِ آموزش است. حلقهی واقعی را تمرین میکنید: مشخصات → آزمونها → پیادهسازی → دروازهی سبز → بازبینی.
← قبلی: آموزش ۲ کد چگونه کار میکند · بعدی: آموزش ۴ اعلاننویسی و بازبینی
پیش از هر اعلانی، مشخصات را خودتان به زبان ساده بنویسید. درخواستهای مبهم کدِ مبهم میگیرند — از یک انسان یا یک عامل.
endorseپنج تا هفت خط چاپ میکند، هر خط یک فردِ تصادفیانتخابشده (با استفادهی دوباره از مخزنِ موجودِNAMES) را برای یک مهارتِ پرطمطراقِ تصادفیانتخابشده (یک مخزنِ جدید) تأیید مهارت میکند. با یک تکخطیِ طنزآمیز پایان مییابد. باید بهعنوانlockedin endorse، بهعنوان/endorseدروننشست و درhelpقابلدسترس باشد. همهی تصادفیسازی باید از کمککنندههای بذردارِpick/shuffleاستفاده کند تا خروجی قطعی بماند.npm testباید سبز بماند و باید یک آزمونِ جدید باشد که دستِکم یک ناوردا را میخکوب کند.
آن پاراگراف چیزی است که به عامل خواهید سپرد. توجه کنید که محدودیتهای فصل ۲ را نام میبرد (مولدِ بذردار، دروازهٔ آزمون، عادتِ ناورداها).
با درخواستِ یک برنامه شروع کنید. این فرصتِ شماست که یک رویکردِ بد را پیش از تغییرِ هر فایلی بگیرید.
«میخواهم یک فرمانِ
endorseبه LockedIn CLI اضافه کنم. مشخصات این است: [paste your spec]. پیش از نوشتن کد، به من بگو کدام فایلها را تغییر میدهی و رویکردت چیست، تا تأییدش کنم. برای فرمانی مانندconnectاز الگوهای موجود پیروی کن.»
یک برنامهی خوب به اینها اشاره میکند: یک مخزنِ جدیدِ SKILLS + یک renderEndorse()
در src/lockedin.js، سیمکشیِ آن به dispatch() و handleSlash()، افزودن یک ردیف به
renderHelp()، صادرکردنِ تابع/مخزنِ جدید، و افزودن آزمونها در هر دو فایلِ آزمون. اگر
برنامه قاعدهی مولدِ بذردار یا آزمونها را از قلم انداخت، همین حالا بگویید.
از عامل بخواهید آزمونها را پیش از پیادهسازی بنویسد. آزمونمحوری مشخصاتِ شما را به چیزی اجراپذیر بدل میکند و عامل را درستکار نگه میدارد.
«عالی. نخست، فقط آزمونهای شکستخورده اضافه کن: یک آزمونِ واحد که
renderEndorse()متنی برمیگرداند که یک مهارتِ شناختهشده و دستِکم ۵ تأیید مهارت را نام میبرد، و یک آزمونِcli.test.jsکهlockedin endorseبا کد ۰ خارج میشود و یک تأیید مهارت چاپ میکند. از یک بذرِ ثابت استفاده کن. هنوزrenderEndorseرا پیاده نکن — بگذار نخست شکستِ آزمونها را ببینیم.»
آنها را اجرا کنید و تماشا کنید که به دلیلِ درست شکست میخورند (تابع هنوز وجود ندارد):
npm testاکنون به پیادهسازی چراغ سبز بدهید:
«حالا آن را پیاده کن تا آن آزمونها سبز شوند، با پیروی از الگوی
connect. یک مخزنِSKILLSاز حدود ۲۵ مهارتِ پرطمطراق، یکrenderEndorse()که یک رشته برمیگرداند اضافه کن،dispatchوhandleSlashرا سیمکشی کن، یک ردیفِhelpاضافه کن، و آنچه افزودی را صادر کن. برای تصادفیسازی فقط ازpick/shuffleاستفاده کن.»
آنچه عامل تولید میکند باید بسیار شبیه باقیِ فایل باشد. برای نمونه، یک مخزنِ SKILLS
و یک رندرگر:
const SKILLS = [
'رهبری فکری', 'همافزایی', 'قصهگویی', 'حالوهوا',
'چرتزدن راهبردی', 'همراستایی ذینفعان', 'صراحت رادیکال', /* ...~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 + ' را برای ' + skills[i % skills.length] + ' تأیید کردید'));
out.push('', ' شما ۶ غریبه را برای مهارتهایی تأیید کردید که نمیتوانید راستیآزمایی کنید. آنها ظرف یک ساعت شما را هم تأیید میکنند.');
return out.join('\n');
}…بهعلاوهی یک خط در هر یک از dispatch() و handleSlash()، یک ردیف در renderHelp()،
و افزودنِ SKILLS, renderEndorse به module.exports.
npm testسبز؟ همینحالا یک ویژگی را با یک عامل و بهصورت آزمونمحور عرضه کردید. سبز نیست؟ این عادی است — به حلقهی تکرارِ فصل ۴ بروید و دقیقاً به عامل بگویید چه شکست خورد.
سپس به چیزِ واقعی نگاه کنید (آزمونها متن را بررسی میکنند، اما شما همچنان باید نگاه کنید):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproducibleهرگز یک diff را که نخواندهاید نپذیرید. بهویژه اینها را مرور کنید:
-
آیا از الگو پیروی کرد؟ فرمانِ جدید باید آینهی
connectباشد — بدون وابستگیِ جدید، بدونconsole.logدرونِsrc/. -
فقط مولدِ بذردار؟ diff را برای
Math.randomبگردید. هیچکدام نباید باشد. - آیا چیزی را که نباید دست زد؟ تغییر باید افزایشی باشد؛ خطوطِ نامرتبط نباید جابهجا شوند.
-
آیا آزمونِ جدید معنادار است؟ باید شکست بخورد اگر کسی بعداً ویژگی را بشکند — نه
اینکه فقط
trueرا ادعا کند.
اگر چیزی سرِ جایش نبود، بخواهید اصلاحش کند (فصل ۴). اگر خوب بود، کارتان تمام است.
کل حلقهی بالا را واقعاً انجام دهید. سپس، برای امتیازِ اضافی، از عامل بخواهید آن را گسترش دهد:
- «کاری کن
endorseیک نامِ اختیاری بپذیرد:lockedin endorse Adaباید بهطور خاص Ada را تأیید مهارت کند. یک آزمون اضافه کن، دروازه را سبز نگه دار.»
اکنون یک ویژگی را سرتاسری ساختهاید. فصلِ آخر دربارهی انجامِ روانِ این کار است — اعلاننویسی و بازبینی مانند یک مهندسِ سرگروه.
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.