لوحة تحكم الويب هي نافذة، وليست مصدراً ثانياً للحقيقة

لوحة تحكم الويب الخاصة بـ APX ليست مركز النظام.

التصميم صارم. الـ daemon هو المالك للحالة (state). واجهة الويب (web UI) هي مجرد عميل محلي (local client). هذا التمييز مهم؛ فهو يحدد أين تكمن الحقيقة ومدى احتمالية انحراف البيانات.

يوفر APC طبقة السياق المحمولة (portable context layer). ويوفر APX طبقة وقت التشغيل (runtime) والأدوات. تنتمي لوحة تحكم الويب إلى APX؛ فهي تتيح لك فحص وقت التشغيل عبر المتصفح، لكنها لا تحتفظ بنسخة خاصة بها من حقيقة المشروع.

تعمل البنية التحتية على النحو التالي:

  • يقوم الـ daemon بتشغيل خادم HTTP محلي.
  • تتواصل كل واجهة مع الـ daemon عبر بروتوكول HTTP.
  • يتم تقديم لوحة تحكم الويب بواسطة الـ daemon.
  • يقوم المتصفح بجلب رمز (token) من الـ daemon.

المتصفح ليس قاعدة بيانات نظيرة (peer database)، بل هو مجرد واجهة واحدة. عندما تصبح لوحة الويب مصدراً ثانياً للحقيقة، فإنها تفشل.

وجود نسختين من الحالة يؤدي إلى الأخطاء:

  • تكتب الـ CLI شيئاً بينما تعرض واجهة المستخدم (UI) شيئاً آخر.
  • تقوم جلسة متصفح بتعديل الإعدادات (config) بينما يستخدم الـ daemon بيانات قديمة.
  • تظهر عملية إعادة التحميل مشروعاً واحداً بينما تعرض علامة تبويب أخرى بيانات قديمة (stale data).
  • لا يصل إصلاح واجهة المستخدم أبداً إلى وقت التشغيل الفعلي.

يتجنب APX ذلك من خلال إبقاء المتصفح "خفيفاً" (thin). تطلب واجهة المستخدم من الـ daemon، والـ daemon يطلب من النواة (core)، والنواة تقرأ أو تكتب في مخزن البيانات الأساسي (backing store). هذه السلسلة بسيطة، والبساطة أمر جيد.

تقوم لوحة التحكم المحلية الجيدة بثلاثة أشياء:

  • عرض الحالة المباشرة (live state).
  • إرسال إجراء بسيط (small action).
  • إعادة التحقق (revalidate) بعد الإجراء.

تتيح لك اللوحة تصفح المشاريع، والوكلاء (agents)، والروتينات (routines)، والجلسات (sessions)، والـ MCPs، والإعدادات. إنها مجرد عرض للنظام، وليست نسخة منفصلة (fork) منه.

التفاصيل التنفيذية تحافظ على كونها محلية:

  • يستخدم وضع التطوير (Dev mode) أداة Vite ويقوم بعمل proxy إلى الـ daemon.
  • في بيئة الإنتاج (Production)، يتم تقديم التطبيق المبني من خلال الـ daemon.
  • مبدأ "الأصل نفسه" (Same origin) يحافظ على بساطة المصادقة (auth) والتوجيه (routing).
  • لا يحتاج المتصفح أبداً إلى صلاحية كتابة مباشرة في المستودع (repo).

الفائدة ليست في اللمسات الجمالية، بل في أن كل إجراء يتم حله عبر واجهة خلفية (backend) واحدة.

إذا قمت بتعديل إعداد في اللوحة، تقوم اللوحة بإرسال التغيير إلى الـ daemon، ثم يقوم الـ daemon بتحديث مخزن المشروع. عملية العرض (render) التالية ستقرأ من نفس مصدر الحقيقة الذي تقرأ منه الـ CLI. نظام واحد، واجهات متعددة.

يمكن لواجهة المستخدم أن تختفي دون إلحاق الضرر بمشروعك. يمكنك إغلاق علامة التبويب أو الانتقال إلى أجهزة أخرى؛ فالحالة تظل في الـ daemon وفي مجلد .apc/.

النموذج الذهني بسيط:

  • APC: ماهية المشروع.
  • APX: كيفية تشغيل المشروع.
  • لوحة تحكم الويب: نافذة واحدة على وقت التشغيل هذا.

حافظ على نظافة هذا الحد الفاصل. سيبقى المكدس (stack) قابلاً للاستبدال، وسيبقى المتصفح اختيارياً، وسيبقى الـ daemon هو المرجع المعتمد، وسيبقى المشروع قابلاً للنقل.

Source: https://dev.to/agentprojectcontext/the-web-admin-is-a-window-not-a-second-source-of-truth-2aip

Optional learning community: https://t.me/GyaanSetuAi