-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task hi
लक्ष्य: अपने एजेंट को निर्देशित करके CLI में एक बिल्कुल नया कमांड जोड़ना —
शुरू से अंत तक। हम lockedin endorse जोड़ेंगे: यह पूरी तरह अनजान लोगों को उन
skills के लिए endorse करता है जो लगभग निश्चित रूप से उनके पास नहीं हैं। एकदम brand पर।
यह ट्यूटोरियल का दिल है। आप असली loop का अभ्यास करेंगे: spec → tests → implementation → हरा गेट → review।
← पिछला: ट्यूटोरियल 2 कोड कैसे काम करता है · अगला: ट्यूटोरियल 4 प्रॉम्प्टिंग और रिव्यू
कुछ भी prompt करने से पहले, spec को खुद सादी भाषा में लिखें। अस्पष्ट अनुरोध अस्पष्ट कोड लाते हैं — किसी इंसान या एजेंट से।
endorse5–7 लाइनें print करता है, हर एक किसी randomly चुने व्यक्ति को (मौजूदाNAMESpool दोबारा इस्तेमाल करें) किसी randomly चुने buzzword skill के लिए (एक नया pool) endorse करती है। यह एक satirical one-liner पर समाप्त होता है। यहlockedin endorseके रूप में, in-session/endorseके रूप में reachable होना चाहिए, औरhelpमें दिखना चाहिए। सारी randomness को seededpick/shufflehelpers इस्तेमाल करने ही चाहिए ताकि output deterministic रहे।npm testहरा रहना चाहिए, और एक नया test होना चाहिए जो कम से कम एक invariant को pin करे।
वही पैराग्राफ़ वह चीज़ है जो आप एजेंट को देंगे। ध्यान दें कि यह अध्याय 2 की constraints के नाम लेता है (seeded RNG, test गेट, invariant की आदत)।
एक plan माँगकर शुरू करें। किसी भी फ़ाइल के बदलने से पहले एक खराब approach पकड़ने का यह आपका मौका है।
"मैं LockedIn CLI में एक
endorseकमांड जोड़ना चाहता हूँ। spec यह है: [paste your spec]। कोड लिखने से पहले, बताओ कौन-सी फ़ाइलें बदलोगे और तुम्हारा approach क्या है, ताकि मैं मंज़ूरी दे सकूँ।connectजैसे कमांड के मौजूदा pattern को follow करो।"
एक अच्छा plan उल्लेख करता है: एक नया SKILLS pool + src/lockedin.js में एक
renderEndorse(), उसे dispatch() और handleSlash() में जोड़ना, renderHelp() में
एक row जोड़ना, नए function/pool को export करना, और दोनों test फ़ाइलों में tests जोड़ना।
अगर plan seeded-RNG नियम या tests छोड़ता है, अभी कहें।
एजेंट से implementation से पहले tests लिखने को कहें। Test-first आपके spec को कुछ executable में बदल देता है, और यह एजेंट को ईमानदार रखता है।
"बढ़िया। पहले, सिर्फ़ failing tests जोड़ो: एक unit test कि
renderEndorse()एक ज्ञात skill और कम से कम 5 endorsements का ज़िक्र करने वाला text लौटाता है, और एकcli.test.jstest किlockedin endorseexit 0 करता है और एक endorsement print करता है। एक fixed seed इस्तेमाल करो।renderEndorseअभी implement मत करो — पहले tests fail होते देखें।"
उन्हें चलाएँ और उन्हें सही कारण से fail होते देखें (function अभी मौजूद नहीं):
npm testअब implementation को हरी झंडी दें:
"अब उन tests को पास कराने के लिए इसे implement करो,
connectpattern को follow करते हुए। ~25 buzzword skills का एकSKILLSpool, एकrenderEndorse()जो string लौटाए,dispatchऔरhandleSlashजोड़ो, एकhelprow जोड़ो, और जो जोड़ा उसे export करो। randomness के लिए सिर्फ़pick/shuffleइस्तेमाल करो।"
एजेंट जो बनाता है वह बाकी फ़ाइल जैसा ही दिखना चाहिए। उदाहरण के लिए, एक SKILLS pool और
एक renderer:
const SKILLS = [
'Thought Leadership', 'Synergy', 'Storytelling', 'Vibes',
'Strategic Napping', '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 + ' को ' + skills[i % skills.length] + ' के लिए endorse किया'));
out.push('', ' आपने 6 अजनबियों को ऐसी skills के लिए endorse किया जिन्हें आप verify नहीं कर सकते। वे एक घंटे के भीतर आपको भी endorse करेंगे।');
return out.join('\n');
}…साथ में dispatch() और handleSlash() में एक-एक line, renderHelp() में एक row,
और module.exports में जोड़ा गया SKILLS, renderEndorse।
npm testहरा? आपने अभी एक एजेंट के साथ, test-first, एक feature ship किया। हरा नहीं? यह सामान्य है — अध्याय 4 के iteration loop पर जाएँ और एजेंट को ठीक-ठीक बताएँ कि क्या fail हुआ।
फिर असली चीज़ पर नज़र डालें (tests text जाँचते हैं, पर आपको फिर भी देखना चाहिए):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproducibleऐसा diff कभी स्वीकार न करें जिसे आपने पढ़ा नहीं। खासकर इनके लिए स्किम करें:
-
क्या इसने pattern को follow किया? नया कमांड
connectकी तरह होना चाहिए — कोई नई dependency नहीं,src/के अंदर कोईconsole.logनहीं। -
सिर्फ़ seeded RNG? diff में
Math.randomखोजें। कोई नहीं होना चाहिए। - क्या इसने कुछ ऐसा छुआ जो नहीं छूना चाहिए था? बदलाव additive होना चाहिए; असंबंधित लाइनें नहीं हिलनी चाहिए।
-
क्या नया test सार्थक है? अगर बाद में कोई feature तोड़े तो यह fail होना चाहिए —
सिर्फ़
trueassert न करे।
अगर कुछ गड़बड़ है, एक fix माँगें (अध्याय 4)। अगर सही है, आपका काम पूरा।
ऊपर का पूरा loop असल में करें। फिर, extra credit के लिए, एजेंट से इसे बढ़ाने को कहें:
- "
endorseको एक optional नाम लेने दो:lockedin endorse Adaको खासतौर पर Ada को endorse करना चाहिए। एक test जोड़ो, गेट हरा रखो।"
अब आपने एक feature शुरू से अंत तक बनाया है। आख़िरी अध्याय इसे सहज करने के बारे में है — एक lead engineer की तरह 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.