پرش به محتوای اصلی
پرش به محتوای مقاله

گرافای با جایگزینی جست‌وجوی برداری، کورسوشانی AI در پروژه‌های بزرگ را حل کرد

·۱۹ مرداد ۱۴۰۵۸ دقیقه مطالعه۲ بازدید
گرافی‌فای: تبدیل کل کدبیس به گراف دانش قابل پرس‌وجو برای دستیارهای کدنویسی هوشمند
گرافی‌فای: تبدیل کل کدبیس به گراف دانش قابل پرس‌وجو برای دستیارهای کدنویسی هوشمند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

انتقال از بازیابی مبتنی بر شباهت (Vector RAG) به پیمایش ساختاری (Graph Traversal) در کدبیس؛ این یعنی AI به‌جای حدس زدن، مسیرهای واقعی فراخوانی توابع را ردیابی می‌کند.

اگر در پروژه‌های نرم‌افزاری بزرگ کار می‌کنید، احتمالاً متوجه شده‌اید که دستیارهای هوش مصنوعی در درک روابط بین ماژول‌ها به‌شدت ناتوان‌اند. مشکل این است که این ابزارها به‌جای پیمایش روابط، صرفاً به دنبال کلمات کلیدی می‌گردند (grep) و همین موضوع باعث می‌شود در معماری‌های پیچیده گم شوند.

Graphify، ابزاری متن‌باز و تحت حمایت Y Combinator، این مشکل را با تبدیل کل کدبیس — شامل مستندات، PDFها و حتی ویدیوها — به یک گراف دانش (Knowledge Graph) حل کرده است. این گراف به عنوان یک لایه زمینه‌ای (Context Layer) دقیق برای ابزارهایی مثل Claude Code و Cursor عمل می‌کند. این مقاله، شماره ۱۴۶ از سری «هر روز یک پروژه متن‌باز» است.

همان‌طور که در تحلیل قبلی ما درباره‌ی ضرورت مهارت‌های AI برای برنامه‌نویسان اشاره کردیم، صنعت اکنون از رابط‌های چت ساده به سمت ادغام عمیق معماری حرکت می‌کند. این تحول باعث شده تا نقش برنامه‌نویسان از کدنویسی صرف به سمت ارکستراسیون هوش مصنوعی تغییر کند تا بتوانند از این ابزارهای پیچیده بهره‌برداری کنند. اکثر ابزارهای فعلی از تولید بازیابی‌افزا (RAG) با استفاده از شباهت برداری (Vector Similarity) استفاده می‌کنند، که اغلب لایه‌های میانی حیاتی یک زنجیره فراخوانی را نادیده می‌گیرد. تصور کنید از یک AI بپرسید که یک ماژول احراز هویت چگونه به پایگاه‌داده وصل می‌شود؛ یک سیستم RAG استاندارد ممکن است فایل‌هایی را پیدا کند که کلمه "auth" در آن‌ها باشد، اما میان‌افزاری (Middleware) که واقعاً این دو را به هم لینک می‌کند، گم شود. چنین سیستمی ممکن است فایل‌های auth.py و db.py را مکان‌یابی کند، اما در ردیابی زنجیره فراخوانی بین آن‌ها شکست بخورد یا بر اساس تطبیق کلمات کلیدی، پاسخ‌های متفاوتی به یک سوال یکسان بدهد.

به گزارش وب‌سایت dev.to در ۱۰ اوت ۲۰۲۶، Graphify این «کورسوشانی پروژه» را با تجزیه کد به گره‌ها (توابع، کلاس‌ها، ماژول‌ها) و یال‌های جهت‌دار تایپ‌شده (فراخوانی‌ها، وارد کردن‌ها، ارث‌بری) از بین می‌برد. این رویکرد به هوش مصنوعی اجازه می‌دهد مسیری قطعی (Deterministic) را در کد دنبال کند، نه اینکه بر اساس شباهت معنایی حدس بزند. این پروژه رشد انفجاری داشته و در ۲.۵ ماه به ۷۳ هزار ستاره در گیت‌هاب رسید و ۲.۲ میلیون دانلود داشت؛ اکنون با ۱۰۱ هزار ستاره، تحت لایسنس‌های Apache-2.0 و MIT منتشر شده است.

