Skip to main content
OrbitPilot

أداة دردشة OrbitPilot — تدفق، قابلة للحركة، موبايل وصوت

ما هي

أداة دردشة OrbitPilot هي الآن أداة دردشة عالمية عائمة للمستخدمين المسجلين: زر في الزاوية يفتح لوحة يمكنك استخدامها من أي صفحة. اللوحة هي غير مزعجة (تابع التصفح أثناء فتحها)، قابلة للسحب, قابلة للطوي، وهي تتذكر مكانها ومحادثتك المفتوحة بينما تتحرك عبر الموقع.

قدرات جديدة

  • إجابات متدفقة — الرد يظهر كلمة بكلمة بدلاً من بعد الانتظار.
  • توقف — أوقف الذكاء الاصطناعي منتصف الرد. التوقف يحفظ ما تم كتابته حتى الآن و لا يستهلك طلباً من ميزانيتك الشهرية.
  • نسخ / تحميل الدردشة بالكامل — أزرار في أعلى وأسفل اللوحة (التحميل هو نص بصيغة .txt).
  • نسخ رسالة واحدة — مرر فوق أي فقاعة للحصول على أيقونة النسخ.
  • تكبير النافذة، تصفح سجل الدردشة، وابدأ محادثة جديدة.
  • إدخال صوتي — اضغط على الميكروفون وتحدث؛ سيتم كتابة كلماتك لك.

يفقد الضيوف (غير المسجلين) نافذة الدردشة الأصلية من الصفحة الرئيسية.

على هاتفك (الموبايل)

  • اللوحة تثبت في أسفل الشاشة ولا تتجاوز الحواف, في أي اتجاه — تدوير الهاتف يعيد ضبطه تلقائيًا.
  • تراعي الفتحة ومؤشر الصفحة الرئيسية (المناطق الآمنة)، وتستخدم الارتفاع الحي للشاشة لذا شريط عنوان المتصفح لا يمكنه قطع زر الإرسال.
  • بعد التحدث والإرسال, يتم تفريغ الصندوق لسؤالك التالي — اضغط على الميكروفون مرة أخرى للتحدث في الدور التالي.

للمطورين

يتطلب تدفق البيانات عرض غير متزامن تحت ASGI (مولد متزامن يقوم بالتخزين المؤقت قبل البايت الأول). orbitpilot.views.orbitpilot_ask_stream هو async def يعيد StreamingHttpResponse عبر مولد غير متزامن يرسل أحداث خادم-إرسال (metatoken… → done). تعمل جميع عمليات ORM/البوابات في مساعدتين SYNC (_prepare_ask_stream / _finalize_ask_stream) عبر sync_to_async(thread_sensitive=True). توقف = العميل يقوم بإلغاء الطلب → يتم إلغاء توليد غير المتزامن → يتم حفظ الإجابة الجزئية ولن تتم كتابة صف الحصة. يعيش الواجهة الأمامية في templates/_orbitpilot_widget.html + static/css/orbitpilot-widget.css + static/js/orbitpilot-widget.js، مضمنة في base.html للمستخدمين المصرح لهم فقط.

الاستجابة على الجوال (Workstream E): الأداة بأكملها هي box-sizing: border-box بحيث يتم احتساب الحد 1 بكسل داخل العرض (كانت زيادة iPhone القديمة width:100vw + border). قاعدة @media (max-width:575px) تلغي 100vw لتصبح left/right: env(safe-area-inset-*) + width:auto، وتحدد الأحجام بـ dvh (مع vh كبديل)، وتضيف padding للملحن بواسطة env(safe-area-inset-bottom). في JS، لا يتم تطبيق موقع السحب المحفوظ في سطح مكتب على عرض موبايل، ويعيد resize/orientationchange ضبط الموقع عبر applyPos(). إلغاء الصوت: يحتفظ نموذج التعرف على الصوت بمخزن saved مكتمل منفصل عن الإدخال؛ send() الآن يستدعي resetVoice() المشتركة (إيقاف التعرف، مسح مؤقت الصمت، خلو saved) في المكان نفسه حيث يقوم بإزالة input.value، لذا يبدأ الدور التالي فارغًا.

