البنية المعمارية
صُمّم Ogma كتطبيق سطح مكتب محلي يتكوّن من واجهة خلفية بلغة Rust وواجهة أمامية باستخدام Vue وغلاف Electron وتخزين محلي للمشاريع وبيئة تشغيل للإضافات وتكامل اختياري مع MCP.
المكوّنات الرئيسية
| المكوّن | الموقع | المسؤولية |
|---|---|---|
| الواجهة الخلفية للوكيل وواجهة API بلغة Rust | crates/proxy | وكيل MITM وواجهة REST API والتخزين والماسحات الأمنية وإعادة الإرسال والأتمتة والإضافات وMCP وOAST ونقاط نهاية التحكّم بالمتصفح. |
| الواجهة الأمامية باستخدام Vue | frontend/src | واجهة مساحة العمل ومخازن الحالة والمسارات والمحرّرات والماسحات الأمنية وإطارات iframe للإضافات ومساحة عمل الذكاء الاصطناعي والأدوات المساعدة. |
| غلاف سطح المكتب باستخدام Electron | desktop | تطبيق سطح المكتب المعبّأ والتكامل مع نوافذ المتصفح وجسر الإعدادات ودورة حياة التطبيق. |
| التوثيق | docs | موقع التوثيق باستخدام VitePress. |
| مجلد البيانات | ogma-data أو بيانات التطبيق على المنصة | قاعدة بيانات SQLite ومواد سلطة التصديق CA والإضافات والتصديرات والنسخ الاحتياطية والملفات. |
الواجهة الخلفية
توفّر الواجهة الخلفية واجهة REST API ومستمعًا للوكيل. تشمل وحداتها الرئيسية:
proxy_server.rs: اعتراض HTTP وتمريره.intercept.rsوintercept_rules.rs: قائمة انتظار الاعتراض ومطابقته.store.rsوstore_actor.rs: الوصول إلى قاعدة بيانات المشروع ومقبض التخزين غير المتزامن.api.rs: توجيه واجهة API ومعالجاتها.replay.rsوautomate.rsوworkflows.rs: تنفيذ الطلبات بصورة قابلة للتكرار.passive_scanner.rsوactive_scanner.rs: محركات الماسحات الأمنية.plugins.rsوplugin_runtime.rs: البيانات الوصفية للإضافات وبيئة التشغيل المعزولة والصلاحيات والأحداث.mcp.rs: موارد MCP وأدواته.ca.rsوtls_cert.rsوclient_cert.rs: دعم الشهادات وTLS.ws_history.rsوws_replay.rsوsse.rs: دعم حركة البيانات المتدفقة.oast.rs: خدمات الاتصالات الراجعة خارج القناة.
الواجهة الأمامية
الواجهة الأمامية تطبيق Vue يستخدم التحميل الكسول على مستوى المسار لمعظم عروض مساحة العمل.
الأجزاء الرئيسية:
router/index.ts: مسارات مساحة العمل والإعدادات.components/NavSidebar.vue: التنقّل الرئيسي في المنتج.stores/*: مخازن Pinia للسجل وإعادة الإرسال والأتمتة والنتائج ومسارات العمل والإضافات والنطاق وواجهة الأوامر والذكاء الاصطناعي وغيرها من الحالات.api/client.tsوapi/types.ts: واجهة عميل API ذات الأنواع المحدّدة.views/*: صفحات ميزات مساحة العمل.components/WorkspacePanel.vue: لوحة مساحة عمل الذكاء الاصطناعي وواجهة الأوامر العكسية.views/PluginsView.vueوviews/PluginPageView.vue: تثبيت الإضافات وإدارتها واستضافة إطارات iframe للواجهة الأمامية.
غلاف سطح المكتب
يوفّر غلاف Electron تجربة سطح المكتب المعبّأة ووظائف الجسر الأصلية:
- تشغيل نافذة التطبيق والتحكّم بها.
- حفظ إعدادات سطح المكتب في التخزين المحلي للواجهة الأمامية.
- فتح نوافذ Ogma Browser وعروض المتصفح المضمّنة.
- تغليف الأصول والملفات التنفيذية لتوزيع تطبيق سطح المكتب.
نموذج التخزين
يحتفظ Ogma ببيانات التقييم محليًا. تحدّد ترحيلات الواجهة الخلفية جداول خاصة بكل مشروع لما يلي:
- سجل HTTP وأجسام الرسائل.
- حركة بيانات WebSocket وSSE.
- جلسات إعادة الإرسال ومحاولاتها.
- جلسات الأتمتة وتشغيلاتها ونتائجها.
- النتائج وروابط الأدلة.
- مسارات العمل وتشغيلاتها.
- إعدادات النطاق المسبقة.
- الإضافات وصلاحياتها.
- الملفات والتصديرات والنسخ الاحتياطية والإعدادات.
بيئة تشغيل الإضافات
يمكن أن تتضمّن الإضافات مكوّنات خلفية أو أمامية أو كليهما.
تعمل الإضافات الخلفية داخل بيئة JavaScript معزولة وتتلقّى كائن sdk. وتعمل الإضافات الأمامية في إطارات iframe معزولة وتتواصل عبر جسر يتحكّم به Ogma.
حدود مهمة:
- لا تستطيع الإضافات الأمامية الوصول إلى DOM الخاص بالصفحة الأم.
- يجري التحقّق من أوامر الجسر على جانب الخادم.
- تتطلّب الإجراءات الخلفية المحمية صلاحيات معلنة وممنوحة.
- تُنسخ الحزم المثبّتة إلى مجلد الإضافات الذي يديره Ogma لضمان سلوك مستقر أثناء التشغيل.
راجع نظام الإضافات.
التكامل مع MCP
يتيح خادم MCP سياق مشروع Ogma للمساعدين الخارجيين. ويبدأ بوضع القراءة فقط افتراضيًا. تتطلّب إمكانات الكتابة والتصدير وإرسال الطلبات وتشغيل سير العمل والتحكّم بالاعتراض صلاحيات صريحة.
راجع إعداد MCP.
مبادئ التصميم
- إعطاء الأولوية للعمل المحلي افتراضيًا.
- ربط النتائج بالأدلة.
- تحديد النطاق قبل الأتمتة.
- اشتراط صلاحيات صريحة للذكاء الاصطناعي والإضافات وإرسال الطلبات والتصديرات.
- تنقّل سريع لمهام المختبر المتكرّرة.
- التوافق مع أساليب العمل المعروفة باستخدام الوكلاء مع إبقاء Ogma قابلًا للتوسعة.