تجزیه محلی و معماری

Graphify برای مدیریت فایل‌های کد به‌صورت محلی از tree-sitter استفاده می‌کند؛ این همان پارسر AST افزایشی و استاندارد صنعتی است که در Neovim و GitHub به کار می‌رود. این یعنی تحلیل کد بدون نیاز به هیچ API Call انجام می‌شود و هیچ داده‌ای از دستگاه کاربر خارج نمی‌شود. این فرآیند قطعی است، به این معنی که یک کد یکسان همیشه نتیجه تجزیه یکسانی تولید می‌کند، و سرعت آن چندین مرتبه سریع‌تر از استنتاج (Inference) مدل‌های زبانی است.

این ابزار در حال حاضر از بیش از ۳۶ زبان برنامه‌نویسی پشتیبانی می‌کند، از جمله:

  • Python, TypeScript/JavaScript, Go, Rust, Java, C/C++
  • Ruby, C#, Kotlin, Swift, Scala, PHP, Lua, Zig, and SQL

برای دارایی‌های غیرکدی، Graphify از یک بک‌اند LLM پیکربندی‌شده (مانند Anthropic، OpenAI، Gemini یا Ollama) برای استخراج گره‌های معنایی استفاده می‌کند. سیستم طیف گسترده‌ای از منابع داده را می‌بلعد:

  • مستندات: Markdown, HTML, RST, YAML, TXT و به‌صورت اختیاری .docx, .xlsx و PDF.
  • رسانه: تصاویر (PNG, JPG, WebP, GIF) از طریق استخراج بینایی؛ ویدیو و صوت (MP4, MOV, MP3, WAV) از طریق تبدیل محلی به متن با استفاده از faster-whisper.
  • فرمت‌های خاص: فایل‌های پیکربندی MCP، مانیفست‌های پکیج (pyproject.toml, go.mod, pom.xml)، گوگل ورک‌اسپیس (Docs, Sheets, Slides) از طریق gws CLI و همچنین URLهای یوتیوب.

خروجی نهایی یک گراف دانش یکپارچه است که در سه قالب ارائه می‌شود:

  • graph.html: یک بصری‌سازی تعاملی در مرورگر.
  • GRAPH_REPORT.md: هایلایت‌های قابل خواندن برای انسان و سوالات پیشنهادی.
  • graph.json: داده‌های کامل و قابل پرس‌وجو برای استفاده‌های برنامه‌نویسی.

گرافی‌فای: تبدیل کل کدبیس به گراف دانش قابل پرس‌وجو برای دستیاران کدنویسی هوشمند

منشأ یال‌ها و اعتماد

یکی از حیاتی‌ترین ویژگی‌ها، «منشأ یال» (Edge Provenance) است، جایی که هر رابطه در گراف برچسب می‌خورد تا منبع آن مشخص شود. روابط به این صورت علامت‌گذاری می‌شوند:

  • EXTRACTED: مستقیماً از ساختار کد استخراج شده (قطعی).
  • INFERRED: حاصل استدلال LLM (دارای عدم قطعیت).
  • AMBIGUOUS: منبع نامشخص است و نیاز به تایید انسانی دارد.

این برچسب‌گذاری به دستیار AI اجازه می‌دهد دقیقاً به کاربر بگوید کدام بخش از پاسخ یک حقیقت سخت (Hard Fact) از کد است و کدام بخش استنباط مدل است. برای مثال، اگر کاربر بپرسد «تابع لاگین چگونه باعث نوشتن در پایگاه‌داده می‌شود؟»، AI مسیر زیر را پیمایش می‌کند:
login() $ \rightarrow $ [EXTRACTED: calls] $ \rightarrow $ validate_user() $ \rightarrow $ [EXTRACTED: calls] $ \rightarrow $ db.query() $ \rightarrow $ [INFERRED: writes_to] $ \rightarrow $ users_table.
پاسخ می‌تواند صراحتاً ذکر کند که دو گام اول توسط کد تایید شده‌اند، در حالی که گام نهایی استنباط شده است.

