دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

دليل الاستضافة الذاتية لـ SkyDot: بنيو ورشة عمل متعددة Dot AI من الصفر

فهاد المقال غادي نتعرّفو على بنية SkyDot والقدرات الأساسية ديالو، وغادي نكمّلو تثبيت محلي، إعداد النماذج، أوضاع التنفيذ عبر Host ولا Docker، الربط مع تطبيق سطح المكتب، وإعداد التعاون بين بزاف ديال Dot.

دليل الاستضافة الذاتية لـ SkyDot: ورشة عمل متعددة Dot AI

شنو هو SkyDot

SkyDot هو Workspace مفتوح المصدر ومستضاف ذاتياً لعدة مستخدمين، مبني على Pi Agent Runtime. تقدر تنشئ بزاف ديال Dotات بأسماء وإعدادات مختلفة، وتخلي كل واحد فيهم يتكلف بمهام معينة؛ وتقدر حتى تجمع عدة Dotات فمحادثة جماعية، وتوسع قدراتها فالخدمة الطويلة باستعمال المهام المبرمجة، وSkills، وMCP، وPlugins وMemory.

ماشي غير صفحة ديال الدردشة. Workspace كيقسم الملفات، والجلسات، والذاكرة وحدود التنفيذ، وBackend كيتكلف بالمصادقة، والصلاحيات، والصفوف، والجدولة، وProvider وقنوات الرسائل، بينما Host أو Docker Runner كينفذ Agent فعلياً. طلبات تأكيد صلاحيات الأدوات، وطلبات الأجهزة، وتقدم المهام اللي خاص المستخدم يوافق عليها، كترجع حتى هي لنفس الـWorkspace.

بنية نظام SkyDot

البنية الأساسية وحدود التنفيذ

SkyDot كيفصل بين الواجهة، وطبقة التحكم، وطبقة التنفيذ، وكيصلح للاستعمال الشخصي وكذلك للنشر الذاتي داخل الفرق.

  • Backend: مبني على Node.js وTypeScript وHono وSQLite وWebSocket، وكيتكلف بالمصادقة، والتخزين الدائم، والصفوف، والجدولة، وProvider، والقنوات، والصلاحيات.
  • Runner: كيستعمل Pi Agent Runtime لتنفيذ مهام Agent الفعلية، مع إمكانية اختيار وضع Host المحلي أو حاوية Docker بلا root.
  • Workspace: كيحدد الملفات، وSession، وMemory، وربط القنوات، وحدود التشغيل.
  • Web وPWA وElectron: كيتقاسمو واجهة React ديال التطبيق، وElectron Renderer مسؤول غير على الواجهة، وما كيتعاملش مباشرة مع قاعدة البيانات، أو نظام الملفات، أو بيانات الاعتماد، أو Docker، أو صلاحيات shell/process.

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

الوظائف الرئيسية

Dot شخصي والجلسات

كل Dot يقدر يكون عندو الاسم، والصورة، وPrompt، والموديل، ومستوى التفكير، وSkills، وMCP وسياسة التنفيذ ديالو بشكل مستقل. المحادثة كتدعم الإخراج التدريجي، وMarkdown، وكتل الكود، ومرفقات الملفات، والإيقاف، والرسائل اللاحقة، واسترجاع الجلسات.

محادثة SkyDot مع Dot شخصي

كل Workspace معزول على الآخر؛ الملفات، والجلسات، والذاكرة، وربط القنوات، وصلاحيات التنفيذ ما كتخلطش غير حيث دخلتي لنفس الواجهة. أثناء التنفيذ تقدر تختار وضع Host أو وضع Container.

المحادثة الجماعية والتعاون بين عدة Dotات

منين كتفعل المحادثة الجماعية الأصلية، تقدر تشوف فخط زمني واحد رسائل عدة Dotات، وإيصالات المهام، والتقدم والنتائج. الذكر الصريح والتفويض المراقب كيساعدو فحصر نطاق التعاون؛ إعادة الاتصال أو إعادة فتح الصفحة غير كتقرا الحالة، وما كترسلش مهام جديدة أوتوماتيكياً.

التعاون بين عدة Dotات في SkyDot

