تصور کنید در یک پروژه با ۲,۰۰۰ فایل کد هستید و میخواهید در کمتر از ۵ ثانیه بفهمید یک درخواست احراز هویت دقیقاً از کجا شروع و کجا تمام میشود. این همان قابلیتی است که Code-Graph-RAG فراهم میکند تا برنامهنویسان از شر «کورسوزی متنی» مدلهای هوش مصنوعی خلاص شوند. فلسفه اصلی این پروژه متنباز که در گزارشی در ۱۲ اوت ۲۰۲۶ برجسته شد، تبدیل دستیارهای کدنویسی هوش مصنوعی از جستوجوهای ساده بر اساس کلمات کلیدی به درکی عمیق از معماری کدبیس است. این ابزار با ترکیب هوش مصنوعی و گرافهای دانش، به کاربران اجازه میدهد کدبیسهای چندزبانه را با دقتی بیسابقه پرسوجو، درک و ویرایش کنند.
بسیاری از ابزارهای کدنویسی فعلی دچار نوعی «کورسوزی زمینه» (Context Blindness) هستند؛ یعنی مدل فقط فایلهای باز یا تکههای کوچکی از متن را میبیند. تولید بازیابیافزا (RAG) — شبیه دانشآموزی که قبل از جواب دادن، اول کتاب درسی را باز میکند و از آن نقل میآورد — در حالت استاندارد، کدها را به تکههای کوچک (Chunks) تقسیم کرده و بر اساس شباهت برداری جستوجو میکند. اما Code-Graph-RAG رویکردی ساختاری را جایگزین کرده است. همانطور که در تحلیل قبلی ما دربارهی گرافهای دانش و ابزارهایی مثل Graphify اشاره کردیم، کلید حل این مشکل، تبدیل کد از یک سری سند متنی به شبکهای از موجودات بههمپیوسته است. بهجای اینکه با کد به عنوان مجموعهای از اسناد برخورد کند، آن را به عنوان یک شبکه از موجودات متصل به هم میبیند و کدبیس را به یک گراف دانش (Knowledge Graph) تبدیل میکند تا روابط بین توابع، کلاسها، فراخوانیها و جریان دادهها را بهطور کامل درک کند.
خط لوله فنی
بر اساس مستندات پروژه، این سیستم از طریق یک خط لوله سه مرحلهای عمل میکند:
۱. تجزیه (Parse): این سیستم از Tree-sitter برای خواندن کدبیس استفاده میکند. این تجزیهکننده (Parser) زبانهای مختلفی از جمله پایتون، جاوااسکریپت، تایپاسکریپت، جاوا، C#، Rust و Go را به درخت نحو انتزاعی (AST) تبدیل میکند. این فرآیند تضمین میکند که سیستم ساختار واقعی زبان برنامهنویسی را درک کند، نه اینکه صرفاً به تطبیق ساده متنی تکیه کند.
۲. ساخت گراف دانش: این درختهای AST سپس به یک گراف دانش تبدیل میشوند که روی پایگاهداده Memgraph میزبانی میشود. در این گراف، توابع و کلاسها به عنوان «گره» (Node) تعریف میشوند، در حالی که فراخوانیهای توابع، ارثبریها و جریانهای داده به عنوان «یال» (Edge) یا همان خطوط اتصال عمل میکنند.
۳. پرسوجو و ویرایش: سیستم امکان پرسوجو به زبان طبیعی (انگلیسی) را فراهم میکند. برای مثال، کاربر میتواند بپرسد «جریان احراز هویت را نشان بده» و هوش مصنوعی یک پرسوجوی گرافی انجام میدهد تا مسیر کامل از مرحله ورود (Login) تا اعتبارسنجی (Validate)، مدیریت نشست (Session) و خروج (Logout) را بازگرداند.
در نهایت، این سیستم امکان تحلیل اثرات (Impact Analysis) پیچیده را فراهم میکند. کاربر میتواند بپرسد: «اگر این اینترفیس را تغییر دهم، کدام توابع میشکنند؟» و هوش مصنوعی با پیمایش گراف (Graph Traversal)، تکتک نقاط متأثر را شناسایی میکند. این یک تغییر بنیادین نسبت به RAG استاندارد است؛ زیرا RAGهای معمولی بر جستوجوی شباهت تکیه دارند که اغلب وابستگیهای غیرمستقیم را نادیده میگیرند و نمیتوانند دادهها را از ورودی تا پردازش و خروجی ردیابی کنند.
قابلیتهای کلیدی فنی
- ردیابی جریان داده (Data Flow Tracking): ردیابی اطلاعات از ورودی، طی مراحل پردازش تا خروجی. این قابلیت به تیمهای امنیتی اجازه میدهد نقاطی را که دادههای حساس ممکن است نشت کنند، پیدا کنند.
- شناسایی کد مرده (Dead Code Detection): شناسایی توابع بلااستفادهای که حذف آنها ایمن است و به تیمها کمک میکند حجم کلی کدبیس را کاهش دهند.
- جستوجو و ویرایش در سطح AST: انجام جستوجوها و تغییرات در سطح درخت نحو انتزاعی بهجای جستوجوی متنی ساده، که از «ویرایشهای کور» جلوگیری میکند.
- یکپارچگی با MCP: اتصال مستقیم به Claude Code از طریق پروتکل زمینهٔ مدل (Model Context Protocol). این اتصال به عامل هوش مصنوعی اجازه میدهد کل کدبیس را درک کند، نه فقط فایلهای باز.
- بهینهسازی کد: تحلیل ساختار گراف برای پیشنهاد روشهای خاص جهت بهینهسازی کد.
به نقل از مخزن گیتهاب پروژه، Code-Graph-RAG با بیش از ۴,۰۰۰ ستاره، ۵۷۱ فورک و ۴,۷۸۹ کامیت، رشد سریعی داشته است. این پروژه بسیار فعال است، بهطوری که آخرین کامیت تنها ۱۷ دقیقه پیش از انتشار گزارش ثبت شده بود. همچنین این پروژه برای حمایت از رشد خود، بودجهای از FLOSS/Fund دریافت کرده است. در حال حاضر ۴۲ ایشو (Issue) باز و ۳ درخواست ادغام (Pull Request) در مخزن وجود دارد که نشاندهنده تکامل سریع این ابزار است که توسط Vitali Avagyan (@vitali87) ایجاد شده است.
ترکیب این سیستم با Claude Code یک همافزایی قدرتمند ایجاد میکند. در حالی که کلود یک عامل توانمند است، اما بهطور معمول فایلها را یکییکی میخواند. با پل MCP، کلود میتواند مستقیماً از پایگاهداده Memgraph پرسوجو کند. برای مثال، کاربر میتواند بپرسد: «تمام جاهایی که پسوردها را هش میکنیم پیدا کن و بررسی کن آیا از bcrypt استفاده شده است یا خیر». کلود از طریق MCP از Code-Graph-RAG پرسوجو میکند و ممکن است سه مکان را بیابد: در auth.py:42 و user.py:128 از bcrypt استفاده شده، اما در legacy/login.py:305 هنوز از الگوریتم آسیبپذیر MD5 استفاده میشود. چنین سطحی از دقت برای سیستمهای RAG مبتنی بر تکهبندی (Chunk-based) غیرممکن است.
برای یک برنامهنویس حرفهای، این ابزار هزینه ورود به پروژه (Onboarding) و بازنویسی (Refactoring) را تغییر میدهد. مهندسان جدید میتوانند بپرسند «سیستم پرداخت چگونه کار میکند» و جریان را بهجای خواندن صدها فایل، از طریق یک گراف بصری ببینند. در هنگام بازنویسی، هوش مصنوعی دقیقاً میداند هنگام جابهجایی توابع، ایمپورتها را در کجا بهروزرسانی کند.
ملاحظات پیادهسازی
با وجود قدرت زیاد، این ابزار به زیرساختهای خاصی نیاز دارد. کاربران باید Memgraph را به عنوان پایگاهداده گرافی نصب و اجرا کنند؛ این ابزار یک کتابخانه ساده نیست که با یک دستور pip install نصب شود. علاوه بر این، تجزیه کدبیسهای عظیم با بیش از ۱۰۰,۰۰۰ فایل میتواند از نظر زمان و حافظه بسیار هزینهبر باشد. بهدلیل ماهیت در حال رشد پروژه (با ۴,۰۰۰ ستاره)، کاربران باید انتظار برخی باگها یا تغییرات ناگهانی در نسخهها (Breaking Changes) را داشته باشند. همچنین، در حالی که Tree-sitter از زبانهای اصلی پشتیبانی میکند، برخی زبانهای خاص و کمکاربرد ممکن است هنوز پشتیبانی نشوند.
این تحول نشان میدهد که برای مهندسی نرمافزارهای پیچیده، RAG مبتنی بر گراف در حال تبدیل شدن به استاندارد ضروری است. توانایی تحلیل اثرات در لحظه، ریسک «ویرایشهای کور» را که اغلب در کدهای تولید شده توسط هوش مصنوعی در سیستمهای بزرگ دیده میشود، بهشدت کاهش میدهد. برای تیمهایی که Monorepoهای حجیم دارند یا نیاز به کاهش بدهی فنی (Technical Debt) دارند، انتقال از «خواندن کد» به «درک کد» یک جهش عظیم در بهرهوری است.
گام بعدی شما
- اگر از Monorepoهای حجیم استفاده میکنید، نصب Memgraph و تست Code-Graph-RAG را برای تحلیل وابستگیها آغاز کنید.
- برای افزایش دقت Claude Code، پروتکل MCP را فعال کرده و آن را به یک گراف دانش متصل کنید.
- توابع بلااستفاده (Dead Code) پروژه خود را با استفاده از قابلیت Graph Traversal شناسایی و پاکسازی کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو