DisPatch: تطبيق دردشة قابل للاستضافة ذاتيًا لوكلاء الذكاء الاصطناعي المحليين
- تاريخ النشر
- 11 يوليو 2026
- تاريخ التحديث
- 9 أكتوبر 2026
- بقلم
- جاكوب لويد — كُتب بمساعدة الذكاء الاصطناعي بعد إنجاز المشروع
- مدة القراءة
- قراءة 2 دقيقة
بعبارة مبسطة: DisPatch هو تطبيق دردشة يعمل على جهاز الكمبيوتر الخاص بك، ويمكن استخدامه من أي هاتف أو لابتوب في المنزل. يمكنك من خلاله التحدث مع مساعدين ذكاء اصطناعي يعملون أيضًا على نفس الجهاز، بالإضافة إلى إرسال ملفات إليه حتى يتمكن المساعدون من التعامل معها. يُستخدم رمز PIN للحفاظ على أمان المساعدين الذكيين؛ وبذلك يقتصر استخدام الجهاز المشترك بين أفراد العائلة على مجموعة آمنة من الوظائف فقط.
DisPatch هو التطبيق الذي طورته حتى أتمكن من التوقف عن تشغيل بيئة تتكون من 30 حاوية من Rocket.Chat فقط لأتمكن من التواصل مع وكلائي الذكاء الاصطناعي. يتكون التطبيق من عملية Python واحدة وملف SQLite واحد فقط. يمكن لأي جهاز في المنزل الوصول إليه، ويستجيب الوكلاء في سلاسل محادثات تمامًا كما يفعل البشر، وأي ملف أرسله من هاتفي يصل إلى الجهاز الذي يعمل عليه الوكلاء. تم إصدار النسخة 2.0.0 في تاريخ 2026-10-09؛ الملف المحمل عبارة عن أرشيف مضغوط بحجم 3 ميجابايت، وتشير نتائج اختباراته إلى نجاح تنفيذ 1,915 اختبارًا جميعها. تشرح هذه الصفحة ما يفعله التطبيق، وكيف تصل الردود إلى هاتفك مرة واحدة فقط، وكيف يعمل قفل الرمز السري لمنع أفراد العائلة من استخدام الأجهزة اللوحية في التفاعل مع الوكلاء القادرين على تغيير أشياء حقيقية.
خلاصة المعلومات
- ما هو: دردشة ويب قابلة للاستضافة ذاتيًا مخصصة للوكلاء الذكاء الاصطناعي المحليين (إما كـ بوابة OpenClaw أو كواجهة برمجية لنماذج الذكاء الاصطناعي)، بالإضافة إلى ميزة إسقاط الملفات عبر السحب والإفلات؛ يمكن استخدامه من أي جهاز يستطيع الوصول إلى الخادم.
- التكلفة: 0 دولار. لا توجد رسوم اشتراك في خدمات SaaS ولا حاجة لإنشاء حساب.
- ما تحتاجه: نظام لينكس مع Python إصدار 3.12 أو أحدث وبرنامج
uv، أو استخدام Docker. كما تحتاج إلى OpenClaw فقط إذا كنت ترغب في استخدام وكلاء قادرين على استخدام الأدوات. - ما تحصل عليه: سلاسل محادثات منفصلة لكل وكيل، بث مباشر للردود مع زر إيقاف، خاصية إعادة توليد الردود وتعديلها، ميزة إسقاط الملفات عبر السحب والإفلات، أدوات وتطبيقات قابلة للتضمين، عشرة ثيمات مختلفة، وضع آمن يُفرض من قبل الخادم ويحميه رمز سري، بالإضافة إلى واجهة برمجية لإرسال الإشعارات لأتمتة المهام.
- ملف التحميل: إصدار 2.0.0، وهو نفس محتوى العلامة
v2.0.0في المستودع العام؛ يخضع للترخيص MIT.
ما الذي يفعله التطبيق
اللقطات الشاشة مأخوذة من نسخة معزولة تحتوي على بيانات تجريبية. الأربع لقطات الأولى من الإصدار 2.0؛ أما لقطات “الوضع الآمن” و“خادم الملفات” فهي من إصدار يوليو، وتعمل بنفس الطريقة في الإصدار 2.0.





