التكوين
كل معامل يقرأه الخادم من 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.