المحادثة الجماعية مسدودة افتراضياً. باش تفعل المحادثة الجماعية الأصلية خاصك تضبط SKYDOT_BOT_GROUPS=true؛ وإذا بغيتي حتى تسمح بالتعاون بين Botات، خاصك تزيد تضبط SKYDOT_BOT_HANDOFFS=true، مع إعداد صلاحيات التشغيل وميزانية الاستدعاءات من طرف المسؤول.

المهام المبرمجة وSkills وMemory

Scheduler كيدعم Cron، والفواصل الزمنية الثابتة، والمهام اللي كتخدم مرة وحدة، وكيتيح التشغيل الفوري، والتوقيف المؤقت، والإلغاء، وتاريخ التشغيل، وإرسال النتائج. تقدر تدير إدارة مركزية لـSkills وMCP وPlugins، ومن بعد تحدد نطاق تفعيلها لكل Dot.

Memory كتخزن على مستوى Workspace الحقائق، والتفضيلات، والقرارات، والتجارب، والحوايج اللي خاص متابعة فيها، وكتدعم البحث، والإنشاء، والتعديل، والنسيان، وتاريخ الإصدارات. Session كتخزن سياق محادثة معين، بينما Workspace Memory كتخزن المعرفة اللي يمكن يعاود يتستعمل بها بين Sessions؛ بجوجهم مستقلين على بعضياتهم.

التحضير قبل التثبيت

  • Node.js: الإصدار 22.19 أو أحدث، وكيُنصح بـNode.js 24 LTS. تخزين Pi Durable كيحتاج SQLite المدمج فـNode.js.
  • npm: كيتثبت مع Node.js، وكيستعمل لتثبيت تبعيات كل مشروع فرعي.
  • Docker: مطلوب غير فـوضع تنفيذ Container.
  • Model Provider: المحادثة الحقيقية مع AI كتحتاج Provider ديال الموديل يكون خدام؛ بلا API Key تقدر مع ذلك تشغل الواجهة أولاً.
  • GNU Make: اختياري، وكيستعمل لفحص الأنواع، والنسخ الاحتياطي، وأوامر الصيانة.

تثبيت SkyDot من الصفر

1. استنساخ المستودع وتثبيت التبعيات

نفذ الأوامر التالية فالتيرمينال باش تثبت تبعيات المشروع الرئيسي، وواجهة Web، وAgent Runner كل واحد بوحدو:

git clone https://github.com/2SinceJuly/SkyDot.git
cd SkyDot

npm install
npm --prefix web install
npm --prefix container/agent-runner install

2. بناء الخدمة وتشغيلها

من بعد ما تكمل تثبيت التبعيات، بنِ جميع المكونات وشغل Backend:

npm run build:all
npm start

حل http://127.0.0.1:3000 وكمل تهيئة المسؤول من خلال الصفحة. تقدر تخلي إعداد Provider وقنوات الرسائل لوقت لاحق، ولكن بلا إعداد موديل ما غاديش تخدم محادثة AI الحقيقية.

3. تشغيل بيئة التطوير

فوقت التطوير تقدر تشغل Backend وVite Web Client فآن واحد:

npm run dev:all

العنوان الافتراضي لصفحة التطوير هو http://127.0.0.1:5173. إلا كان الهدف غير هو تصفح الواجهة بسرعة فالجهاز المحلي، تقدر تستعمل Demo بلا تسجيل دخول على عنوان loopback:

SKYDOT_DEMO_OPEN=true PROVIDER_SETUP_SKIPPED=true npm start

ما تفعلش وضع Demo فشبكة عمومية أو غير موثوقة. القيود الكاملة ديال هاد الوضع موجودة فـDEMO.md داخل المستودع.

إعداد Model Provider

SkyDot كيخليك تكمل تهيئة الواجهة أولاً، ومن بعد تزيد Provider من الإعدادات. باش تربط موديل حقيقي، خاصك توجد API Key أو Session Cookie أو بيانات اعتماد أخرى مناسبة، وتجنب تكتب بيانات الاعتماد فلقطات الشاشة، أو تاريخ أوامر التيرمينال، أو مستودع Git.

