Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

إعادة التحميل الفوري

يدعم PRX إعادة التحميل الفوري لمعظم تغييرات الإعدادات. عند تحرير config.toml (أو أي جزء في config.d/)، تُكتشف التغييرات وتُطبَّق خلال ثوانٍ -- بدون الحاجة لإعادة التشغيل.

كيف يعمل

يستخدم PRX آلية من ثلاث طبقات لتحديثات الإعدادات الحية:

  1. مراقب الملفات -- يراقب نظام ملفات notify مجلد الإعدادات (كلاً من config.toml وشجرة config.d/ بالكامل) بحثًا عن أحداث الكتابة.

  2. التأخير -- تُؤخَّر الأحداث بنافذة مدتها ثانية واحدة لدمج عمليات الكتابة المتتالية السريعة (مثل المحررات التي تكتب ثم تعيد التسمية).

  3. الاستبدال الذري -- عند اكتشاف تغيير، يقوم PRX بـ:

    • حساب بصمة SHA-256 للإعدادات الجديدة
    • مقارنتها بآخر بصمة معروفة (يتخطى إذا كانت متطابقة)
    • تحليل TOML الجديد إلى بنية Config
    • عند النجاح: نشر الإعدادات الجديدة ذريًا عبر ArcSwap (بدون قفل)
    • عند الفشل: الاحتفاظ بالإعدادات السابقة وتسجيل تحذير

يضمن نوع SharedConfig (Arc<ArcSwap<Config>>) أن جميع المكونات التي تقرأ الإعدادات تحصل على لقطة متسقة بدون تنافس. تستدعي القراءات .load_full() للحصول على لقطة Arc<Config> تبقى صالحة حتى لو استُبدلت الإعدادات أثناء الاستخدام.

ما هو قابل لإعادة التحميل الفوري

التغييرات التالية تسري فورًا (خلال ثانية واحدة تقريبًا):

الفئةأمثلة
إعدادات المزودdefault_provider، default_model، default_temperature، api_key، api_url
إعدادات القنواتallowed_users في Telegram، mention_only في Discord، channel_id في Slack، إلخ.
إعدادات الذاكرةbackend، auto_save، embedding_provider، فترات الاحتفاظ
إعدادات الموجهenabled، الأوزان (alpha/beta/gamma/delta/epsilon)، عتبات Automix
إعدادات الأمانواجهة صندوق الرمل، حدود الموارد، إعدادات التدقيق
إعدادات الاستقلاليةقواعد النطاق، مستويات الاستقلالية
إعدادات MCPتعريفات الخوادم، المهل، قوائم سماح الأدوات
إعدادات البحث على الويبenabled، provider، max_results
إعدادات المتصفحenabled، allowed_domains
إعدادات Xinenabled، interval_minutes، حدود المهام
إعدادات التكلفةdaily_limit_usd، monthly_limit_usd، التسعير
إعدادات الموثوقيةmax_retries، fallback_providers
إعدادات المراقبةbackend، نقطة نهاية OTLP
إعدادات الوكيلعناوين URL للوكيل، قوائم عدم الوكيل، النطاق

ما يتطلب إعادة تشغيل

عدد صغير من الإعدادات مرتبطة ببدء التشغيل ولا يمكن تغييرها أثناء التشغيل:

الإعدادالسبب
[gateway] hostمستمع TCP يُربط مرة واحدة عند بدء التشغيل
[gateway] portمستمع TCP يُربط مرة واحدة عند بدء التشغيل
إعدادات [tunnel]اتصالات النفق تُنشأ عند بدء التشغيل
رموز بوتات القنواتاتصالات البوتات (استطلاع Telegram الطويل، بوابة Discord، مقبس Slack) تُهيّأ مرة واحدة

لهذه الإعدادات، يجب إعادة تشغيل خادم PRX:

bash
# إذا كان يعمل كخدمة systemd
sudo systemctl restart openprx

# إذا كان يعمل في المقدمة
# أوقفه بـ Ctrl+C، ثم شغّله مرة أخرى
prx

أمر إعادة التحميل في سطر الأوامر

يمكنك تشغيل إعادة تحميل الإعدادات يدويًا دون تحرير الملف:

bash
prx config reload

هذا مكافئ لاكتشاف مراقب الملفات لتغيير. يعيد قراءة وتحليل ملفات الإعدادات ويستبدل الإعدادات الحية ذريًا. هذا مفيد عندما:

  • عدّلت الملف لكن المراقب فاتته الحدث (نادر)
  • تريد فرض إعادة تحميل بعد تحديث متغيرات البيئة
  • تكتب سكربتات لتغيير الإعدادات

معالجة الأخطاء

إذا احتوى ملف الإعدادات الجديد على أخطاء:

  • أخطاء بنية TOML -- يرفض المحلل الملف. تُحتفظ الإعدادات السابقة. يُسجَّل تحذير بتفاصيل خطأ التحليل.
  • قيم حقول غير صالحة -- يكتشف التحقق مشاكل مثل confidence_threshold > 1.0 أو premium_model_id فارغ عندما يكون Automix مفعّلاً. تُحتفظ الإعدادات السابقة.
  • ملف مفقود -- إذا حُذف config.toml، يسجّل المراقب خطأ لكن الإعدادات في الذاكرة تستمر في العمل.

في جميع حالات الخطأ، يستمر PRX في العمل بآخر إعدادات صالحة معروفة. لا تُفقد أي بيانات ولا يحدث انقطاع في الخدمة.

مراقبة إعادات التحميل

يحتفظ HotReloadManager بعداد reload_version أحادي الاتجاه يزداد مع كل إعادة تحميل ناجحة. يمكنك التحقق من الإصدار الحالي عبر نقطة نهاية حالة البوابة:

bash
curl http://localhost:16830/api/status

تتضمن الاستجابة عدد إعادات التحميل الحالي، مما يساعدك في التحقق من تطبيق تغييراتك.

إعادة تحميل الملفات المقسّمة

عند استخدام ملفات إعدادات مقسّمة (config.d/*.toml)، يراقب المراقب مجلد config.d/ بالكامل بشكل متكرر. يؤدي التغيير في أي جزء .toml إلى إعادة دمج كاملة وإعادة تحميل لجميع الإعدادات. هذا يعني:

  • تحرير config.d/channels.toml يعيد تحميل الإعدادات بالكامل (ليس فقط القنوات)
  • إضافة أو إزالة ملف جزء يؤدي إلى إعادة تحميل
  • ترتيب الدمج أبجدي حسب اسم الملف، مع أولوية الأجزاء على config.toml

Released under the Apache-2.0 License.