WebChat (واجهة Gateway WebSocket)
الحالة: تتحدث واجهة الدردشة SwiftUI على macOS/iOS مباشرةً مع Gateway WebSocket.ما هو
- واجهة دردشة أصلية للـ gateway (من دون متصفح مضمن ومن دون خادم ثابت محلي).
- تستخدم الجلسات نفسها وقواعد التوجيه نفسها مثل القنوات الأخرى.
- توجيه حتمي: تعود الردود دائمًا إلى WebChat.
بداية سريعة
- ابدأ تشغيل gateway.
- افتح واجهة WebChat (تطبيق macOS/iOS) أو تبويب الدردشة في Control UI.
- تأكد من إعداد مسار مصادقة صالح لـ gateway (سرّ مشترك افتراضيًا، حتى على loopback).
كيف يعمل (السلوك)
- تتصل الواجهة بـ Gateway WebSocket وتستخدم
chat.historyوchat.sendوchat.inject. - يكون
chat.historyمحدودًا من أجل الاستقرار: قد يقتطع Gateway حقول النص الطويلة، ويحذف البيانات الوصفية الثقيلة، ويستبدل الإدخالات كبيرة الحجم بـ[chat.history omitted: message too large]. - كما أن
chat.historyمُطبَّع للعرض: إذ تتم إزالة وسوم توجيه التسليم المضمنة مثل[[reply_to_*]]و[[audio_as_voice]]، وحمولات XML النصية البسيطة الخاصة باستدعاءات الأدوات (بما في ذلك<tool_call>...</tool_call>، و<function_call>...</function_call>، و<tool_calls>...</tool_calls>، و<function_calls>...</function_calls>، وكتل استدعاءات الأدوات المبتورة)، وتسريبات رموز التحكم الخاصة بالنموذج بصيغة ASCII/العرض الكامل من النص المرئي، كما يتم حذف إدخالات المساعد التي يكون نصها المرئي بالكامل هو الرمز الصامت المطابق تمامًاNO_REPLY/no_reply. - يضيف
chat.injectملاحظة مساعد مباشرة إلى النص التفريغي ويبثها إلى الواجهة (من دون تشغيل وكيل). - يمكن أن تُبقي التشغيلات المُجهَضة مخرجات مساعد جزئية مرئية في الواجهة.
- يحفظ Gateway نص المساعد الجزئي المُجهَض في محفوظات النص التفريغي عند وجود مخرجات مخزنة مؤقتًا، ويضع علامات بيانات وصفية للإجهاض على تلك الإدخالات.
- يتم دائمًا جلب المحفوظات من gateway (من دون مراقبة ملفات محلية).
- إذا كان gateway غير قابل للوصول، يصبح WebChat للقراءة فقط.
لوحة أدوات الوكلاء في Control UI
- تحتوي لوحة الأدوات في
/agentsضمن Control UI على عرضين منفصلين:- متاح الآن يستخدم
tools.effective(sessionKey=...)ويعرض ما يمكن للجلسة الحالية استخدامه فعليًا في وقت التشغيل، بما في ذلك الأدوات الأساسية وأدوات plugin والأدوات المملوكة للقناة. - إعدادات الأداة تستخدم
tools.catalogوتظل مركزة على ملفات التعريف والتجاوزات ودلالات الفهرس.
- متاح الآن يستخدم
- يعتمد التوفر في وقت التشغيل على نطاق الجلسة. ويمكن أن يؤدي تبديل الجلسات على الوكيل نفسه إلى تغيير قائمة متاح الآن.
- لا يعني محرر الإعدادات توفرًا في وقت التشغيل؛ إذ يظل الوصول الفعلي خاضعًا
لأولوية السياسة (
allow/deny، والتجاوزات لكل وكيل ولكل مزود/قناة).
الاستخدام عن بُعد
- يقوم الوضع البعيد بتمرير Gateway WebSocket عبر SSH/Tailscale.
- لا تحتاج إلى تشغيل خادم WebChat منفصل.
مرجع الإعدادات (WebChat)
الإعدادات الكاملة: الإعدادات خيارات WebChat:gateway.webchat.chatHistoryMaxChars: الحد الأقصى لعدد الأحرف في حقول النص ضمن استجاباتchat.history. وعندما يتجاوز إدخال في النص التفريغي هذا الحد، يقتطع Gateway حقول النص الطويلة وقد يستبدل الرسائل كبيرة الحجم بعنصر نائب. ويمكن للعميل أيضًا إرسالmaxCharsلكل طلب لتجاوز هذا الإعداد الافتراضي في استدعاء واحد لـchat.history.
gateway.portوgateway.bind: مضيف/منفذ WebSocket.gateway.auth.modeوgateway.auth.tokenوgateway.auth.password: مصادقة WebSocket بالسرّ المشترك.gateway.auth.allowTailscale: يمكن لتبويب الدردشة في Control UI ضمن المتصفح استخدام ترويسات هوية Tailscale Serve عند تفعيلها.gateway.auth.mode: "trusted-proxy": مصادقة الوكيل العكسي لعملاء المتصفح خلف مصدر وكيل غير loopback ومدرك للهوية (راجع مصادقة الوكيل الموثوق).gateway.remote.urlوgateway.remote.tokenوgateway.remote.password: هدف gateway البعيد.session.*: تخزين الجلسة وإعدادات المفتاح الرئيسي الافتراضية.