إلا استعملتي واجهة OpenAI Completions ديال طرف ثالث، تقدر تضبط هاد المتغير فمتغيرات البيئة المخصصة ديال Provider:

SKYDOT_MODEL_API=openai-completions

البروتوكول الافتراضي هو anthropic-messages، وهاد الإعداد كيتستعمل حتى هو فـHost وContainer Runner ديال محادثات Dot العادية.

اختيار وضع تنفيذ Agent

وضع Host

وضع Host كيستعمل Runner المحلي مباشرة، وما كيحتاجش Docker، وكيصلح للتطوير المحلي والتحقق السريع. مع ذلك، صلاحيات التنفيذ كتبقى محدودة حسب Workspace والمستخدم وسياسة التشغيل.

وضع Container

وضع Container كيحتاج Docker يكون خدام، وكيحتاج تحضر صورة Agent Runner. الصورة الافتراضية هي 2sincejuly/skydot-agent:latest، وتقدر حتى تبنيها من المصدر الحالي:

docker build --pull -t 2sincejuly/skydot-agent:latest container

إلا بغيتي تستعمل صورة أخرى، تقدر تضبط SKYDOT_CONTAINER_IMAGE، والإعداد المتوافق هو CONTAINER_IMAGE. الخدمة وبناء الصورة خاصهم يتاصلو بنفس Docker daemon. الأمر make start أو make dev كيستعمل الصورة المحلية بالأولوية، وإذا ما لقاهاش كيحاول يسحبها.

تشغيل تطبيق Electron لسطح المكتب

إلا كان Backend وVite خدامين من قبل، تقدر تشغل Electron فترمينال آخر:

SKYDOT_RENDERER_URL=http://127.0.0.1:5173 npm run desktop:dev

إلا كان Backend موفر الصفحة المبنية، تقدر حتى تنفذ مباشرة:

npm run desktop:dev

Electron يقدر حتى يتصل بـBackend بعيد:

SKYDOT_SERVER_URL=https://your-skydot.example.com npm run desktop:dev

لإنشاء حزمة محلية، استعمل الأوامر التالية:

npm run desktop:package:dir
npm run desktop:package

المشروع كيوفر افتراضياً إعداد الحزمة لـmacOS arm64، مع الاحتفاظ بأهداف Windows وLinux. قبل النشر الرسمي، خاصك تضبط التوقيع والتوثيق حسب المنصة المستهدفة.

متغيرات البيئة المهمة

  • WEB_PORT: المنفذ اللي كيسمع فيه Backend، والقيمة الافتراضية هي 3000.
  • SKYDOT_SERVER_URL: عنوان Backend اللي كيتصل به Electron، والقيمة الافتراضية هي http://127.0.0.1:3000.
  • SKYDOT_RENDERER_URL: عنوان Renderer اللي كيتحمل فـElectron.
  • SKYDOT_CONTAINER_IMAGE: صورة حاوية Agent Runner.
  • PROVIDER_SETUP_SKIPPED: كيتجاوز إعداد Provider إلا ما كانش ملف إعدادات النظام.
  • SKYDOT_BOT_GROUPS: كيفعل المحادثة الجماعية الأصلية بين عدة Dotات.
  • SKYDOT_BOT_HANDOFFS: كيفعل التعاون بين Botات داخل المحادثة الجماعية.
  • SKYDOT_PERSONAL_GOALS: كيفعل وظيفة Personal Goal التجريبية.

Personal Goal وDurable Runtime مسدودين افتراضياً. المهام المبرمجة العادية ما كتحتاجش لهاد المفاتيح، وللاطلاع على شروط التشغيل بالتفصيل شوف وثيقة Goals and Tasks.

مثال على مسار استعمال أساسي

  1. دخل لـSkyDot وكمل تهيئة المسؤول.
  2. ضبط Model Provider متاح من الإعدادات.
  3. أنشئ Dot وحدد ليه الاسم، وPrompt، والموديل، وسياسة التنفيذ.
  4. اختار Workspace لـDot، وتأكد أن حدود الملفات والذاكرة مطابقة للتوقعات.
  5. صيفط مهمة فالمحادثة، وتابع الإخراج التدريجي، وتفويض الأدوات، ونتائج التنفيذ.
  6. إلا كنت محتاج تشغيل طويل الأمد، أنشئ Cron أو مهمة بفاصل ثابت أو مهمة كتخدم مرة وحدة.
  7. إلا كنت محتاج تعاون بين أدوار متعددة، فعل المحادثة الجماعية وضبط بوضوح صلاحيات تعاون Botات.

