Engineering

تعليم الذكاء الاصطناعي لغةً لم يرَها من قبل: داخل خادم Axon MCP

معظم نماذج اللغة لم تقرأ سطرًا واحدًا من Axon. وبدون ترسيخ معرفي، فإنها إما ترفض المساعدة أو تخترع دالةً لا وجود لها. إليك طبقة المعرفة التي تسدّ هذه الفجوة.

Alper Üzmezler· Sep 15, 2026 · 9 دقيقة قراءة

اطلب من نموذج لغوي عام أن يكتب لك دالة Axon، وستحصل على إحدى إجابتين. الإجابة الصادقة هي رفض مهذّب. أما الخطِرة فهي كتلة برمجية واثقة تستدعي rollupByDay() — وهي دالة لم توجد قط في أي إصدار من SkySpark.

هذا ليس إخفاقًا في الذكاء، بل إخفاق في الانكشاف. فـ Axon لغة خاصة بمجال بناء التحليلات: صغيرة وغريبة وجميلة، بنموذج استعلام folio ونظام مكوّنات defcomp لا يشبهان أي شيء آخر في متن التدريب. لقد قرأ النموذج ملايين الأسطر من بايثون. ولم يقرأ تقريبًا شيئًا من أسطرك أنت.

وُجد Axon MCP Server لإصلاح ذلك، وهو يصلحه بالطريقة المملّة: لا عبر ضبط النموذج بدقة، بل عبر جعل المتن الحقيقي على بُعد استدعاء أداة واحد.

شكل المشكلة

دالة Axon مهلوسة أسوأ من عدم وجود إجابة أصلًا. ففي بايثون، تُطلق الطريقة المختلَقة خطأ AttributeError خلال ثانية. أما في منصة تحليلات المباني، فقد تجتاز قاعدةٌ تبدو معقولةً فحصَ البنية النحوية، وتُنشر في موقع حيّ، وتنتج بهدوء أرقام طاقة خاطئة لمدة شهر قبل أن يلاحظ أحد أن خط الأساس قد انحرف.

لذا لم يكن المطلب يومًا "اجعل المساعد يبدو طليقًا". بل كان: كل اقتراح يجب أن يأتي من شيء موجود فعلًا، وينبغي أن يكون المساعد قادرًا على إثبات ذلك.

ما الذي تتم فهرسته

يفهرس Axon MCP Server ثلاثة أشياء ويعرضها جميعًا عبر بروتوكول سياق النموذج (Model Context Protocol):

  • وثائق SkySpark — آلاف صفحات HTML يتم زحفها وتقسيمها إلى مقاطع
  • دوال Axon — من مجلدات المشاريع المزامَنة وصادرات المكتبات دون اتصال
  • استخدامات المعاملات — مواضع استدعاء حقيقية، لا مجرد تواقيع

الأرقام البارزة في الإصدار الحالي: أكثر من 4000 صفحة وثائق مفهرَسة خلال 30 إلى 60 ثانية، واستعلامات يُجاب عنها في أقل من 50 مللي ثانية، وذاكرة مؤقتة لمدة 24 ساعة بحيث تكون عمليات الإقلاع اللاحقة فورية بدل إعادة الزحف من الصفر.

المصادر 4000+ وثيقة دوال ‎.axon Tree-sitter حدود العبارات التضمين LanceDB + FlexSearch MCP < 50 م.ث لكل استعلام فهرسة واحدة — من 30 إلى 60 ثانية ذاكرة مؤقتة 24 ساعة تُحفَظ التعليقات كإشارة بحث، ولا تُحذف باعتبارها ضجيجًا

لماذا المحلّل اللغوي أهم من نموذج التضمين

من المغري التعامل مع الفهرسة كمشكلة محلولة: قسّم الملف كل 500 وحدة رمزية، وضمّن المقاطع، وامضِ قدمًا. هذا ينجح بدرجة مقبولة مع النصوص النثرية، وينجح بشكل سيّئ مع الكود.

قسّم دالة Axon عند عدد محارف ثابت، وستقطع بانتظام كتلة do ... end إلى نصفين. المقطع الأول يحوي شرطًا بلا جسم. والثاني يحوي جسمًا بلا شرط. وكلاهما يُضمَّن في متجهات لا تعني شيئًا تقريبًا، وكلاهما سيعود بكل سرور كنتائج بحث.

