التكوين

كل معامل يقرأه الخادم من axon-config.json، بالإضافة إلى متغيرات البيئة التي تتجاوزها.

ملف التكوين

يبحث الخادم عن axon-config.json في مجلد العمل، أو في المسار المحدد في متغير البيئة AXON_CONFIG. يتم شحن ملف بدء التشغيل باسم axonMcpServer-config.json؛ انسخه وعدّله.

{
  "server":   { "port": 3847 },
  "codePath": "/path/to/axon/code",
  "docsPath": "/path/to/axon/docs",
  "filePatterns": {
    "code": ["**/*.axon", "**/*.trio"],
    "docs": ["**/*.html", "**/*.md"]
  },
  "cache":   { "enabled": true, "maxAge": 86400000, "directory": ".cache" },
  "semanticSearch": { "enabled": true, "codeModel": "Xenova/all-MiniLM-L6-v2" }
}

المسارات

codePath

المسار المطلق للمجلد الذي يحتوي على ملفات .axon و .trio الخاصة بك. يمشي الماسح الضوئي للملفات فيه بشكل متكرر، محترماً أنماط filePatterns.code وتخطي المجلدات في excludeDirs (الافتراضية: node_modules، .git).

docsPath

المسار المطلق لتوثيقك بصيغة HTML. يستخرج محلل FlexSearch العناوين وكتل الأكواد والنصوص إلى فهرس المستندات. يتم دعم ملفات Markdown جنباً إلى جنب مع HTML.

OAuth

فعّلها للنشرات متعددة المستخدمين عبر HTTP:

"oauth": {
  "enabled": true,
  "accessTokenTtl": 3600,
  "refreshTokenTtl": 2592000,
  "scopesSupported": ["mcp:read", "mcp:write", "mcp:admin"]
}

مع enabled: false، ينقل HTTP الاتصالات غير المصرح بها — لا بأس بذلك لـ localhost، أبداً للنشرات العامة.

اتصال SkySpark

"skyspark": {
  "home": "/path/to/skyspark",
  "configDir": "config",
  "autoDiscover": true,
  "autoSyncFunctions": true,
  "syncConcurrency": 10,
  "functionVersioning": true,
  "maxVersions": 4,
  "fallback": {
    "host":     "localhost",
    "port":     8080,
    "project":  "demo",
    "username": "su",
    "password": "su",
    "protocol": "http"
  }
}

autoDiscover

عندما يكون true، يقرأ الخادم مجلد تكوين SkySpark وينسب كل مشروع عند بدء التشغيل. عندما يكون false، يتم استخدام كتلة fallback كهدف الاتصال الوحيد.

functionVersioning

عندما يكون true، كل استدعاء إلى commitAxonFunction يحتفظ بالمراجعة السابقة. يحد maxVersions من عدد المراجعات المحتفظ بها لكل دالة قبل إسقاط الأقدم.

fallback

يُستخدم عندما يفشل autoDiscover أو يكون مسارات home/config غير قابلة للوصول. كما يتم استخدامه عندما يستدعي العميل switchSkySparkProject مع مشروع لم يتم العثور عليه عبر الاكتشاف.

البحث الدلالي

تعمل تضمينات المتجهات على semanticCodeSearch و findSimilarCode. يعمل النموذج الافتراضي محلياً بشكل كامل (بدون استدعاءات API خارجية) عبر HuggingFace Transformers:

"semanticSearch": {
  "enabled": true,
  "codeModel": "Xenova/all-MiniLM-L6-v2",
  "embeddingThreads": 2
}

تستمر التضمينات في LanceDB في .cache/embeddings. أعد البناء باستخدام buildProjectEmbeddings بعد تغيير كود كبير.

المشروع الأساسي

تحتاج أدوات التنفيذ والالتزام إلى معرفة المشروع الذي يجب استهدافه في SkySpark:

"primaryProject": {
  "instance": "localhost8080",
  "project":  "sensorRead"
}

يمكن للعملاء تبديل المشروع الأساسي في وقت التشغيل عبر setPrimaryProject. يستمر السياق المختار للجلسة.

تجاوزات متغيرات البيئة

المتغير الغرض
MCP_TRANSPORT stdio (الافتراضي) أو http.
MCP_PORT منفذ HTTP عند MCP_TRANSPORT=http. الافتراضي 3847.
AXON_CONFIG المسار المطلق لملف التكوين JSON.
NODE_OPTIONS تم تعيينه مسبقاً إلى --max-old-space-size=8192 في نصوص البدء.

تتفوق متغيرات البيئة على القيم في تكوين JSON.