شناسایی ریسک با گره‌های خدا

Graphify با استفاده از تحلیل «مرکزیت بینابینی» (Betweenness Centrality)، «گره‌های خدا» (God Nodes) را شناسایی می‌کند. این‌ها فایل‌ها یا توابعی هستند که در بیشترین مسیرهای بین گره‌های دیگر قرار دارند. در کدبیس‌های واقعی، این‌ها معمولاً عبارتند از:

  • یک تابع Utility که توسط ۲۰ ماژول مختلف Import شده است.
  • یک فایل لایه API که پل ارتباطی بین فرانت‌اند و بک‌اند است.
  • یک کلاس سرویس واحد که تمام منطق اتصال به پایگاه‌داده را در خود دارد.

از آنجایی که یک باگ در «گره خدا» گسترده‌ترین «شعاع تخریب» (Blast Radius) را دارد، این ابزار این نقاط پرریسک را در بصری‌سازی به‌طور برجسته نمایش می‌دهد. این کار باعث می‌شود برنامه‌نویس فوراً متوجه شود که آیا یک تغییر تولید شده توسط AI، روی یک گره با مرکزیت بالا اثر می‌گذارد یا خیر. در واقع برای مهار هرج‌ومرج ناشی از کدنویسی سریع با AI، استفاده از ساختارهای عملیاتی مانند گیت‌هاب برای مدیریت این ریسک‌ها ضروری است.

کشف زیرسیستم‌ها و به‌روزرسانی

برای کمک به بازسازی کد (Refactoring)، Graphify از الگوریتم Leiden برای شناسایی جوامع (Community Detection) استفاده می‌کند. این الگوریتم کدبیس را بر اساس روابط واقعی فراخوانی و Import به زیرسیستم‌های عملکردی خوشه‌بندی می‌کند، نه بر اساس ساختار پوشه‌ها. این کار فاش می‌کند که مثلاً فایل‌های موجود در پوشه utils/ در واقع متعلق به سه زیرسیستم معماری مختلف هستند. این نتایج در graph.html با کدگذاری رنگی مجزا برای هر جامعه نمایش داده می‌شوند.

بهینه‌سازی از طریق به‌روزرسانی‌های افزایشی (Incremental Updates) مدیریت می‌شود. به‌جای بازسازی کل ایندکس هنگام تغییر یک فایل، Graphify فقط گره‌های متأثر را اصلاح (Patch) می‌کند. در یک بنچمارک روی گراف ۵۰۰ هزار گره‌ای، تغییر سه فایل تنها ۰.۸ ثانیه زمان برد.

بنچمارک‌های عملکرد

در بنچمارک‌های رسمی (n=300) موجود در BENCHMARKS.md، Graphify برتری‌های قابل توجهی نسبت به سایر سیستم‌های حافظه/RAG نشان داد:

معیار بنچمارک Graphify mem0 supermemory LOCOMO (n=300)
recall@10 ۰.۴۹۷ ۰.۰۴۸ ۰.۱۴۹ —
صحت QA ۴۵.۳٪ ۲۷.۳٪ — ۴۹.۷٪
صحت LongMemEval-S ۷۶٪ — — —
هزینه LLM برای ساخت گراف ۰ (کد) هر توکن هر توکن —

در بنچمارک LongMemEval-S، Graphify با صحت ۷۶٪ با RAGهای متراکم (Dense RAG) برابر شد، در حالی که برای بخش تجزیه کد هیچ هزینه‌ای برای LLM پرداخت نکرد.

استقرار و یکپارچگی

Graphify با طیف وسیعی از دستیاران یکپارچه می‌شود، از جمله: Claude Code، Cursor، Codex، Gemini CLI، GitHub Copilot، Aider، Kilo Code، OpenCode، Factory Droid، Trae، Amp، Kiro و Devin CLI.

