راهنمای برنامهنویسی با LLM، از صفر
خلاصهٔ کاملتر
نویسنده میگه چند بار ازش خواستن یه پست کامل دربارهٔ برنامهنویسی با LLM بنویسه، و این متن رو طوری نوشته که انگار داره برای کسی حرف میزنه که سال ۲۰۱۹ به کما رفته و تازه بیدار شده. از اول تأکید میکنه اینها نظرات شخصی خودشه.
پایهها رو ساده شروع میکنه: یه LLM یه ماشین آماریه که روی تریلیونها توکن آموزش دیده، و توکن کوچیکترین واحد متنیه که مدل میفهمه — یه حرف یا یه رشته از حروف، حتی علائم نگارشی. کار مدل اینه که برای ادامهٔ متن، به گزینههای مختلف احتمال بده و بعد یکی رو با وزن همون احتمالها انتخاب کنه؛ مثلاً بعد از «از فروشگاه خریدم» احتمال بالای ادامهای مثل «خواروبار» میشینه. بعد خروجی خودش رو دوباره به خودش میده و همین حلقه ادامه پیدا میکنه تا با یه توکن پایان خاص تموم بشه. هر دادهای که مدل برای پیشبینی ازش استفاده میکنه همون کانتکسته.
به گفتهٔ نویسنده مهمترین نوآوری برای برنامهنویسی، ایجنتان: LLM تا وقتی جمله تموم بشه توکن تولید میکنه، ولی ایجنت تا وقتی تسک تموم بشه کار میکنه. اضافه میکنه اصطلاح «ایجنت کدنویس» کمی گمراهکنندهست و «ارکستراتور» دقیقتره: یه برنامه که به مدل وصل میشه، اجازه میده تو حلقه خودش رو دوباره صدا بزنه، و امکان فراخوانی ابزار رو بهش میده. مکانیزم ابزار هم همینه که ایجنت لیست ابزارها رو به مدل میگه و هر وقت مدل خواست چیزی رو بخونه، فایلی رو ویرایش کنه یا دستوری اجرا کنه، یه متن خاص تولید میکنه که ایجنت میگیرتش و اجراش میکنه — همون پلی که مدل رو به دنیای بیرون وصل میکنه.
دو مفهوم دیگه رو هم باز میکنه: MCP سرور رو مثل پلاگین ایجنت توصیف میکنه که ابزارهای بیشتری بهش میده و میتونه پرامپتش رو هم تغییر بده — تشبیهش اینه که MCP برای ایجنت یهجور LSPه. و skill رو یه «مینیپرامپت» میدونه: متن دستورالعملی پر از بهترین شیوهها که ایجنت هر وقت قراره کار مشخصی انجام بده بارگذاریاش میکنه تا از مسیر خارج نشه. سه MCP موردعلاقهاش هم Context7 برای مستندات کتابخانهها، Serena برای ابزارهای زبانی و حافظهٔ کدبیس، و Ponytail برای مهار مدل و جلوگیری از مهندسی بیشازحده.
جالبترین بخش پیکربندیاش اینه که ابزارهای مستقیم ویرایش و نوشتن فایل رو کاملاً بسته و همهٔ تغییرات کد رو مجبور کرده از مسیر ابزارهای سطحسمبل Serena رد بشن، تا مدل بهجای فکرکردن به «متن»، به تغییرات در سطح تابع و متغیر فکر کنه:
"permission": {
"ask": "allow",
"bash": "ask",
"edit": "deny",
"write": "deny"
}همین ایده تبدیل به اولین «باید»ش میشه: مدل رو محدود کن. به گفتهٔ او مشکل اصلی ایجنتها — مخصوصاً ضعیفترهاشون — اینه که وسط کارهای طولانی گم میشن و کارهای بیربط شروع میکنن؛ محیط سختگیرتر باعث میشه راحتتر قواعد رو دنبال کنن. در مقابل میگه وقتت رو صرف مهندسی پرامپت بینقص نکن؛ فقط بگو چی میخوای و مدل یا سؤال میپرسه یا جاهای خالی رو پر میکنه. توصیهٔ دیگهاش زبان قویتایپ با پیامهای خطای خوبه، چون مدل میتونه کد بنویسه، بیلد بگیره، خطا رو بخونه و اصلاح کنه بهجای اینکه حدس بزنه. و برای اینکه هر بار کل کدبیس رو از نو نفهمه، یه سیستم حافظه لازمه تا کشفها و تلههای پروژه یه جا نوشته بشن.
نبایدهاش هم صریحن. اول اینکه پروژههای جدید و جاهطلبانه رو با ایجنت شروع نکن؛ تشبیهش اینه که برنامههای رایج مثل CRUD و اسکریپتهای ساده تو فضای آموزشی مدل کنار هم خوشه شدن و ایجنت اونجا خوب کار میکنه، ولی پروژههای بلندپروازانه نقطههای پراکندهٔ همون نمودارن و مدل اونجا تصمیمهای بد میگیره، بدهی فنی جمع میکنه و وابستگی اشتباه انتخاب میکنه. دوم اینکه تستنویسی رو به ایجنت نسپار، چون ممکنه تستهایی بسازه که همیشه پاس بشن و در کل تستهای بدی مینویسه؛ خودت تست یکپارچگی جامع بنویس — که فایدهٔ جانبیاش اینه که ایجنتهای باهوشتر قبل از تمومکردن کار، تست و لینت رو اجرا میکنن و خطای خودشون رو میگیرن.
در عوض بهترین کاربردی که براش قائله بازآراییهای سنگین و حوصلهسربره: اول خودت کد کارراهانداز رو بنویس، بعد ایجنت رو با مهار Serena و تست و یه زبان قوی بذار سراغ تمیزکاری. توصیههای آخرش هم اینه که تو کدبیسهای بزرگ و چندنفره از حالت plan برای گرفتن ایدهٔ طراحی استفاده کن، تو بازبینی کد واقعاً قوی شو (چون حالا کار هر توسعهدهندهای شده) و پنجرهٔ کانتکست ایجنت رو بیدلیل پر نکن، چون مدلها با کانتکست شلوغ کندذهنتر میشن.
نکات کلیدی:
- LLM یه ماشین آماریه که توکن بعدی رو با احتمال انتخاب میکنه؛ کانتکست همون دادهایه که پیشبینی روش سواره
- ایجنت در واقع ارکستراتوره: به مدل وصل میشه، حلقه میسازه و امکان فراخوانی ابزار میده
- MCP مثل پلاگین ایجنته و skill یه مینیپرامپت با بهترین شیوهها برای یه کار مشخص
- محدودکردن ایجنت (مثلاً بستن ویرایش مستقیم فایل) جلوی گمشدنش رو میگیره
- تستنویسی و شروع پروژههای جاهطلبانه رو به ایجنت نسپار؛ بازآراییهای بزرگ بهترین کاربردشه
- زبان قویتایپ با خطاهای خوب یعنی مدل بهجای حدسزدن، از کامپایلر بازخورد میگیره




