افزایش سرعت توسعه با هوش مصنوعی و Cline

در طول سال گذشته در Designstripe، ما به طور گسترده از ابزارهای هوش مصنوعی، از جمله Cursor، Copilot و Cline برای کمک به تسریع روند توسعه خود استفاده کردهایم. این ابزارها برای نمونه سازی و توسعه ویژگی های جدید، به ویژه در مراحل اولیه پیاده سازی، ارزشمند هستند.
تجربه ما نشان میدهد که کدهای تولید شده با هوش مصنوعی معمولاً قبل از نیاز به مداخله توسعهدهنده، 50 تا 75 درصد تکمیل ویژگی را به دست میآورند. در حالی که گاهی اوقات این امر به طور قابل توجهی توسعه را تسریع می کند، موارد دیگر نیاز به بازنویسی کامل دارند. اخیراً، ما بر روی بهینه سازی رویکرد خود برای دستیابی به نرخ تکمیل 75٪ -85٪ با حداقل دوباره کاری تمرکز کرده ایم.
چالش های رایج با تولید کد LLM
از طریق آزمایش خود، چندین چالش ثابت در توسعه به کمک هوش مصنوعی شناسایی کردیم. اول، کد تولید شده اغلب با الگوهای کدگذاری تعیین شده ما مطابقت نداشت. برای مثال، در حالی که پایگاه کد ما از سیگنالهایی برای مدیریت حالت در React استفاده میکند، LLMها به طور پیشفرض از قلابهایState استفاده میکنند. دوم، ما با رابط ها و توابع “توهم” مواجه شدیم – LLM ها اجزایی را اختراع کردند که در پایگاه کد ما وجود نداشت. در نهایت، ما با مشکلاتی در تولید بیش از حد مواجه شدیم، که در آن ابزارها فایلهای کاملی را با آزمایش تولید میکردند که به زمان قابل توجهی برای تجزیه و اصلاح نیاز داشت.
رویکردی ساختاریافته برای تولید کد بهتر
بر اساس آموختههایمان، یک رویکرد سه مرحلهای را در طول یک پروژه ادغام API اخیر ایجاد کردیم:
-
تحلیل تفصیلی: قبل از درگیر شدن با LLM، ما یک بررسی کامل از پایگاه کد موجود انجام دادیم و یک طرح پیاده سازی دقیق برای Cline ایجاد کردیم تا همه تغییرات کد مورد نیاز را بررسی و تجزیه و تحلیل کند.
-
تنظیمات زمینه: ما یک اعلان دقیق به Cline ارائه کردیم که شامل استانداردهای کدگذاری ما (مانند استفاده از سیگنال ها در useState)، ساختار پایگاه کد و اطلاعاتی در مورد کتابخانه ها و الگوهای ترجیحی ما است. به عنوان مثال، ما تنظیمات برگزیده پیکربندی TypeScript و الگوهای مؤلفه React را مشخص کردیم.
-
پیاده سازی افزایشی: به جای اینکه همه چیز را به یکباره تولید کنیم، پیاده سازی را به مراحل کوچکتر تقسیم کردیم و قبل از ادامه، هر تغییر را تأیید می کنیم. این شامل بررسی بهروزرسانیهای تک تک اجزا، کد یکپارچهسازی API و تعاریف نوع بهصورت جداگانه بود.
نتایج و بینش
این رویکرد ساختار یافته نتایج متفاوت اما امیدوارکننده ای به همراه داشت. گامهای اولیه بهطور قابلتوجهی موفقیتآمیز بود، کدهای تولید شده با استانداردهای ما و الگوهای موجود مطابقت داشت. برای مثال، LLM مدیریت حالت مبتنی بر سیگنال ما را به درستی پیادهسازی کرد و الگوهای تایپ ثابتی را حفظ کرد.
با این حال، هنگام اجرای ادغام های پیچیده API با محدودیت هایی مواجه شدیم. LLM پس از سه مرحله اول شروع به از دست دادن زمینه کرد و به جای حفظ رویکرد افزایشی ما، به تولید فایل های کامل بازگشت.
درس های آموخته شده و مراحل بعدی
آزمایش ما چندین بینش کلیدی را نشان داد. اول، برنامه ریزی اولیه و تنظیم زمینه به طور قابل توجهی کیفیت تولید کد را بهبود می بخشد. هر چه در مورد الزامات و استانداردهای خود دقیق تر باشیم، نتایج بهتری حاصل می شود.
همچنین یاد گرفتیم که اعلانهای کوچکتر و دقیقتر نتایج بهتری نسبت به تلاش برای تولید تکههای بزرگ کد به یکباره دارند. این رویکرد به حفظ زمینه کمک می کند و احتمال وجود اجزای توهم را کاهش می دهد.
با حرکت رو به جلو، ما برنامه ریزی می کنیم:
- برای جلوگیری از ایجاد الگوهای سریع ساختاری که شامل قراردادهای پایه کد، الگوهای ترجیحی و مشکلات رایج است.
- ویژگیهای پیچیده را به اعلانهای کوچکتر و متمرکز تقسیم کنید (محدود کردن هر درخواست به یک جزء یا عملکرد واحد)
- برای بهبود تنظیمات زمینه، کتابخانه ای از الگوهای کدگذاری رایج با مثال هایی از پایگاه کد ما ایجاد کنید
- یک چک لیست اعتبار سنجی برای هر بخش کد تولید شده پیاده سازی کنید
نتیجه گیری
در حالی که ما هنوز به هدف خود یعنی دقت 80 تا 90 درصد دست پیدا نکردهایم، این آزمایشها نشان دادهاند که موفقیت با تولید کد LLM بیشتر در ساختار تعاملاتمان است تا قابلیتهای خود ابزارها. با ادامه اصلاح رویکرد خود و ایجاد بر اساس این آموخته ها، ما به طور پیوسته به سمت فرآیندهای توسعه کارآمدتر و قابل اعتمادتر به کمک هوش مصنوعی حرکت می کنیم.