- خيوط المحادثات الخاصة بكل بوت على جميع الأجهزة. يمكن فتح المحادثة من هاتفك والاستمرار فيها بنفس التاريخ والسجل؛ كما يمكن تثبيت هذه الخيوط أو أرشفتها أو إعادة تسميتها أو البحث فيها.
- عرض ردود البوتات بصيغة Markdown مع تمييز الكود وتوفير أزرار النسخ، بالإضافة إلى معاينة الصور والفيديوهات عبر نافذة منبثقة، وكذلك إمكانية تثبيت التطبيق كتطبيق ويب تقدمي (PWA).
- لوحة تحكم حية وزر “إيقاف”. يعرض شريط الحالة ما يقوم به البوت حالياً (تحميل النموذج، الكتابة، استخدام أداة ما). يمكن النقر على نقاط الكتابة لمشاهدة تفكير البوت واستخدامه للأدوات، أو الضغط على زر “إيقاف” لإنهاء العملية.
- أدوات التحكم المعتادة في تطبيقات الدردشة. خيار “إعادة توليد” يحافظ على الإجابات السابقة، ويمكن تحرير أي رسالة وإعادة تشغيلها، كما يمكن اقتباس الردود أو التعبير عن الرأي بإعطاء تقييم إيجابي/سلبي، أو حذف رسالة من سياق المحادثة. كل خيط محادثة يمكنه تحديد نموذج الذكاء الاصطناعي ومستوى التفكير المستخدم، ويوجد مؤشر يوضح مدى امتلاء السياق.
- مسودات الرسائل وصندوق الخروج غير المتصل. تبقى المسودات غير المرسلة مرتبطة بخيط المحادثة، أما الرسائل المرسلة دون اتصال فتنتظر حتى يعود الاتصال لإرسالها.
- الأدوات والتطبيقات. يفتح زر “الأدوات” مشاريعك الخاصة داخل التطبيق: مجلد ثابت، صفحة ويب، أو حزمة تطبيق موثوقة تحتوي على واجهة خلفية وبوت خاص بها؛ أول هذه التطبيقات هو “لوحة الوظائف” (Job Board).
- طريقتان لتفعيل الذكاء الاصطناعي. يمكن توجيه أي بوت مباشرةً إلى واجهة برمجة نماذج الذكاء الاصطناعي (LM Studio، Ollama، OpenAI، Anthropic أو أي واجهة متوافقة مع OpenAI) من لوحة الإعدادات، أو ربطه ببوابة OpenClaw للبوتات التي تستخدم الأدوات وتتفاعل مع النظام.
- واجهة برمجة لإرسال الرسائل. يتيح
POST /api/injectلأي مهمة تلقائية أو بوت آخر إرسال رسالة إلى أي خيط محادثة؛ هكذا تصلني التقارير الصباحية على هاتفي دون أن أطلبها. - نظام قفل ثنائي المستويات. يفصل رمز PIN بين البوتات ذات القدرات الكاملة والمجموعة الآمنة؛ سيتم شرح ذلك لاحقاً.
- لوحة تحكم المضيف. تعرض حالة النظام، سعة التخزين، سلامة قاعدة البيانات وحالة النسخ الاحتياطي، بالإضافة إلى قائمة بما يحتاج إلى إعدادات تصحيحية.
- ثماني لغات واجهة، من ضمنها اللغة العربية من اليمين إلى اليسار، وعشر سمات مختلفة.
- مشاهد محلي للملفات. عند النقر على مسار ملف في رسالة، يتم فتح الملف داخل التطبيق حتى من الهاتف؛ لا يتم عرض أي شيء إلا بعد تحديد مجلد، ولا يتم كشف أي بيانات سرية أو مسارات نظامية.
يمكن للبوتات أيضاً إرسال صور إلى خيوط المحادثة. يكتب البوت علامة [[pic:prompt|caption]] في رده، وتظهر فوراً مساحة مكانية للصورة، والتي تتحول إلى الصورة الفعلية بعد اكتمال المعالجة. تُستخرج هذه الصور من جهاز يحتوي على وحدة معالجة رسوميات في الشبكة؛ وإذا تعطل هذا الجهاز، فإن المساحة المخصصة للصورة تُظهر رسالة بدلاً من أن تفشل بصمت.
خادم الملفات
هذا هو الجزء الذي أستخدمه أكثر من غيره. افتح تطبيق DisPatch على أي جهاز، ثم اسحب ملفًا إليه؛ سيظهر الملف على الخادم، مجمعًا حسب اليوم، مع صور مصغرة للصور والفيديوهات.

