-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 2 How the Code Works ur
🌎 زبان: اردو — تمام ۳۳ زبانیں دیکھیں
مقصد: ان چند ڈیزائن انتخابات کو سمجھنا جو اس پروجیکٹ کو ایک AI ایجنٹ کے ساتھ بدلنا آسان — اور محفوظ — بناتے ہیں۔ آپ کو کوڈ یاد کرنے کی ضرورت نہیں؛ آپ کو ذہنی خاکہ درکار ہے، تاکہ آپ ایجنٹ کو درست ہدایت دے سکیں۔
← پچھلا: ٹیوٹوریل ۱ تعارف · اگلا: ٹیوٹوریل ۳ آپ کا پہلا ایجنٹ ٹاسک
lockedin-cli/
├── bin/lockedin.js # داخلی نقطہ — input/output کرنے والا واحد حصہ
├── src/lockedin.js # بنیادی حصہ — string واپس کرنے والے خالص فنکشن
├── test/
│ ├── unit.test.js # بنیادی فنکشنز کو براہِ راست ٹیسٹ کرتا ہے
│ └── cli.test.js # اصل بائنری چلاتا اور اس کا آؤٹ پٹ جانچتا ہے
├── tools/screenshot.js # docs/ میں نظر آنے والی SVG فائلیں بناتا ہے
└── package.json # میٹا ڈیٹا + `npm test` اسکرپٹ
چار خیالات اسے چلاتے ہیں۔ انہیں سیکھ لیں اور آپ ایجنٹ سے تقریباً کوئی بھی تبدیلی اعتماد کے ساتھ مانگ سکتے ہیں۔
src/lockedin.js کھولیں۔ غور کریں کہ رینڈر فنکشنز پرنٹ نہیں کرتے — وہ
اسٹرنگز واپس کرتے ہیں:
function renderConnect() {
const names = shuffle(NAMES).slice(0, 6);
// ...لائنوں کی ایک array بناتا ہے...
return out.join('\n'); // متن واپس کرتا ہے؛ کچھ پرنٹ نہیں کرتا
}تمام اصل پرنٹنگ (اور آپ کے کی اسٹروکس پڑھنا) bin/lockedin.js میں ہوتا ہے۔ یہ
"کور ڈیٹا واپس کرتا ہے، کنارہ I/O کرتا ہے" کی تقسیم یہاں سب سے اہم چیز ہے،
کیونکہ ایک فنکشن جو صرف ایک اسٹرنگ واپس کرتا ہے آزمانے میں معمولی ہوتا ہے:
const out = app.renderConnect();
assert.ok(out.includes("«مجھے آپ کو اپنے پیشہ ورانہ نیٹ ورک میں شامل کرنا اچھا لگے گا۔» — بھیجا گیا "));نہ کسی ٹرمینل کی نقل، نہ stdout کیپچر کرنا۔ جب آپ ایجنٹ سے کوئی فیچر شامل کرنے کو کہتے ہیں، تو یہی وجہ ہے کہ وہ اس کے لیے ایک تیز، قابلِ اعتماد ٹیسٹ بھی شامل کر سکتا ہے۔
مذاق src/lockedin.js کے اوپر سادہ arrays میں رہتے ہیں:
const HOOKS = [ 'غیر مقبول رائے:', 'اسے ذہن نشین ہونے دیں۔', /* ...~25 total... */ ];
const LESSONS = [ '→ آپ کا نیٹ ورک ہی آپ کی اصل دولت ہے۔', /* ... */ ];جنریٹرز ان پولز سے منتخب کرتے ہیں۔ v1.2.0 میں ہر پول بڑھ کر ~۲۵ تغیرات ہو
گیا، اور ٹیمپلیٹ پولز کی ایک دوسری تہہ شامل کی گئی (چیزیں جیسے POST_REVEALS
اور REFLECT_TAGSETS) تاکہ ہر آؤٹ پٹ کی ساخت بدلے، صرف الفاظ نہیں۔ مواد شامل
کرنا اکثر اتنا ہی سادہ ہوتا ہے جتنا ایک array میں اسٹرنگز شامل کرنا — کسی ایجنٹ کو
سونپنے کے لیے ایک بہترین پہلا کام۔
بے ترتیب آؤٹ پٹ اور خودکار ٹیسٹ ناقابلِ مطابقت لگتے ہیں۔ یہ پروجیکٹ ایک سیڈ-قابل رینڈم نمبر جنریٹر سے اس دائرے کو مربع بناتا ہے:
setSeed(42);
const a = generatePost();
setSeed(42);
const b = generatePost();
// a === b → ایک ہی seed، ایک ہی پوسٹہر بے ترتیب انتخاب مشترکہ pick() / shuffle() مددگاروں سے گزرتا ہے، جو اس سیڈ
شدہ جنریٹر سے کھینچتے ہیں۔ LOCKEDIN_SEED=42 سیٹ کریں اور CLI مکمل طور پر قابلِ
تولید ہو جاتی ہے۔ کسی بھی تبدیلی کا سنہری اصول: نئی بے ترتیبی کو pick /
shuffle استعمال کرنا چاہیے، کبھی براہِ راست Math.random نہیں — ورنہ تعیّن
پذیری (اور ٹیسٹ) ٹوٹ جاتے ہیں۔ اسے اپنی جیب میں رکھیں؛ آپ باب ۳ میں ایجنٹ کو یہ یاد
دلائیں گے۔
-
test/unit.test.jsکور فنکشنز کو کال کرتا ہے اور ان اسٹرنگز پر دعویٰ کرتا ہے جو وہ واپس کرتے ہیں (تیز، درست)۔ -
test/cli.test.jsحقیقتاًbin/lockedin.jsکو چلاتا ہے اور اس کا اصل stdout اور exit code چیک کرتا ہے (ثابت کرتا ہے کہ پوری چیز مکمل طور پر کام کرتی ہے)۔
مل کر یہ گیٹ ہیں۔ وہ ناقابلِ تغیر شرائط کو بھی کوڈ کرتے ہیں — وہ وعدے جو ایپ
کرتی ہے۔ مثال کے طور پر، ایک پوسٹ ہمیشہ ایک معلوم hook سے کھلتی ہے اور ہمیشہ کم از
کم تین → اسباق رکھتی ہے؛ "connect" اسکرین ہمیشہ incalculable کہتی ہے۔ جب کوئی
ایجنٹ کوڈ بدلتا ہے، تو یہ ٹیسٹ ہر اس چیز کو پکڑ لیتے ہیں جس نے خاموشی سے کوئی وعدہ
توڑا ہو۔
چاروں خیالات کو یکجا کریں اور آپ کو ایک ایسا کوڈ بیس ملتا ہے جہاں کوئی ایجنٹ:
- ایک فیچر شامل کر سکتا ہے ایک خالص فنکشن کے طور پر جو ایک اسٹرنگ واپس کرتا ہے،
- اس کے لیے ایک ٹیسٹ شامل کر سکتا ہے کسی I/O جمناسٹکس کے بغیر،
- سیڈ شدہ RNG کے ذریعے آؤٹ پٹ کو قابلِ تولید رکھ سکتا ہے، اور
- موجودہ گیٹ چلا کر ثابت کر سکتا ہے کہ اس نے کچھ نہیں توڑا۔
یہی وہ لوپ ہے جو آپ اگلے باب میں چلائیں گے۔
اپنے ایجنٹ سے کہیں کہ وہ آپ کی سمجھ کی تصدیق کرے — پڑھ کر، ایڈٹ کیے بغیر:
- "
src/lockedin.jsمیں ہر مواد پول اور ہر ایک میں کتنے اندراج ہیں، فہرست کرو۔" - "مجھے ایک ناقابلِ تغیر شرط دکھاؤ جسے
test/unit.test.jsgeneratePostکے بارے میں نافذ کرتا ہے، اور وضاحت کرو کہ کیا چیز اسے توڑے گی۔" - "سیڈ شدہ RNG کہاں متعین ہے، اور کن فنکشنز کو
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.