الحضور
«الحضور» في OpenClaw هو عرض خفيف الوزن وبأفضل جهد لـ:- Gateway نفسه، و
- العملاء المتصلين بـ Gateway (تطبيق mac، وWebChat، وCLI، إلخ).
حقول الحضور (ما الذي يظهر)
إدخالات الحضور هي كائنات منظَّمة تحتوي على حقول مثل:instanceId(اختياري لكنه موصى به بشدة): هوية عميل مستقرة (عادةًconnect.client.instanceId)host: اسم مضيف مفهوم للبشرip: عنوان IP بأفضل جهدversion: سلسلة إصدار العميلdeviceFamily/modelIdentifier: تلميحات عن العتادmode:ui،webchat،cli،backend،probe،test،node، …lastInputSeconds: «عدد الثواني منذ آخر إدخال للمستخدم» (إن كان معروفًا)reason:self،connect،node-connected،periodic، …ts: طابع زمني لآخر تحديث (مللي ثانية منذ epoch)
المنتجون (من أين يأتي الحضور)
تُنتَج إدخالات الحضور من مصادر متعددة ويتم دمجها.1. إدخال Gateway الذاتي
يقوم Gateway دائمًا بتهيئة إدخال «ذاتي» عند بدء التشغيل حتى تعرض واجهات المستخدم مضيف الـ Gateway حتى قبل اتصال أي عملاء.2. اتصال WebSocket
يبدأ كل عميل WS بطلبconnect. وعند نجاح المصافحة،
يقوم Gateway بإدراج/تحديث (upsert) إدخال حضور لذلك الاتصال.
لماذا لا تظهر أوامر CLI لمرة واحدة
غالبًا ما يتصل CLI لفترة قصيرة لتنفيذ أوامر لمرة واحدة. لتجنب إغراق قائمة Instances، فإنclient.mode === "cli" لا
يتم تحويله إلى إدخال حضور.
3. منارات system-event
يمكن للعملاء إرسال منارات دورية أغنى عبر الأسلوب system-event. يستخدم تطبيق mac هذا للإبلاغ عن اسم المضيف وعنوان IP وlastInputSeconds.
4. اتصالات العُقد (الدور: node)
عندما تتصل عُقدة عبر WebSocket الخاص بالـ Gateway باستخدامrole: node،
يقوم Gateway بإدراج/تحديث إدخال حضور لتلك العُقدة (نفس التدفق مثل
عملاء WS الآخرين).
قواعد الدمج وإزالة التكرار (لماذا يهم instanceId)
تُخزَّن إدخالات الحضور في خريطة واحدة داخل الذاكرة:
- يتم تحديد الإدخالات بواسطة مفتاح حضور.
- أفضل مفتاح هو
instanceIdمستقر (منconnect.client.instanceId) يبقى عبر إعادات التشغيل. - المفاتيح غير حساسة لحالة الأحرف.
instanceId مستقر،
فقد يظهر كصف مكرر.
مدة الحياة (TTL) والحجم المحدود
ويكون الحضور متعمدا سريعا:- TTL: تتم إزالة الإدخالات الأقدم من 5 دقائق
- الحد الأقصى للإدخالات: 200 (يتم إسقاط الأقدم أولًا)
تحذير النفق البعيد/البعيد (الحلبة IPs)
عندما يتصل عميل عبر نفق SSH / إعادة توجيه منفذ محلي، قد يرى Gateway العنوان البعيد كـ127.0.0.1. لتجنب الكتابة فوق عنوان IP جيد أبلغ عنه العميل،
يتم تجاهل عناوين loopback البعيدة.
المستهلكون
علامة تبويب Instances في macOS
يعرض تطبيق macOS ناتجsystem-presence ويطبّق مؤشر حالة صغير
(نشط/خامل/قديم) بناءً على عمر آخر تحديث.
نصائح استكشاف الأخطاء وإصلاحها
- لرؤية القائمة الخام، استدعِ
system-presenceمقابل Gateway. - إذا رأيت تكرارات:
- أكّد أن العملاء يرسلون
client.instanceIdمستقرًا في المصافحة - أكّد أن المنارات الدورية تستخدم نفس
instanceId - تحقّق مما إذا كان الإدخال المشتق من الاتصال يفتقد
instanceId(التكرارات متوقعة)
- أكّد أن العملاء يرسلون