عامل کدنویسی هوش مصنوعی من مدام خراب می‌شد — آنچه تغییر دادم

شش هفته پیش، عامل کدنویسی هوش مصنوعی من خروجی‌های بی‌ارزش تولید می‌کرد.

توابعی می‌نوشت که کامپایل می‌شدند اما هیچ کاری انجام نمی‌دادند. تست‌ها را به دلایل اشتباه پاس می‌کرد. یک باگ را رفع می‌کرد اما سه باگ جدید ایجاد می‌کرد.

فکر می‌کردم مشکل از خودِ عامل است. اشتباه می‌کردم. مشکل، عدم انضباط شخصی من بود.

من برای ۴۰٪ از کارهای مهندسی‌ام از یک عامل هوش مصنوعی استفاده می‌کنم. این عامل مسئول بازنویسی کد (refactor)، تولید تست و بررسی باگ‌هاست. وقتی پایگاه کد (codebase) من نامنظم بود، هوش مصنوعی آن بی‌نظمی را ۳ برابر بدتر می‌کرد.

هوش مصنوعی جایگزین انضباط نمی‌شود؛ بلکه هر آنچه را که از قبل دارید، تقویت می‌کند.

در اینجا نحوه تغییر جریان کاری (workflow) خود برای اصلاح خروجی را توضیح می‌دهم:

  • تست‌ها باید رفتار را تایید کنند، نه وضعیت (state) را. از نوشتن تست‌هایی مثل "assert user is not None" خودداری کنید. این یک دروغ است. یک تست باید داده‌های خاصی را بررسی کند، مانند "assert user.email == expected_email". اگر تست ضعیف باشد، هوش مصنوعی از آن سوءاستفاده خواهد کرد.

  • تک‌تک تغییرات (diff) را بخوانید. من قبلاً بازنویسی‌ها (refactors) را بدون نگاه کردن به کد می‌پذیرفتم. این کار منجر به وابستگی‌های چرخشی (circular dependencies) و معماری نامنظم می‌شد. اگر نمی‌توانید توضیح دهید که چرا یک تغییر بهتر است، آن را رد کنید.

  • وضعیت (state) را صریح تعریف کنید. اجازه ندهید هوش مصنوعی خودش «فهمیده» که چگونه کش‌ها (caches) یا نشست‌ها (sessions) را مدیریت کند. این موارد را در پرامپت‌ها یا طرحواره‌های (schemas) خود تعریف کنید. وضعیت‌های استنباط‌شده منجر به باگ‌های پنهانی می‌شوند که باعث از کار افتادن محیط عملیاتی (production) می‌گردند.

  • برای تغییرات عامل، خودتان تست بنویسید. هر بار که عامل کدی را تغییر می‌دهد، من ابتدا یک تست توسط انسان می‌نویسم. این کار ۱۵ دقیقه زمان می‌برد اما ساعت‌ها در عیب‌یابی (debugging) صرفه‌جویی می‌کند.

  • خواستار شکست‌های آشکار باشید. اگر تغییری تست‌ها را پاس می‌کند اما منطق برنامه را می‌شکند، سیستم باید آن را علامت‌گذاری کند. هرگز عبارت «تست‌ها پاس شدند، محصول را عرضه کن» را به عنوان یک معیار معتبر نپذیرید.

نتایج:

  • تعداد باگ‌ها در هفته از ۵ مورد به کمتر از ۱ مورد کاهش یافت.
  • زمان عیب‌یابی از ۶ ساعت به ۱ ساعت در هفته کاهش یافت.

عامل تغییر نکرد. من تغییر کردم.

اگر از عامل‌های هوش مصنوعی استفاده می‌کنید، ابتدا پایگاه کد خود را اصلاح کنید. تست‌های خود را بهبود ببخشید، وضعیت خود را شفاف کنید و بازبینی‌ها (reviews) را سخت‌گیرانه‌تر انجام دهید.

عامل هوش مصنوعی یک آینه است. مطمئن شوید چیزی دارید که ارزش تقویت کردن داشته باشد.

منبع: https://dev.to/susiloharjo/my-ai-coding-agent-kept-breaking-what-i-changed-4l5f

جامعه یادگیری اختیاری: https://t.me/GyaanSetuAi