نصب و استفاده بسیار ساده است:

  • نصب: uv tool install graphifyy (توجه: نام پکیج در PyPI با دو حرف 'y' است).
  • ثبت: graphify install برای ثبت این مهارت در دستیار AI شما.
  • استفاده در Claude Code: اجرای دستور /graphify . برای ساخت گراف دایرکتوری فعلی.

این ابزار می‌تواند به‌عنوان یک سرور MCP (Model Context Protocol) از طریق graphify mcp --transport stdio یا graphify mcp --transport http عمل کند. برای مقیاس سازمانی، از ارسال داده‌ها به پایگاه‌داده‌های گرافی مانند Neo4j (graphify push --backend neo4j --uri bolt://localhost:7687) یا FalkorDB پشتیبانی می‌کند.

کاربران می‌توانند از طریق پرس‌وجوهای زبان طبیعی با گراف تعامل کنند (مثلاً: graphify query "how does the login form connect to the users table?")، کوتاه‌ترین مسیر بین دو گره را بیابند (graphify path auth.login db.users) یا از AI بخواهند یک تابع خاص را با استفاده از گراف به عنوان زمینه توضیح دهد (graphify explain src/auth/handler.py:validate_token).

این چرخش از بازیابی برداری به پیمایش گرافی، فرض بنیادی برنامه‌نویسی با AI را تغییر می‌دهد: اکنون کیفیت زمینه (Context) مهم‌تر از توانایی خودِ مدل است. با ارائه مسیری قابل ردیابی و حسابرسی از روابط، Graphify دستیاران AI را از «حدس‌های پذیرفتنی» به «درک ساختاری» می‌برد. این رویکرد در راستای گزارش‌های اخیر است که نشان می‌دهد عامل‌های هوش مصنوعی توانسته‌اند بار مهندسی را در حوزه‌های پیچیده محاسباتی به‌شدت کاهش دهند.

برنامه‌نویسان اکنون باید ارزیابی کنند که آیا ابزارهای AI مبتنی بر RAG فعلی آن‌ها، لینک‌های معماری حیاتی را در مخازن بزرگ از دست می‌دهند یا خیر. گام بعدی، نظارت بر این است که ابزارهای سازگار با MCP چگونه از زمینه گرافی برای کاهش توهمات در بازسازی سیستم‌های پیچیده استفاده می‌کنند.

گام بعدی شما

  • اگر از Cursor یا Claude Code استفاده می‌کنید، Graphify را نصب کنید تا توهمات مدل در پروژه‌های بزرگ را کاهش دهید.
  • گره‌های خدا (God Nodes) پروژه خود را شناسایی کنید تا نقاط حساس معماری را برای بازبینی انسانی علامت‌گذاری کنید.
  • بررسی کنید آیا ابزارهای RAG فعلی شما لینک‌های معماری حیاتی را در مخازن بزرگ از دست می‌دهند یا خیر.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با حذف توهمات ساختاری، اعتماد برنامه‌نویسان به AI در پروژه‌های Enterprise را افزایش می‌دهد. با تکیه بر استانداردهای tree-sitter، امنیت داده‌ها در محیط‌های حساس تضمین شده و هزینه استنتاج کاهش می‌یابد.

تأثیر برای ایران

برنامه‌نویسان ایرانی می‌توانند با نصب محلی این ابزار و استفاده از Ollama، بدون نیاز به APIهای پولی و دور زدن تحریم‌ها، تحلیل ساختاری پروژه‌های خود را انجام دهند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی شباهت برداری با پیمایش قطعی گراف، نقطه پایان عصر «حدس زدن» در کدنویسی AI است. این رویکرد نشان می‌دهد که برای رسیدن به استدلال دقیق، نیاز به مدل‌های بزرگ‌تر نیست، بلکه نیاز به ساختارهای داده‌ای است که حقیقتِ معماری کد را به مدل دیکته کنند. در واقع، Graphify لایه استدلال را از مدل به ساختار داده منتقل کرده است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.