التوثيق

الرسم البياني الموحد للسياق

الرسم البياني الموحد للسياق

يبني lean-ctx رسمًا بيانيًا موحدًا يربط الكود والالتزامات والاختبارات والمعرفة والمشكلات - مما يتيح توفير سياق واعٍ بالمهام وتحليل تأثير عميق.

أنواع العقد

يحتوي الرسم البياني على 8 أنواع من العقد تمثل جوانب مختلفة من مشروعك:

📄 File

ملفات المصدر التي يتتبعها المفهرس

🔣 Symbol

الدوال والفئات والأنواع والمتغيرات

📦 Module

التجميعات المنطقية (الحزم والوحدات)

📝 Commit

التزامات Git مع الرسالة والبيانات الوصفية

🧪 Test

دوال الاختبار وملفات الاختبار

🏗️ CIRun

تشغيلات خط أنابيب CI/CD والنتائج

🧠 Knowledge

معرفة المشروع من ctx_session

🎫 Issue

المشكلات والتذاكر المرتبطة بالكود

أنواع الحواف

تمثل الحواف العلاقات بين العقد. يتتبع lean-ctx 11 نوعًا من الحواف:

نوع الحافةالمعنىمثال
Importsملف يستورد ملفًا آخرA.ts → B.ts
Callsدالة تستدعي دالة أخرىfn_a → fn_b
Definesوحدة تعرّف رمزًاmod → fn
TestedByملف يتم اختباره بملف اختبارutils.rs → test_utils.rs
ChangedInملف تم تعديله في التزامfile → commit
MentionedInملف مذكور في حقيقة معرفيةfile → knowledge
Affectsمشكلة تؤثر على ملفissue → file
Breaksالتزام يكسر اختبارًاcommit → test

إثراء الرسم البياني

يوسع الإثراء رسم الكود البياني ببيانات من Git والاختبارات والمعرفة.

مفهرس تاريخ Git

يحلل التزامات Git الأخيرة (افتراضي: آخر 500) وينشئ عقد Commit مع حواف ChangedIn.

مفهرس الاختبارات

يكتشف ملفات الاختبار حسب اتفاقية التسمية ويربطها بملفات المصدر.

جسر المعرفة

يربط حقائق معرفة المشروع بالملفات المرجعية.

أوامر MCP

ctx_graph enrich              # Enrich graph with git, tests, knowledge
ctx_graph build               # Index code structure
ctx_graph status              # Show node/edge counts

Community Detection (Louvain)

The Louvain algorithm clusters files into communities based on their dependency relationships. Files that frequently import each other or share transitive dependencies are grouped together, enabling smarter context preloading and relevance scoring for task-driven queries.

PageRank

Computes file importance scores based on the dependency graph structure. Files imported by many others (structural hubs) receive higher PageRank, which is used by Spectral Relevance and Boltzmann Allocation to prioritize high-impact files during context assembly.

استعلامات السياق

استخدم استعلامات السياق المبنية على الرسم البياني للعثور على الملفات الأكثر صلة بأي مهمة.

الاستخدام

ctx_graph context "fix auth bug"       # Find relevant files for task
ctx_graph related src/auth.rs          # Connected files
ctx_graph impact src/auth.rs           # Blast radius analysis
ctx_graph symbol src/auth.rs::verify   # Symbol definition/usages

كيف يعمل

  • يستخرج الكلمات المفتاحية من وصف المهمة
  • يطابق الكلمات المفتاحية مع أسماء الملفات ورسائل الالتزام
  • يوسع النتائج عبر حواف الرسم البياني
  • يعيد قائمة مرتبة بالملفات ذات الصلة مع سياق العلاقة

تصدير HTML تفاعلي

صدّر رسم التبعيات كملف HTML واحد مستقل. الملف الناتج يعمل بالكامل دون اتصال - افتحه في أي متصفح لاستكشاف قاعدة الكود بصرياً. لا حاجة لخادم، لا تبعيات، مجرد ملف HTML واحد.

الاستخدام

# Export full graph (all nodes)
lean-ctx graph export-html --out graph.html

# Limit to 100 most-connected nodes
lean-ctx graph export-html --out graph.html --max-nodes 100

# Custom project root
lean-ctx graph export-html --out graph.html --root /path/to/project

الميزات التفاعلية

🔍 Search

اكتب أي جزء من مسار الملف لتمييز العقد المطابقة فوراً

🖱️ Pan & Zoom

انقر واسحب للتحريك، مرر للتكبير. يعمل كخريطة.

📋 Node Details

انقر على أي عقدة لرؤية وارداتها ومعتمديها في الشريط الجانبي

🔗 Reverse Deps

انقر بزر الماوس الأيمن على عقدة لتمييز جميع الملفات التي تعتمد عليها (تجاوز BFS)

🖼️ PNG Export

حمّل عرض اللوحة الحالي كصورة PNG بنقرة واحدة

📡 Offline

لا تبعيات خارجية. التطبيق بأكمله مضمّن في ملف HTML واحد.

نصائح

  • استخدم --max-nodes للحفاظ على قابلية قراءة التصور للمشاريع الكبيرة (50–200 نطاق جيد)
  • شغّل graph build أولاً لضمان تحديث الفهرس قبل التصدير
  • ملف HTML آمن للمشاركة مع الزملاء - لا يحتوي على كود مصدري، فقط مسارات الملفات والعلاقات
  • تمييز النقر بالزر الأيمن يعرض سلسلة التبعية العكسية الكاملة، مما يسهل تقييم نطاق تأثير التغييرات

واجهة لوحة المعلومات

نقطة النهايةالوصف
/api/graph/statsعدد العقد والحواف ومسار قاعدة البيانات
/api/graph/enrichتشغيل إثراء كامل للرسم البياني وإرجاع الإحصائيات