ترفند Git که کدنویسی با هوش مصنوعی رو متحول میکنه
خلاصهٔ کاملتر
یکی از رایجترین سوالهایی که تیم Effect میگیره اینه که چطور میشه agent های هوش مصنوعی رو وادار کرد کد اصولی و idiomatic بنویسن. جوابشون همیشه یکیه: سورسکد واقعی کتابخونه رو در اختیارشون بذار، نه مستندات.
چرا مستندات کافی نیست؟ وقتی agent از وبسرچ یا مستندات استفاده میکنه، فقط به تکهکدهای پراکنده دسترسی داره و مجبوره بارها همون اطلاعات رو بازیابی کنه — این هم token بیشتری مصرف میکنه، هم context رو بههم میریزه. مستندات معمولاً توضیح میده یه API چیکار میکنه، نه اینکه چطور استفاده میشه. agent ها به الگو و مثال نیاز دارن، نه توضیح.
چرا node_modules هم کافی نیست؟ کدهای داخل node_modules اغلب کامپایلشده و flattenشدهن و ساختار اصلیشون از دست رفته. علاوه بر این، اکثر agent های کدنویسی از کاوش در پوشههای gitignoreشده خودداری میکنن.
راهحل: git subtree. این ابزار بهت اجازه میده یه ریپوی خارجی رو مستقیم بهعنوان یه زیرپوشه داخل پروژهات جا بدی. برخلاف git submodule، نیازی به مقداردهی اولیه جداگانه نداره، هیچ لایهی واسطی ایجاد نمیکنه، و برای agent و developer کاملاً شفافه. فقط یه دایرکتوری معمولیه داخل پروژه.
برای اضافه کردن یه subtree کافیه از این دستور استفاده کنی:
git subtree add --prefix repos/effect https://github.com/Effect-TS/effect.git main --squashفلگ --squash مهمه — بدون اون، کل تاریخچهی ریپوی خارجی (که میتونه هزاران commit باشه) داخل تاریخچهی پروژهات کپی میشه. با --squash همه چیز در یه commit خلاصه میشه.
تنظیم editor و agent. بعد از vendor کردن، باید editor رو طوری تنظیم کنی که پوشهی repos/ رو از جستجو، file watching، و پیشنهاد auto-import حذف کنه — چون این کدها بخشی از پروژهات نیستن. از طرفی، باید در فایل AGENTS.md به agent بگی این پوشهها کجان و چطور ازشون استفاده کنه؛ بهعنوان reference material، نه بخشی از کد اپلیکیشن.
یه ترفند مکمل اینه که از agent بخوای یه فایل کوچیک از الگوهای پرکاربرد یه کتابخونه بسازه و داخل پروژه ذخیره کنه. این کار باعث میشه agent دفعات بعد نیاز نداشته باشه دوباره همون الگوها رو کشف کنه.
نکات کلیدی:
- agent های هوش مصنوعی با خوندن سورسکد واقعی بهتر از مستندات یاد میگیرن
- git subtree سادهترین روش برای vendor کردن ریپوهای خارجی داخل پروژهست
- فلگ --squash از انباشته شدن هزاران commit خارجی در تاریخچهات جلوگیری میکنه
- ریپوهای vendor شده رو از editor خودت مخفی کن، اما به agent بگو ازشون استفاده کنه
- این روش مخصوص Effect نیست و برای هر کتابخونهای کار میکنه