حجم خطوط الدردشة + إصلاح إرسال الهاتف (2026-07-27)

  • A− / A+ في رأس الأداة يصغر/يكبر نص الدردشة. يظل اختيارك مسجلاً (محفوظ في المتصفح عبر localStorage المفتاح op_widget_font) عبر الصفحات والجلسات. الحجم مقيد بين 12−22 بكسل.
  • زر الإرسال على الهواتف: الآن يحتفظ صف الملحن بأزرار الإرسال (والميكروفون) مرئية بجانب مربع النص على الشاشات الضيقة — سابقاً كان مربع النص يمكن أن يدفع زر الإرسال خارج الحافة اليمنى.

للمطورين: تركيب templates/_orbitpilot_widget.html، سلوك static/js/orbitpilot-widget.js (applyFont()/bumpFont(), تم استعادته عند البدء)، تنسيق static/css/orbitpilot-widget.css. الأزرار ترفع --op-chat-font متغير CSS يتم قراءته من نص الرسالة + الإدخال؛ يستخدم الملحن min-width:0 على textarea وflex:0 0 auto على الأزرار بحيث لا يتم دفع زر الإرسال بعيداً عن الشاشة.

قائمة همبرغر + وضع الصفحة الكاملة (2026-07-27)

يحتوي رأس أداة الدردشة الآن على f354 قائمة وزر f5fa الصفحة الكاملة:

  • تعليماتك — ملاحظات ثابتة دائمًا يأخذها الذكاء الاصطناعي بعين الاعتبار (مثل تعليمات ChatGPT المخصصة). محفوظة في OrbitPilotSettings.custom_user_prompt عبر orbitpilot_custom_instructions; محجوزة حسب ميزة custom_prompt (رسالة مقفلة + رابط ترقية يظهر إذا كانت الخطة لا تسمح بذلك؛ كما يفرضها الخادم مع 403).
  • التنزيلات — الآن تحتوي على خيارين بوضوح: هذه المحادثة فقط (orbitpilot_conversation_download) مقابل كل سجلات المحادثة الخاصة بي (جدید orbitpilot_history_download). زر شريط الأدوات تمت إعادة تسميته إلى  هذه الدردشة.
  • الذاكرة → إعادة بناء ذاكرتي الآن — إعادة بناء كاملة (orbitpilot_rebuild_memory) وراء تكلفة تحذيرية تأكيد (تقوم بإعادة قراءة كل شيء وإعادة تضمينه، وهو ما يستخدم اعتمادات الذكاء الاصطناعي)؛ لن تتراكم إعادة البناء بينما يجري واحد بالفعل.

وضع الصفحة الكاملة (f5fa) يفتح /orbitpilot/chat/ في علامة تبويب جديدة، دردشة بطراز ChatGPT/Gemini شاشة كاملة تعيد استخدام نفس الأداة (عبر فئة الجسم op-fullpage) — لذا فإن التبديل بين الأداة الصغيرة والصفحة الكاملة يحافظ على نفس المحادثة (op_widget_conv localStorage + حدث الاستماع storage). أيضًا: A− / A+ يغير حجم خط الدردشة (المسجل)، وعلى الهاتف يبقى زر الإرسال مرئيًا بجانب الميكروفون.

للمطورين: تركيب templates/_orbitpilot_widget.html، سلوك static/js/orbitpilot-widget.js، تنسيق static/css/orbitpilot-widget.css؛ عرض الصفحة الكاملة orbitpilot.views.orbitpilot_chatorbitpilot/templates/orbitpilot/chat_full.html.

تحديث سريع مقابل إعادة بناء كاملة (ذاكرة ناعمة/صلبة، 2026-07-27)