مثلاً، تقدر تنشئ Dot مسؤول على تحليل الكود وDot آخر مسؤول على ترتيب المعلومات، ومن بعد تزيدهم لنفس الدردشة الجماعية. من خلال ذكرهم بوضوح أو تفويض المهام بطريقة مضبوطة، يقدر المستخدم يتابع التقدم والنتائج فخط زمني مشترك، مع الحفاظ على حدود الصلاحيات ديال كل Workspace.

نصائح للتشغيل والأمان

بيانات التشغيل كتتحفظ افتراضياً فالمجلد data/ ديال المستودع، وكتشمل SQLite وWorkspace وSession وMemory وإعدادات التشغيل. هاد المجلد ماكيدخلش لـ Git، ولكن النسخ الاحتياطية تقدر تحتوي على إعدادات حساسة وقاعدة البيانات، وخصها تتحمى بنفس مستوى حماية البيانات الأصلية.

  • استعمل make status باش تشوف حالة Backend واللوغات وDocker.
  • استعمل make stop باش توقف خدمة SkyDot فالمنفذ الحالي.
  • استعمل make backup باش تنشئ نسخة احتياطية من بيانات التشغيل.
  • استعمل make restore FILE=... باش ترجع النسخة الاحتياطية المحددة.
  • استعمل make typecheck باش تنفذ فحوصات Backend وWeb وAgent Runner والوثائق.
  • استعمل npm test -- --run باش تشغل اختبارات Vitest.

فالنشر عن بُعد، خاص استعمال HTTPS وWSS، وضبط الوكيل العكسي وCookie والتحكم فالوصول بشكل صحيح. ماتعرّضش Renderer ولا قاعدة البيانات ولا Docker daemon مباشرةً لمستخدمين غير موثوقين، وماتفعّلش Demo عمومي غير باش تسهّل الأمور.

توسعات إضافية

مكتبة القدرات ديال SkyDot كتدعم مصادر مدمجة، ومضيف النظام، والمشروع، والمستخدم، وWorkspace، وPlugin. قبل ما يبدا Agent الخدمة، كيتولد لائحة القدرات الفعالة، وكيتم حقن Prompt والموارد والسياق حسب السياسة. المشروع كيدعم حتى لقطات إصدارات Plugin، وSubagents، وحدود قدرات متطابقة بين Host وContainer.

فما يخص مداخل الرسائل، Web وPWA وElectron كيتقاسمو نفس الواجهة الأمامية ديال الأعمال، ويمكن ربطها بـ Feishu وTelegram وQQ وDingTalk وWeChat وDiscord وWhatsApp وقنوات أخرى. القنوات تقدر ترتابط بـ Workspace أو Session محدد.

الخلاصة

SkyDot كيدمج المحادثات بين عدة Dot، وعزل Workspace، وتنفيذ Agent، والمهام المبرمجة، والقدرات الموسعة، وصلاحيات الفريق فـ Workbench واحد مستضاف ذاتياً. من بعد ما تكمل إعداد بيئة Node.js، وتثبيت الاعتماديات، والبناء والتشغيل، وضبط Provider حسب هاد المقال، تقدر تبدا بتشغيل Dot شخصي، ومن بعد تفعّل تدريجياً قدرات Docker وElectron والدردشة الجماعية وScheduler وSkills وMCP وMemory وغيرها.

حيت المشروع مازال كيتطور باستمرار، فالنماذج الحقيقية وDocker والقنوات الخارجية والنشر عن بُعد كيعتمدو كل واحد على بيانات الاعتماد وبيئة التشغيل الخاصة به. وحتى القدرات التجريبية بحال Goal وDurable وCloud Runtime ماخاصهاش تعتبر وظائف مفعلة افتراضياً.