# تعدد المستأجرين والعزل Synapse متعدد المستأجرين: عدة مستخدمين، كلٌّ بعدة عقول، معزولون تمامًا عن بعضهم البعض. تشرح هذه الصفحة نموذج العزل. ## التسلسل الهرمي للمستأجرين ``` Synapse Instance │ ├── User Account 1 (email: alice@example.com) │ ├── Mind A (Mind Key mk_aaa...) │ │ ├── Memories (only accessible via mk_aaa...) │ │ ├── Tasks │ │ └── Chat │ └── Mind B (Mind Key mk_bbb...) │ └── ... (isolated from Mind A) │ ├── User Account 2 (email: bob@example.com) │ └── Mind C (Mind Key mk_ccc...) │ └── ... (isolated from Alice's minds) │ └── ... (more users) ``` ## مستويات العزل ### المستوى 1: عزل المستخدم كل حساب مستخدم معزول. لا تستطيع Alice: - رؤية عقول Bob - الوصول إلى ذكريات Bob (حتى مع JWT الخاص بها) - سرد معلومات حساب Bob يُفرض عبر: عمود `user_id` في جميع الجداول، يحتوي JWT على `user_id`، جميع الاستعلامات تُصفّي حسب `user_id`. ### المستوى 2: عزل العقل ضمن مستخدم، كل عقل معزول. لا يستطيع العقل A: - رؤية ذكريات العقل B - الوصول إلى مهام العقل B، الدردشة، السكربتات يُفرض عبر: عمود `mind_id` في جميع جداول البيانات، يحتوي Mind Key على `mind_id`، جميع الاستعلامات تُصفّي حسب `mind_id`. > [!CRITICAL] > عزل Mind Key هو حدود الأمان الأساسية. Mind Key المُسرّب > يمنح وصولًا كاملًا لبيانات ذلك العقل — لكن ذلك العقل فقط. ## رموز المصادقة | الرمز | النطاق | ما يستطيع الوصول إليه | |-------|-------|-------------------| | Mind Key | عقل واحد | بيانات ذلك العقل فقط | | JWT | حساب المستخدم | إدارة الحساب (إنشاء/سرد/حذف العقول) | | Computer Token | جهاز واحد | أوامر ذلك الجهاز | ## الوصول عبر العقول ### ضمن نفس المستخدم يستطيع المستخدم الوصول إلى جميع عقله عبر JWT (مثلًا `GET /minds` يسرد الكل). لكن لقراءة/كتابة بيانات الذاكرة، يحتاج إلى Mind Key المحدد. ### عبر المستخدمين لا يستطيع المستخدمون الوصول إلى بيانات بعضهم البعض — إلا إذا شاركوا عقلًا صراحةً عبر Sharing API: ```bash # Alice تشارك العقل A مع Bob curl -X POST https://synapse.schaefer.zone/sharing \ -H "Authorization: Bearer ALICE_JWT" \ -d '{"mind_id": "m_aaa", "email": "bob@example.com", "role": "read"}' ``` بعد المشاركة، يستطيع Bob الوصول إلى العقل A عبر JWT الخاص به (للقراءة فقط إذا `role=read`). ## حدود الأمان ``` ┌─────────────────────────────────────────────────┐ │ Synapse Instance │ │ ┌─────────────────────────────────────────┐ │ │ │ User Account Boundary │ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ │ │ Mind Bound. │ │ Mind Bound. │ │ │ │ │ │ (Mind Key) │ │ (Mind Key) │ │ │ │ │ │ │ │ │ │ │ │ │ │ Memories │ │ Memories │ │ │ │ │ │ Tasks │ │ Tasks │ │ │ │ │ │ Chat │ │ Chat │ │ │ │ │ │ Scripts │ │ Scripts │ │ │ │ │ └──────────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘ ``` ## أنماط تعدد المستأجرين الشائعة ### النمط 1: مستخدم واحد، عقل واحد الأكثر شيوعًا لمستخدمي وكلاء LLM الأفراد. - 1 حساب مستخدم - 1 عقل - 1 Mind Key - جميع الذكريات في نطاق واحد ### النمط 2: مستخدم واحد، عقول متعددة للمستخدمين ذوي السياقات المتعددة (العمل، الشخصي، المشاريع). - 1 حساب مستخدم - N عقول (مثلًا "work"، "personal"، "project-x") - N من Mind Keys - كل جلسة LLM تستخدم Mind Key واحد ### النمط 3: عقل مشترك للفريق للفرق المتعاونة على مشروع. - مستخدم واحد ينشئ العقل (يحصل على Mind Key) - المنشئ يشارك مع أعضاء الفريق عبر JWT - جميع أعضاء الفريق يصلون عبر JWT (أو Mind Key مشترك) > [!WARNING] > مشاركة Mind Key تمنح وصولًا كاملًا للقراءة/الكتابة. للتعاون الجماعي، > فضّل Sharing API (قائم على JWT) بدلًا من مشاركة Mind Keys مباشرة. ### النمط 4: مزوّد SaaS للتطبيقات التي تُضمّن Synapse كطبقة ذاكرة لها. - كل عميل = 1 حساب مستخدم - كل مشروع عميل = 1 عقل - التطبيق يخزّن Mind Keys لكل عميل/مشروع - عزل كامل بين العملاء ## التحقق من العزل ### اختبار: Mind Key لا يستطيع الوصول إلى عقول أخرى ```bash # مفتاح العقل A لا يستطيع قراءة ذكريات العقل B curl -H "Authorization: Bearer mk_aaa..." \ "https://synapse.schaefer.zone/memory/search?q=test" # يُرجع ذكريات العقل A فقط curl -H "Authorization: Bearer mk_bbb..." \ "https://synapse.schaefer.zone/memory/search?q=test" # يُرجع ذكريات العقل B فقط (نتائج مختلفة) ``` ### اختبار: JWT لا يستطيع قراءة بيانات الذاكرة مباشرة ```bash # يستطيع JWT سرد العقول curl -H "Authorization: Bearer YOUR_JWT" \ https://synapse.schaefer.zone/minds # يُرجع: قائمة العقول # JWT لا يستطيع قراءة الذكريات (يحتاج Mind Key) curl -H "Authorization: Bearer YOUR_JWT" \ https://synapse.schaefer.zone/memory/recall # يُرجع: 401 Unauthorized ``` ## أفضل الممارسات > [!TIP] > - **استخدم عقلًا واحدًا لكل مشروع/سياق** — العزل صديقك > - **لا تشارك Mind Keys أبدًا** — استخدم Sharing API بدلًا من ذلك > - **دوّر Mind Keys** إذا تعرّضت للاختراق (احذف العقل، أنشئ واحدًا جديدًا) > - **دقّق العقول المشتركة** — راجع `GET /sharing` دوريًا > - **استخدم JWT لواجهة الإنسان** — لا ت expose Mind Keys للمستخدمين النهائيين ## الخطوات التالية - [المصادقة](/docs/getting-started/authentication) - [Mind Key مقابل JWT](/docs/getting-started/mind-key-vs-jwt) - [البنية](/docs/concepts/architecture)