𝗧𝗵𝗲 𝗥𝗲𝗽𝗼 𝗜𝘀 𝗧𝗵𝗲 𝗖𝗼𝗻𝘁𝗲𝘅𝘁: 𝗪𝗵𝘆 𝗔𝗴𝗲𝗻𝘁𝘀 𝗗𝗼𝗻’𝘁 𝗡𝗲𝗲𝗱 𝗛𝗶𝘀𝘁𝗼𝗿𝘆

کوڈنگ ایجنٹس وہ سب کچھ پڑھتے ہیں جو آپ انہیں دیتے ہیں۔ یہ ایک خوبی معلوم ہوتی ہے، لیکن عام طور پر یہ ایک مسئلہ ہے۔

میں ایجنٹس کو زیادہ سے زیادہ دستاویزات فراہم کرتا تھا۔ میں تفصیلات (specs)، ADRs، اور منصوبہ بندی کی دستاویزات لکھتا تھا۔ میرا خیال تھا کہ جتنا زیادہ سیاق و سباق (context) ہوگا، اتنا ہی بہتر ہوگا۔ پھر میں نے ایک ایجنٹ کو بڑے اعتماد کے ساتھ غلطی کرتے ہوئے دیکھا۔ یہ کوئی وہم (hallucination) نہیں تھا۔ وہ محض ایک پرانی دستاویز کی پیروی کر رہا تھا جس میں ایک ایسے سسٹم کی وضاحت کی گئی تھی جسے ہم مہینوں پہلے استعمال کرنا چھوڑ چکے تھے۔ وہ حقیقت کے بجائے تاریخ کی پیروی کر رہا تھا۔

تاریخ انسانوں کے لیے ہوتی ہے۔ یہ وضاحت کرتی ہے کہ کوئی سسٹم کیوں موجود ہے۔ یہ آپ کو مختلف انتخاب (trade-offs) اور پرانے فیصلوں کو سمجھنے میں مدد دیتی ہے۔

ایجنٹس مختلف ہوتے ہیں۔ وہ موجودہ سسٹم میں ترمیم کرتے ہیں۔ اس کام کے لیے، انہیں تاریخی نثر کی ضرورت نہیں ہوتی۔ انہیں حقیقت کا موجودہ ذریعہ (current source of truth) چاہیے۔

انہیں چاہیے: • موجودہ schemas • موجودہ module boundaries • موجودہ APIs • موجودہ tests • موجودہ configurations

اگر آپ چاہتے ہیں کہ ایک ایجنٹ ڈیٹا بیس کو سمجھے، تو اسے ہر migration log دوبارہ پڑھنے پر مجبور نہ کریں۔ اسے موجودہ schema دیں۔ اگر آپ چاہتے ہیں کہ وہ آرکیٹیکچر کو سمجھے، تو اسے پرانے ADRs پڑھنے پر مجبور نہ کریں۔ اسے موجودہ module graph دیں۔

خطرہ "سیاق و سباق کی آلودگی" (context pollution) ہے۔ یہ تب ہوتا ہے جب ایک حقیقت دو جگہوں پر موجود ہو: کوڈ میں اور ایک Markdown فائل میں۔ کوڈ تیزی سے بدلتا ہے۔ نثر (prose) صرف تب بدلتی ہے جب کوئی اسے یاد رکھتا ہے۔ جب ان میں فرق آ جاتا ہے، تو ایجنٹ پرانی دستاویز پر بھروسہ کرتا ہے۔ ایک ایجنٹ انسان کی طرح باریک بینی سے نہیں دیکھتا یا کراس چیک نہیں کرتا۔ وہ جو کچھ بھی پہلے پڑھتا ہے اسے حقیقت مان لیتا ہے۔

بہتر دستاویزات لکھنا بند کریں۔ ایسی جگہوں کی تعداد کم کریں جہاں حقائق پرانے یا غلط ہو سکتے ہیں۔

قواعد کو متن سے نکال کر سسٹم کے ڈھانچے میں منتقل کریں: • آرکیٹیکچر کے لیے directory structures کا استعمال کریں۔ • مقصد کے لیے naming کا استعمال کریں۔ • APIs کے لیے package exports کا استعمال کریں۔ • حدود کے لیے lint rules کا استعمال کریں۔ • ڈیٹا کنٹریکٹس کے لیے schemas کا استعمال کریں۔ • رویے (behavior) کے لیے tests کا استعمال کریں۔

README میں موجود اصول محض ایک مشورہ ہے۔ ESLint config میں موجود اصول ایک دیوار ہے۔ ایجنٹ دیوار کو نظر انداز نہیں کر سکتا۔

میں نے اپنی ہدایاتی فائلوں (instruction files) کو مختصر کر دیا ہے۔ وہ اب آرکیٹیکچر کو دوبارہ بیان نہیں کرتیں۔ اس کے بجائے، وہ اس طرف اشارہ کرتی ہیں جہاں آرکیٹیکچر موجود ہے۔

تاریخ لوگوں کے لیے رکھیں۔ ایجنٹس کے لیے حال کو ترتیب دیں۔

Source: https://dev.to/gyu07/the-repo-is-the-context-why-agents-dont-need-history-4ien

Optional learning community: https://t.me/GyaanSetuAi