ویرگول
ورودثبت نام
Ali Torki
Ali TorkiJavaScript Instructor | Software Engineer
Ali Torki
Ali Torki
خواندن ۴ دقیقه·۸ ماه پیش

کوروش: پادشاه جدید دنیای AI Code Analysis

کوروش: ماجرای ساختن یه رویا

ایده اولیه پروژه کوروش برمی‌گرده به حدودا ۴ سال پیش، بعد از ایده پروژه داکراتور که کلی روش کار کردم ولی خب به سرانجام نرسیده ولی در کنار این موضوع اون موقع بود که فکر کردم کاش یه ابزاری بود که می‌تونست کمکم کنه توی پیدا کردن باگ‌های پروژه‌هام و به عنوان یک دستیار عمل کنه. سال گذشته چندتا مسیر مختلف رو رفتم که یکیشون روش AST parser بود که بیام کد رو تحلیل ساده و ابتدایی کنم ولی خب جواب نبود تا اینکه ChatGPT و دنیای LLMها متولد شدن.

داستان اسم کوروش

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

چرا اصلا شروع کردم؟

حقیقتا، خیلی ساده بود. خسته شده بودم از اینکه هر بار برای analyze کردن کدهام یا پروژه‌هایی که از ابتدای توسعه‌اشون نبودم باید پول می‌دادم اونم دلاری به ابزارهایی مثل Github Copilot یا Jet-brains AI یا ساعت‌ها وقت بذارم. البته بگم که این ابزارهایی مثل Github Copilot طبق تجربه من اصلا نمی‌تونن در مقایس بزرگ نقش بزرگی رو هم ایفا کنن،حداقل تا امروز که نتونستن یا در شرایطی، خیلی اشتباهات فاحش دارن یا چیزی مثل Claude Code که گزینه خوبیه اما هزینه خیلی بالایی داره و البته محدودیت زیاد.

یادمه یه بار یه پروژه NodeJS رو سال گذشته به دستم رسیده بود از طرف یکی از دوستانم که پر از باگ‌های امنیتی بود و فقط قرار بود یک باگی رو فیکس کنم براشون. اینقدر که همه چیز درهم بود که هربار می‌رفتم برای Trace کردن کد، به یک شکل جدیدی سرگیجه می‌گرفتم.

اولین ایده: Language Detection

فکر کردم اگه بخوام ابزاری بسازم که واقعاً مفید باشه، باید بتونه خودش بفهمه با چه زبانی طرف کار می‌کنه یا پروژه نوشته شده. نه اینکه فقط extension فایل رو نگاه کنه.

این کار خیلی سخت‌تر از چیزی بود که فکرش رو می‌کردم! آدم باید Pattern های مختلف زبان‌ها رو یاد می‌گرفت. مثلاً تو TypeScript از interface استفاده می‌شه، تو Python از def، تو Java از public static void main...

الان که نگاه می‌کنم، دقت ۹۵ درصدی داره کوروش. خودمم گاهی تعجب می‌کنم!

AI Integration: قسمت دوست‌داشتنی

اینجا بود که کار سخت شد. می‌خواستم کوروش بتونه با AI های مختلف کار کنه. نه فقط OpenAI که پولیه، نه فقط cloud که همیشه اینترنت نداریم یا اگر داریم هم مشکل قندشکن داریم یا اگر قندشکن داریم، مشکل لوکیشن قندشکن داریم و خلاصه کلی دغدغه کلافه کننده دیگه که خودتون بهتر از من می‌دونید.

زمانی که Ollama معرفی شد و بعدش LmStudio و حالا هم Docker Models، روی سیستم اجراء‌شون کردم که خب دقت‌شون به اندازه نسخه‌های Cloud نیست اما به شکل عجیبی راضی کننده هم هستن واقعا. اینجا بود که Ollama integration رو که اضافه کردم، انگار یه دنیای جدید باز شد! خودم می‌تونستم راحت روی سیستم خودم، بدون پول، بدون اینترنت، بدون نیاز به قندشکن و... یک AI Code Assitant سبک و کار راه‌بنداز داشته باشم و صد البته کوروش هم باهاش بتونه هم‌زبون بشه.

Code Analysis: مغز متفکر

این بخش واقعاً سخت بود. باید برای هر زبان جداگانه تحلیلگر می‌نوشتم. TypeScript Compiler API، Python AST، Java parser... هر کدوم یه دنیای جدا بودن.

ولی وقتی متوجه شدم با LLMها به سادگی میشه درکی از کد رو ایجاد کرد و مشکلاتی که کد داره رو پیدا کرد، همه‌ی خستگی از تنم در اومد. یادمه اولین باری کهsecurity vulnerability پیدا کرد تو کد خودم! احساس کردم واقعاً میشه روش حساب کرد.

Mentor Mode: ایده‌ای که حسابی برای خودمم دوست داشتنیه

فکر کردم چرا کوروش فقط error پیدا کنه؟ چرا نتونه یاد هم بده؟

Mentor Mode رو طوری طراحی کردم که بتونه با سطح دانش خودت از روی کدهایی که نوشتی یا سوالاتی که می‌پرسی ارتباط برقرار کنه. یه مبتدی که بیاد، بهش مفاهیم پایه رو توضیح می‌ده. یه حرفه‌ای که بیاد، نکات عمیق و سطح بالاتری رو می‌گه.

خودم هنوزم ازش استفاده می‌کنم! بعضی وقت‌ها کدی می‌نویسم و بعد می‌رم می‌گم "کوروش، این کد چطوره؟"

Health Monitoring: چک‌آپ کامل

این بخش رو وقتی اضافه کردم که فهمیدم پروژه‌های بزرگ(مثل پروژه اخیر خودم توی صرافی پول‌نو) نیاز به یه نمای کلی دارن. نمی‌شه فایل به فایل نگاه کرد. روش کارش هم اینطوری که در ابتدا تمام فایل‌ها و محتوایات داخلشون رو با AI بررسی می‌کنه و یک Health score می‌ده از ۱۰۰ نمره به کل پروژه. اگر اشتباه نکنم اولین باری که کد خودم رو اسکن کردم، ۶۷ گرفت یا ۷۷!

قابلیت‌های کوروش به این مقاله معرفی ختم نمیشه و نیازه که مستندات خودش رو بخونید و اونجا سعی کردم کامل شرح بدم هر قابلیتی که داره(با کمک AI)

چرا رایگان منتشرش کردم؟

اولاً خودم از open source استفاده می‌کنم و به قول شاعر ملک الشعرای بهار، دگران کاشتند و ما خوردیم...ما بکاریم و دیگران بخورند.

دوماً اعتقاد دارم ابزارهای خوب باید در دسترس همه باشن.

کلام آخر

کوروش رو توی شرایط و کدبیس‌های مختلفی تستش نکردم حقیقتا ولی امیدوارم بتونه به شما هم کمک کنه که کدهای بهتری بنویسید.

اگر ازش استفاده کردید و مشکلی داشت، توی گیت‌هاب ایشو ثبت کنید سعی می‌کنم زود بهتون کمک کنم.

با کوروش کد بزنید، لذت ببرید!

لینک گیت‌هاب کوروش

https://github.com/ali-master/cyrus

ai
۳
۲
Ali Torki
Ali Torki
JavaScript Instructor | Software Engineer
شاید از این پست‌ها خوشتان بیاید