Code-Graph-RAG: با زبان طبیعی از کدبیس بپرس
خلاصهٔ کاملتر
Code-Graph-RAG یه پروژهٔ متنباز با لایسنس MIT هست که کل یه ریپازیتوری رو میخونه و بهجای جستوجوی متنی، ساختارش رو بهشکل گراف نگه میداره. تو مستندات پروژه اومده که هدف اینه یه مونوریپوی چندزبانه زیر یه اسکیمای واحد بیاد و بشه با زبان طبیعی ازش پرسید، سورس هر تابع و کلاس رو گرفت و حتی کد رو ویرایش و بهینه کرد.
معماریش دو تیکهست. اول یه پارسر مبتنی بر Tree-sitter که توابع، کلاسها، متدها، ماژولها و رابطههاشون رو درمیاره و میریزه تو Memgraph. دوم بخش RAG که یه CLI تعاملیه: سؤال انگلیسی رو به کوئری Cypher تبدیل میکنه، کد مرتبط رو برمیداره و ویرایش و بهینهسازی با کمک مدل رو هم پیش میبره. ویرایشها مبتنی بر AST هستن و قبل از اعمال، پیشنمایش diff نشون داده میشه. پیدا کردن کد مرده هم با راه رفتن روی یالهای فراخوانی از نقطههای ورودی انجام میشه.
پایتون، تایپاسکریپت، TSX، جاوااسکریپت، Rust، Go، Java، C، C++، C#، پیاچپی، Lua و Dart کامل پشتیبانی میشن و Scala هم در دست توسعهست. Ruby تازگی از راه یه لایهٔ افزودنی مبتنی بر ast-grep پشتیبانی ساختاری گرفته: یه فایل الگوی YAML کافیه تا گرههای Module و Function و Class و یالهای import ساخته بشن، بدون اینکه کسی پارسر دستی بنویسه.
دوتا تغییر تازهٔ دیگه هم اعلام شده. جستوجو و جایگزینی ساختاری با ast-grep حالا بهعنوان ابزار در اختیار ایجنت قرار گرفته تا بهجای متن و regex بشه با الگوی AST کد رو تو کل کدبیس پیدا و بازنویسی کرد. یالهای تِینت FLOWS_TO هم مسیر یه مقدار رو از انتسابها و فراخوانی توابع تا نقطههای خروجی دنبال میکنن؛ با اضافه شدن C#، Java، C و Go، این ردیابی جریان داده حالا ۱۰ زبان رو پوشش میده.
نصبش با پکیج cgr از PyPI انجام میشه و جدا از اون به Docker (برای Memgraph)، cmake و ripgrep هم نیاز داره. گراف بین پروژهها مشترکه، پس هر ریپو رو جدا ایندکس میکنی و سینک کردن یکی کاری به بقیه نداره؛ ولی حواست به فلگ --clean باشه که همهٔ پروژههای گراف رو پاک میکنه، نه فقط پروژهٔ فعلی. پروژه بهعنوان سرور MCP هم اجرا میشه تا Claude Code و بقیهٔ کلاینتهای MCP مستقیم کدبیس رو کوئری و ویرایش کنن.
نکات کلیدی:
- پارس چندزبانه با Tree-sitter و ذخیرهٔ ساختار کد بهشکل گراف دانش تو Memgraph
- سؤال به زبان طبیعی تبدیل به Cypher میشه و جواب از ساختار واقعی کد درمیاد
- ویرایش مبتنی بر AST با پیشنمایش diff، پیدا کردن کد مرده و بهینهسازی
- Ruby از راه لایهٔ ast-grep فقط با یه فایل YAML اضافه شده
- ردیابی جریان داده با یالهای FLOWS_TO حالا روی ۱۰ زبان
- اجرا بهعنوان سرور MCP برای وصل شدن Claude Code و کلاینتهای مشابه