الميزة الكبرى هي أن الملفات تُخزن على نفس الجهاز الذي يعمل عليه البرنامج. فالصورة التي أرفعها من هاتفي يمكن لبرنامج DisPatch قراءتها من القرص بعد ثوانٍ، وبالتالي يمكنني وصفها أو تصنيفها أو نشرها على موقع ويب دون الحاجة إلى خدمة تخزين سحابية أو كابل.
الكود البرمجي يحمي من حالات الفشل المحتملة:
- يتم التحقق من حجم الملف المراد رفعه قبل أن يقوم FastAPI بتخزينه في الذاكرة، لمنع الهاتف من استنزاف ذاكرة الجهاز.
- يتم تحديد سعة التخزين الكلية بـ 20 جيجابايت بشكل افتراضي (
DISPATCH_FILES_TOTAL_MAX)؛ وإذا كانت القيمة صفرًا، يتم إلغاء هذا الحد. - كل ملف يُكتب أولاً في ملف مؤقت، ثم يتم مزامنته مع الخادم وتغيير اسمه لاحقًا، مما يضمن عدم ترك ملفات غير مكتملة في حال انقطاع الاتصال.
- الأجهزة المقفلة يمكنها فقط إرسال الملفات؛ لا يمكنها تصفح أو تنزيل أي ملفات موجودة على خادم الملفات.
لماذا طورته بدلاً من استخدام واجهة مستخدم جاهزة؟
كانت أداة Rocket.Chat تعمل بشكل جيد، لكن وجود قاعدة بيانات والعديد من الحاويات يمثل كمية كبيرة من البنية التحتية مقارنة بالغرض المطلوب وهو “إرسال نص، استقبال نص كرد، ومزامنته في كل مكان”.
تعتبر أداتا Open WebUI وLibreChat الحلول الشائعة لـ “تشغيل دردشة ذكاء اصطناعي بشكل ذاتي”, وهما جيدتان في التواصل مع النماذج الذكية. لكن احتياجاتي كانت مختلفة؛ فأردت وجود وكلاء ذكاء اصطناعي كمشاركين في المحادثات المشتركة، بالإضافة إلى آلية حماية يفرضها الخادم على الأجهزة التي قد يستخدمها الأطفال، ونقطة نهاية HTTP يمكن للبرامج النصية إرسال البيانات إليها، بالإضافة إلى ملفات تصل إلى مكان يمكن للوكلاء قراءتها. هذا هو ما يقدمه DisPatch بالضبط. أما إذا كنت ترغب فقط في واجهة مستخدم جميلة للتفاعل مع نموذج ذكاء اصطناعي، فابدأ باستخدام أحد الحلول السابقة.
كما أن DisPatch لا يتطلب أي خطوة بناء. الواجهة الأمامية مبنية على وحدات JavaScript عادية بالإضافة إلى CSS/HTML بسيط، دون الحاجة إلى أي أداة تجميع أو تنفيذ أمر npm run build. كان شرطي الأساسي عند التطوير هو “سهولة تعديل الكود من قبل وكلاء الذكاء الاصطناعي لاحقًا”: تعديل ملف، ثم إعادة تحميل الصفحة، وهذا كل شيء. كنت سأختار نفس الحل مرة أخرى.
ما الذي يحتويه الملف المحمل؟
الملف المضغوط هو dispatch-2026-10.zip، وهو إصدار DisPatch 2.0.0؛ وهو نسخة طبق الأصل من العلامة v2.0.0 في المستودع العام. لقد قمت بقياس محتوياته لهذه المراجعة:
| البند | ما في الملف المضغوط |
|---|---|
| حجم الملف | 2,992,647 بايت (2.9 ميغابايت)؛ يتضمن 319 ملفًا، ويصبح حجمه بعد فك الضغط 7.9 ميغابايت |
| SHA-256 | e9824d3c13bb3acd2d2eebcf2b162b14ae26eb86f56ca0e4ac8aa20f686a2398 |
| الخلفية البرمجية | Python 3.12+، FastAPI + uvicorn، ملف واحد من نوع SQLite، ويتم إدارته بواسطة uv. يحتوي مجلد backend/app/ على 36,501 سطرًا من الكود (main.py وحده يحتوي على 12,331 سطرًا)، بالإضافة إلى 5,497 سطرًا في تطبيق لوحة الوظائف المدمج. |
| الاختبارات | يوجد 30,726 سطرًا من اختبارات Python؛ ويُفيد pytest بأن 1,915 اختبارًا قد نجحت، كما تم تنفيذ 473 اختبارًا للواجهة الأمامية عبر node --test. |
| الواجهة الأمامية | لا حاجة لعمليات بناء؛ يحتوي الكود على حوالي 21,000 سطر من JavaScript، بالإضافة إلى نحو 9,300 سطر من CSS وHTML. |
| المكتبات المدمجة | marked، highlight.js، DOMPurify. لا توجد استدعاءات لشبكات CDN. |
| البيانات | خارج الكود، وبشكل افتراضي في المسار ~/.local/share/local-chat/ (الاسم القديم للمشروع): قاعدة البيانات، ملفات config.yaml وsecurity.yaml، بالإضافة إلى الوسائط والملفات ونسخ احتياطية من قاعدة البيانات. |
| الرخصة | MIT |
ما الذي تغير منذ إصدار 1.0.0 في أغسطس:
- الردود أصبحت أسرع ولا يمكن أن تضيع. الآن يتم إرسال الرسائل إلى بوابة الوكيل عبر اتصال WebSocket المفتوح مسبقًا، بدلاً من إنشاء عملية جديدة من نوع
openclawلكل رسالة. هذا أدى إلى تقليل زمن الاستجابة بمقدار ثانية تقريبًا (من 2.26 ثانية إلى 1.12 ثانية). يتم استقبال النصوص تدريجيًا أثناء كتابتها من قبل النموذج. كما يتم تتبع كل طلب يستقبله البوابة حتى اكتماله، مما يضمن وصول الرد حتى في حالة انقطاع الاتصال أو إعادة تشغيل الخادم. - الرخصة. كان إصدار 1.0.0 يخضع لرخصة AGPL-3.0؛ لكن المشروع تم تغيير رخصته إلى MIT في تاريخ 2026-08-30، وبالتالي فإن الإصدار 2.0.0 يتبع نفس الرخصة. ملفات التحميل القديمة من شهري يوليو وأغسطس لا تزال متاحة، وكل منها يحمل ملف
LICENSEخاص به. - تم إلغاء محاكي الكود البرمجي. كان الإصدار 1.0.0 يتضمن محاكيًا للكود يمكن استخدامه داخل المتصفح (وهو عبارة عن تدفق PTY من الخادم إلى مكتبة xterm.js). لقد استخدمته مع وكيل برمجي تم إيقافه لاحقًا، لذا تم إزالته في الإصدار 2.0 مع المكتبات المرتبطة به. أما لوحة DeepSeek Harness، فإنها تظهر عند تثبيت أداة
dsh، وهي تقوم بنفس المهمة؛ حيث يمكن من خلالها تشغيل الجلسات ومراقبتها وإيقافها. - جديد: عناصر التحكم في المحادثات، مسودات الرسائل، أدوات وتطبيقات إضافية، جداول قوائم التحقق، مشغل محلي للملفات، علامات للصور، بالإضافة إلى عشرة أنماط تصميم بدلاً من خيار الضوء/الظلام فقط، وصفوف رسائل أكثر هدوءًا. القائمة الكاملة موجودة في ملف
CHANGELOG.mdبالمستودع.
إعداد النظام
هذا ملخص مختصر من ملف README.md ومجلد docs/ الموجودين داخل ملف الضغط. إنه مشروع عادي من نوع uv:
unzip dispatch-2026-10.zip
cd DisPatch-2.0.0/backend
uv sync --frozen
uv run pytest -q # 1,915 passed on my machine
uv run uvicorn app.main:app --host 0.0.0.0 --port 8765
أو يمكنك تخطي خطوة استخدام بايثون: اكتب الأمر التالي cp .env.example .env && docker compose up -d من جذر المجلد بعد فك الضغط. يحتوي مجلد deploy/systemd/ على ملفات الوحدة الخاصة بالإصدار الذي يعمل باستمرار، بينما يتناول ملف docs/deploy-bare-metal.md الخطوة التي ينساها الجميع دائمًا: loginctl enable-linger؛ وإلا فإن خدمة المستخدم ستتوقف عند إغلاق جلسة SSH.
- حدد رمز PIN أولاً (انقر على أيقونة الترس ثم اختر قسم الأمان). كلا الأمرين المذكورين أعلاه يستمعان على العنوان
0.0.0.0، لذا طالما لم يتم تعيين رمز PIN، فإن أي شخص في شبكتك سيحصل على صلاحيات كاملة. استخدم الأمر--host 127.0.0.1(أو المتغيرBIND_ADDR=127.0.0.1في حالة استخدام Docker) أثناء التجربة، ولا تقم بإعادة توجيه المنفذ إلى الإنترنت. - قم بتعديل ملف
config.yamlالموجود في مجلد البيانات بحيث تتطابق معرفات الوكلاءidمع معرفات وكلاء OpenClaw الخاصين بك. يتم إعادة قراءة هذا الملف تلقائيًا عند أي تغيير فيه. - تأتي الإعدادات من متغيرات البيئة التي تبدأ ببادئة
DISPATCH_، وجميعها مذكورة في ملف.env.example:HOST،PORT،DATA_DIR،AGENT_TIMEOUT(القيمة الافتراضية 900 ثانية)،MAX_CONCURRENCY(القيمة الافتراضية 3)،GATEWAY_WS. - يحدد المتغير
DISPATCH_MAX_CONCURRENCYالعدد الأقصى للعمليات التي يمكن تشغيلها في نفس الوقت؛ القيمة الافتراضية 3 تهدف إلى حماية الأجهزة التي تستخدم نماذج ذكاء اصطناعي محلية. أي رسالة إضافية ستبقى في الانتظار ولا يتم التخلص منها.
لا يتضمن برنامج DisPatch حزمة OpenClaw معه؛ فهو يتوقع وجود بوابة OpenClaw على نفس الجهاز. ومع ذلك، حتى بدون وجود هذه البوابة، يبدأ البرنامج بشكل طبيعي ويُسجل تحذيرًا في السجلات. تظل الخيوط المتعددة، وواجهة برمجة التطبيقات للحقن، وخادم الملفات، ونظام قفل رمز PIN، والأدوات، بالإضافة إلى واجهات النماذج مباشرةً تعمل بشكل طبيعي. هكذا أقوم باختبار ملف الضغط: فك الضغط، ثم تشغيل الأمر uv sync، استخدام منفذ شاغر، وبدون وجود بوابة OpenClaw.
كيف يصل الرد إليك
تم توجيه معظم الجهود الهندسية نحو التعامل مع حالات الفشل: انقطاع الاتصال أثناء إرسال الرد، أو إعادة تشغيل الخادم أثناء تنفيذ عملية ما، أو تأخر رد أحد الوكلاء لمدة عشر دقائق. يتم اختيار وسيلة النقل بناءً على قيمة DISPATCH_GATEWAY_WS. إذا لم تُضبط هذه القيمة، فإن كل رسالة تؤدي إلى تشغيل عملية openclaw agent، والتي تقوم بإرجاع الرد عند انتهائها. أما أداة shadow فهي تتصل وتسجل ما كان سيتم إرساله دون أن ترسله فعلياً. القيمة 1 تعني أن الرسائل تُرسل عبر اتصال البوابة، ويتم استقبال الردود عبره أيضاً؛ أنا أستخدم القيمة 1. يتم إيقاف تشغيل هذه الميزة بشكل افتراضي في ملفات التثبيت، لذا لا يتغير شيء في طريقة وصول الردود حتى تقوم بتفعيلها.
عند تفعيل الاتصال، كل عملية يقبلها البوابة تُسجل في جدول خاص بالعمليات الجارية، ثم يتم تسوية حالتها باستخدام دالة “انتظار انتهاء هذه العملية” التي يوفرها البوابة نفسه. حتى إذا انقطع التدفق المباشر، فإن الرد يصل بعد اكتمال تنفيذ العملية؛ كما يتم استعادة العمليات التي كانت قيد التنفيذ عند توقف الخادم عن العمل عند إعادة تشغيله. ولا يتم إعادة محاولة سوى العمليات التي لم يقبلها البوابة أبداً، وبالتالي لا يتم إرسال أي رد مرتين.
هناك ملاحظة بخصوص الحل الاحتياطي. تقوم عملية مسح السجلات بقراءة ملفات الجلسات الخاصة بـ OpenClaw، لكن الإصدارات الأحدث من OpenClaw تخزن هذه البيانات في قاعدة بيانات بدلاً من الملفات النصية. في هذه الحالة، يسجل DisPatch عند بدء التشغيل أن الحل الاحتياطي القائم على الملفات لا يمكن تشغيله، وبالتالي يصبح الاتصال المباشر هو الطريق الوحيد لإرسال الردود. وهذا سبب إضافي لتفعيل الاتصال المباشر.
أياً كان المسار الذي يُستخدم لإرسال الرد، فإن كل رد مرشح يمر عبر قناة واحدة تتحقق مما إذا كان قد تم إرساله من قبل؛ وبالتالي فإن أي رد يظهر مرتين لا يُعرض سوى مرة واحدة. حتى في حالة حدوث خطأ في أداة CLI، تستمر عملية مسح السجلات قبل التوقف، لأن النموذج غالباً ما يكون قد كتب إجابته في السجلات قبل انهيار العملية.
نظام القفل ذو المستويين: الوضع العادي مقابل الوضع الآمن
الجانب غير المقفل ليس للعب فحسب؛ فالأدوات المتاحة هناك يمكنها تعديل الكود، وإرسال التغييرات إلى موقعي الإلكتروني، وتشغيل أدوات إدارة النظام. أما الجانب المقفل فيقتصر على الدردشة فقط؛ وهو مفيد للإجابة على الأسئلة والحصول على المساعدة، لكنه لا يسمح بالوصول إلى أي من الوظائف الأخرى. وبما أن هاتف العائلة ليس دائمًا في أيدي الكبار، فإن الخادم يفرض القفل تلقائيًا. وهذا ما يحدث عند استقبال طلب:
خاصية تذكر الأجهزة غير مفعلة إلا بعد تفعيلها في إعدادات الأمان، حيث يتم تحديد فترة الثقة بـ 30 يومًا. الضغط على زر القفل على جهاز موثوق يؤدي إلى نسيانه، وتغيير الرمز السري يؤدي إلى نسيان جميع الأجهزة الموثوقة. يحتفظ الخادم بحد أقصى 10 أجهزة موثوقة؛ وإذا كان ملف الأجهزة الموثوقة تالفًا، فلا يعود أي جهاز موثوقًا، لكن الرمز السري يظل صالحًا.
في حال قفل الوصول عن طريق الخطأ، هناك طريقتان للعودة: ملف كود الاستعادة، أو تعديل ملف security.yaml مباشرةً. وإذا كان ملف security.yaml تالفًا، فإن التطبيق يظل مقفلًا بدلاً من السماح لأي شخص على الشبكة المحلية بالوصول إليه؛ وكان ذلك قرارًا متعمدًا منا.
المفاهيم الخاطئة الشائعة
- حقل واجهة برمجة التطبيقات للحقن هو
content. فالطلبPOST /api/injectيتطلب إرسال{"bot_id": "...", "content": "..."}. كان إرسالtextأكثر الأخطاء شيوعًا في عملية التكامل، بما في ذلك خطئي أنا أيضًا.
MAX_ARG_STRLEN)، ورسالة طويلة ستؤدي إلى فشل تنفيذ الأمر بسبب خطأ E2BIG. يقوم الكود بكتابة الرسالة في ملف مؤقت ثم يمرر الوسيط --message-file. لا “بسّط” ذلك بالعودة إلى استخدام وسيط عادي.Alpha، My_Bot). عند استخدام بحث حساس لحالة الأحرف، يتوقف لوحة التحكم والإرسال المتأخر للردود بهدوء، بينما تستمر باقي الوظائف في العمل بشكل طبيعي. الحل هو إجراء مطابقة دقيقة أولاً، ثم استخدام النسخة ذات الأحرف الصغيرة كحل بديل.Origin، ويرفض أي طلب اتصال إذا لم تتطابق قيمة المضيف مع قيمة Host؛ مما يمنع أي محاولات اختراق عبر اتصالات WebSocket من مواقع خارجية. أما العملاء غير المتصفحات فلا يرسلون قيمة “Origin”، وبالتالي يتم قبول طلباتهم.nosniff.controllerchange.تطبيق الفكرة عمليًا
حتى لو لم تقم أبدًا بتشغيل ملف zip الخاص بي، فإن البنية التحتية تتكون من أربعة أجزاء قابلة للاستبدال:
- خادم الدردشة الذي يدير سجل المحادثات: خادم ويب صغير (في هذا المثال FastAPI، بالإضافة إلى ملف SQLite في وضع WAL)، وبروتوكول WebSocket للتحديثات الفورية، بالإضافة إلى نقطة نهاية HTTP لإرسال الرسائل. هذا يغني عن الحاجة إلى قاعدة بيانات أو مجموعة من الحاويات.
- بوابة الوكلاء التي يتواصل معها الخادم: في هذا المثال OpenClaw، لكن أي نظام يستقبل معرف الجلسة والرسالة ثم يعيد نصًا كردّ سيكون مناسبًا. وبما أنها تعمل كعملية منفصلة، فإنه يمكن إيقافها أو تحديثها أو استبدالها دون التأثير على تطبيق الدردشة.
- خوادم النماذج التي تقف خلف البوابة (LM Studio، vLLM، Ollama). إنها مسؤولية البوابة وليست تطبيق الدردشة.
- خدمات الوسائط الاختيارية، مثل مولد الصور الذي يعمل على جهاز آخر، والذي يمكن للوكلاء استخدامه كأداة؛ الخادم يقوم فقط بتخزين النتائج التي تُرسل إليه.
تنطبق هذه المبادئ بغض النظر عن التقنية المستخدمة:
- يجب فرض وضع القفل على الخادم، وليس عبر CSS.
- اعتبر أن “وصول الرد إلى المستخدم مرة واحدة فقط” مشكلة توصيل يجب التعامل معها باستخدام آليات إزالة التكرار.
- حافظ على واجهة المستخدم بدون الحاجة لعمليات بناء، خاصة إذا كان من المفترض أن تديرها وكلاء الذكاء الاصطناعي.
مرتبط بذلك: مجموعة الوكلاء الذكية المحلية على OpenClaw · نظرة أولى على DeepSeek Harness · إدارة مواقعي باستخدام صندوق الوكلاء الذكيين المحليين · إعداد مساعدك القائم على لغات الذكاء الاصطناعي
التنزيلات
مجاني للاستخدام الشخصي. إذا وفّر لك عصرًا كاملًا من الوقت، فزر القهوة قريب منك.