قائمة f9f0 الذاكرة في الأداة تعرض الآن خيارين لإعادة البناء:

  • f4a1 تحديث سريع (ناعم) — تعيد قراءة وإعادة تضمين فقط العناصر التي قمت بتغييرها منذ آخر بناء؛ تبقى العناصر التي لم تتغير على تضميناتها الحالية، وتُحذف العناصر المزالة. أرخص بكثير، لأن تكلفة تضمين OpenAI تتناسب مع الفرق، وليس مع المجموعة الكاملة.
  • f50c إعادة بناء كاملة (صلبة) — تعيد قراءة وإعادة تضمين كل شيء من جديد (تستخدم المزيد من اعتمادات الذكاء الاصطناعي). استخدمها فقط إذا بدت الأمور خاطئة.

للمطورين: run_memory_build(user, settings, build, incremental=True) يفرق القطع الجديدة ضد المخزنة بواسطة مفتاح (source_key, source_id, chunk_index, content_hash) قبل استدعاء embed_chunks، لذا يتم تضمين فقط القطع الجديدة/المتغيرة؛ يتم حذف الصفوف المتقادمة في نفس الكتلة الذرية؛ تُترك الصفوف التي لم تتغير دون مساس. يتم نقل الوضع عبر OrbitPilotMemoryBuild.incremental (الهجرة orbitpilot/0025) ويتم تعيينه بواسطة orbitpilot_rebuild_memory من mode=soft|hard. إذا تم حذف incremental, run_memory_build يقرأه من سجلات البناء. يحتفظ المسار الكامل/المسار الصلب بسلوك الحذف الشامل + إعادة التضمين الذري السابق بالضبط.

تصحيحات مدفوعة بالدردشة (2026-07-28)

تحليل محادثات OrbitPilot الحقيقية (تم حذف المعلومات الشخصية) سلط الضوء على أربع تصحيحات:

  • روابط الذكاء الاصطناعي المكسورة (your-app-link): النموذج اخترع مجالاً عند تسليمه مسارات نسبية من كتيب قديم. الآن (أ) تحذير فحص صحة النظام إذا كان SITE_URL هو localhost في الإنتاج، و(ب) orbitpilot.services.heal_links() يعيد كتابة أي رابط placeholder/localhost إلى المضيف الحقيقي للموقع في كل إجابة (تدفق/محجوز/ضيف) — لذا تعمل الروابط حتى قبل إعادة البناء. الحل الدائم (ضبط SITE_URL + إعادة البناء) موجود في قائمة التحقق لإعداد الإدارة.
  • قائمة وميك الآن تعمل: pipeline/retrieve.py add_list_intent_sources() تضخ جميع قطع المصدر عندما يكون الاستعلام طلب تعداد ("قائمة/عرض/جميع الوميك/المهام/الأحداث"), وعينة لقطة العمل لعناوين الوميكر — لذا تسرد الذكاء الاصطناعي العناصر الفعلية، وليس فقط العدد.
  • الإجراءات القابلة للنقر: الإجراءات الآن {label, url}. رابط التنقل الحقيقي يظهر كزر قابل للنقر (يفتح في علامة تبويب جديدة)؛ وإلا فهو شريحة تعبئة مسبقة. تم إصلاحها عبر الأداة، وmodal الصفحة الرئيسية للضيف (الذي حذف سابقًا الإجراءات), والنتيجة في الصفحة الكاملة. الروابط في إجابات السطور تفتح أيضًا في علامة تبويب جديدة الآن.
  • تحسين التحفيز: يتوقف تحفيز الإجابة الأساسية عن تكرار هدف المستخدم بشكل زائد و يتعامل بلطف مع "ما الذي تغير منذ البارحة" (يعمل من لقطة الحالية، وليس من تاريخ يومي).

للمطورين: orbitpilot/services.py (heal_links, request_base, split_answer_actions الآن تعيد dict، طبقة next_actions للضيف)، pipeline/retrieve.py (add_list_intent_sources), adminapp/diagnostics.py (_check_site_url), JS الأداة + home.html (عرض الإجراءات + DOMPurify target=_blank hook), aihub/prompt_registry.py (الجوهر + next_actions الافتراضية؛ تم تحديثها عبر aihub/0007).

This guide was translated automatically. Read the English original.

🪐 OrbitPilot