بدلًا من ذلك، يحلّل Axon MCP Server باستخدام قواعد tree-sitter مصمّمة لهذا الغرض. وهذا يحقق ثلاثة أمور ملموسة:

  • تقع المقاطع على حدود العبارات. فالمقطع المسترجَع فكرة كاملة، ما يعني أن المساعد الذي يقرؤه يرى كودًا صالحًا.
  • تُعرَض خلايا defcomp باعتبارها واجهة المكوّن. فعندما يسأل أحدهم عمّا يأخذه المكوّن وما يعيده، يكون لهذا السؤال إجابة مُهيكلة بدل تخمين من النص المحيط.
  • تُحفَظ التعليقات كإشارة بحث. فالجملة التي تشرح لماذا توجد قاعدة ما هي في الغالب أفضل تطابق لسؤال بلغة طبيعية، والمحلّل الساذج يرميها بعيدًا بوصفها ليست كودًا.

ينال نموذج التضمين الفضل في البحث الدلالي. أما القواعد النحوية فهي ما يجعل الشيء الذي يُضمّنه جديرًا بالبحث فيه أصلًا.

مُرسَّخ، لا طليق

الفرق الذي يحدثه هذا ليس طفيفًا.

غير مُرسَّخ rollupByDay(points) .normalizeBy(revenue) معقول من حيث البنية النحوية. ولا وجود لأي من الدالتين. يفشل عند النشر — أو الأسوأ، يعيد أرقامًا خاطئة بصمت. مُرسَّخ hisRollup(hisRead(pt, span), sum) // استخدام مفهرَس: 14 موضع استدعاء مستمَدّ من المتن الحقيقي كل اقتراح يمكن تتبّعه إلى كود مفهرَس. والدوال المولَّدة يتم التحقق منها مسبقًا قبل تسليمها على الإطلاق.

العمود الأيمن في الرسم هو المنتج بأكمله. فالمساعد ليس بارعًا؛ بل هو خاضع للمساءلة. لقد وجد شيئًا، ويستطيع الإشارة إلى مصدره، ورسم بياني الاستدعاءات الذي استخدمه للوصول إليه ثنائي الاتجاه — يمكنك أن تسأل مَن يستدعي دالةً ما بالسهولة نفسها التي تسأل بها عمّا تستدعيه هي.

حزمة التقنيات، باختصار

TypeScript في كل مكان، تتحدث بروتوكول سياق النموذج. FlexSearch لاسترجاع الكلمات المفتاحية، وLanceDB مع تضمينات HuggingFace Transformers للاسترجاع الدلالي، وtree-sitter للبنية، وPrisma فوق SQLite لبيانات المشاريع وعمليات الفهرسة الوصفية، وOAuth 2.1 على نقطة النهاية الويبية.

يتطلب تشغيله Node.js الإصدار 20 أو أحدث. وكل ما عدا ذلك يعمل دون اتصال؛ ووجود نسخة SkySpark حيّة اختياري، ولا يفتح سوى ميزات التنفيذ والاستعلام المباشر.

لمن هذا فعليًا

  • مطورو SkySpark الذين يكتبون منطق التكييف والطاقة والـ sparks ويريدون شريك برمجة يعرف المنصة، لا شريكًا يطابق أنماط بايثون عليها
  • مكاملو أتمتة المباني الذين يوحّدون معرفةً موزّعة حاليًا على عشرات مجلدات المشاريع وفي ذاكرة مهندس أقدم واحد
  • المطورون المعتمدون على الذكاء الاصطناعي الذين يحتاجون إلى سياق دقيق وتعلّموا ألّا يثقوا بالبنية النحوية الواثقة

هذه المجموعة الأخيرة هي الجمهور الصادق. فالقيمة هنا ليست في أن المساعد يصبح أذكى، بل في أنه يتوقف عن أن يكون مخطئًا بثقة بشأن لغة لم يُعلَّمها قط.


Axon MCP Server متاح المصدر على github.com/Project-SandStar/AxonMcpServer. وتحتوي صفحة المشروع على مجموعة الأدوات الكاملة ودليل التثبيت.