-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 2 How the Code Works hi
लक्ष्य: उन कुछ डिज़ाइन निर्णयों को समझना जो इस प्रोजेक्ट को एक AI एजेंट के साथ बदलना आसान — और सुरक्षित — बनाते हैं। आपको कोड याद करने की ज़रूरत नहीं; आपको मानसिक मॉडल चाहिए, ताकि आप एजेंट को सटीक निर्देश दे सकें।
← पिछला: ट्यूटोरियल 1 परिचय · अगला: ट्यूटोरियल 3 आपका पहला एजेंट टास्क
lockedin-cli/
├── bin/lockedin.js # entry point — एकमात्र हिस्सा जो input/output करता है
├── src/lockedin.js # core — pure functions जो strings लौटाते हैं
├── test/
│ ├── unit.test.js # core functions को सीधे test करता है
│ └── cli.test.js # असली binary चलाकर उसका output जाँचता है
├── tools/screenshot.js # docs/ में दिखने वाली SVGs render करता है
└── package.json # metadata + `npm test` script
चार विचार इसे चलाते हैं। इन्हें सीख लें और आप लगभग कोई भी बदलाव आत्मविश्वास के साथ एजेंट से माँग सकते हैं।
src/lockedin.js खोलें। ध्यान दें कि render functions print नहीं करते — वे
strings लौटाते हैं:
function renderConnect() {
const names = shuffle(NAMES).slice(0, 6);
// ...लाइनों का एक array बनाता है...
return out.join('\n'); // text लौटाता है; कुछ print नहीं करता
}सारी असली printing (और आपके keystrokes पढ़ना) bin/lockedin.js में होती है। यह
"core data लौटाता है, edge I/O करता है" विभाजन यहाँ की सबसे महत्वपूर्ण चीज़ है,
क्योंकि जो function सिर्फ़ एक string लौटाता है, उसे test करना बहुत आसान है:
const out = app.renderConnect();
assert.ok(out.includes("“I’d love to add you to my professional network.” — भेजा गया "));कोई terminal mock नहीं, कोई stdout capture नहीं। जब आप एजेंट से एक feature जोड़ने को कहते हैं, इसी वजह से वह उसके लिए एक तेज़, भरोसेमंद test भी जोड़ सकता है।
मज़ाक src/lockedin.js के ऊपरी हिस्से में सादे arrays में रहते हैं:
const HOOKS = [ 'Unpopular opinion:', 'इसे sink in होने दें।', /* ...~25 total... */ ];
const LESSONS = [ '→ आपका network ही आपका net worth है।', /* ... */ ];Generators इन pools में से चुनते हैं। v1.2.0 में हर pool ~25 variations तक बढ़ा,
और template pools की एक दूसरी परत जोड़ी गई (जैसे POST_REVEALS और
REFLECT_TAGSETS) ताकि हर output की संरचना बदले, सिर्फ़ शब्द नहीं। content जोड़ना
अक्सर एक array में strings जोड़ने जितना सरल होता है — एजेंट को देने के लिए एक बढ़िया
पहला काम।
random output और automated tests सुनने में असंगत लगते हैं। यह प्रोजेक्ट उस घेरे को एक seedable random number generator से हल करता है:
setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b → वही seed, वही postहर random चुनाव साझा pick() / shuffle() helpers से जाता है, जो उस seeded generator
से खींचते हैं। LOCKEDIN_SEED=42 सेट करें और CLI पूरी तरह reproducible है। किसी भी
बदलाव का सुनहरा नियम: नई randomness को pick / shuffle इस्तेमाल करना ही चाहिए, कभी
सीधे Math.random नहीं — वरना determinism (और tests) टूट जाते हैं। इसे संभालकर रखें;
अध्याय 3 में आप एजेंट को यह याद दिलाएँगे।
-
test/unit.test.jscore functions को call करता है और वे जो strings लौटाते हैं उन पर assert करता है (तेज़, सटीक)। -
test/cli.test.jsअसल मेंbin/lockedin.jsचलाता है और उसका असली stdout व exit code जाँचता है (साबित करता है कि पूरी चीज़ शुरू से अंत तक काम करती है)।
साथ में ये गेट हैं। ये invariants भी encode करते हैं — वे वादे जो ऐप करता है।
उदाहरण के लिए, एक post हमेशा एक ज्ञात hook से शुरू होती है और हमेशा कम से कम तीन →
lessons रखती है; "connect" screen हमेशा incalculable कहता है। जब एजेंट कोड बदलता है,
ये tests चुपचाप टूटे किसी भी वादे को पकड़ लेते हैं।
चारों विचार एक साथ रखें और आपको एक ऐसा codebase मिलता है जहाँ एक एजेंट कर सकता है:
- एक feature जोड़ना एक pure function के रूप में जो string लौटाता है,
- उसके लिए किसी I/O कसरत के बिना एक test जोड़ना,
- seeded RNG के ज़रिए output को reproducible रखना, और
- मौजूदा गेट चलाकर साबित करना कि कुछ नहीं टूटा।
यही वह loop है जिसे आप अगले अध्याय में चलाएँगे।
अपने एजेंट से अपनी समझ verify करने को कहें — पढ़कर, edit किए बिना:
- "
src/lockedin.jsका हर content pool और हर एक में कितनी entries हैं, सूचीबद्ध करो।" - "एक invariant दिखाओ जो
test/unit.test.jsgeneratePostके बारे में लागू करता है, और समझाओ कि उसे क्या तोड़ेगा।" - "seeded RNG कहाँ परिभाषित है, और किन functions को
Math.randomकी जगह उसे इस्तेमाल करना ही चाहिए? कुछ मत बदलो — बस समझाओ।"
जब एजेंट के उत्तर इस अध्याय से मेल खाएँ, आप बनाने के लिए तैयार हैं।
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.