---
read_when:
    - تصحيح أخطاء الحالة المباشرة في صفحة الأجهزة بواجهة التحكم
    - التحقيق في صفوف المثيلات المكررة أو القديمة
    - تغيير اتصال WebSocket الخاص بـ Gateway أو إشارات أحداث النظام
summary: كيفية إنشاء إدخالات حضور OpenClaw ودمجها وعرضها
title: الحضور
x-i18n:
    generated_at: "2026-07-16T13:47:38Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: b50291e26ddc06fac888847c9e94eba5f9351b1b8d06c55fd6bec16a38d0b6a5
    source_path: concepts/presence.md
    workflow: 16
---

تشير «حالة الحضور» في OpenClaw إلى عرض مبسّط قائم على بذل أفضل جهد لما يلي:

- الـ **Gateway** نفسه، و
- **العملاء المرئيون للمستخدم والمتصلون بـ Gateway** (تطبيق Mac وWebChat وNodes وغيرها)

تعرض حالة الحضور بيانات الاتصال الوصفية المباشرة في صفحة **الأجهزة** ضمن واجهة التحكم
(ضمن **الإعدادات ← الأجهزة**) وفي علامة تبويب **المثيلات** في تطبيق macOS.

تتناول هذه الصفحة قائمة عملاء Gateway. لاكتشاف جهاز Mac الذي استُخدم مؤخرًا
وتوجيه تنبيهات Node إليه، راجع
[حالة حضور الكمبيوتر النشط](/nodes/presence).

## حقول حالة الحضور (ما يظهر)

إدخالات حالة الحضور هي كائنات منظّمة تتضمن حقولًا مثل:

- `instanceId` (اختياري، لكنه موصى به بشدة): هوية عميل ثابتة (عادةً `connect.client.instanceId`)
- `host`: اسم مضيف سهل القراءة
- `ip`: عنوان IP قائم على بذل أفضل جهد
- `version`: سلسلة إصدار العميل
- `deviceFamily` / `modelIdentifier`: تلميحات عن العتاد
- `mode`: `ui`، `webchat`، `cli`، `backend`، `node`، `probe`، `test`
- `lastInputSeconds`: عدد الثواني منذ آخر إدخال للمستخدم، إن كان معلومًا
- `reason`: سلسلة حرة يوفّرها العميل؛ ولا يصدر Gateway نفسه سوى `self` و`connect` و`disconnect`
- `deviceId`، `roles`، `scopes`: هوية الجهاز وتلميحات الدور/النطاق الواردة من مصافحة الاتصال
- `ts`: الطابع الزمني لآخر تحديث (بالمللي ثانية منذ الحقبة)

## الجهات المنتجة (مصادر حالة الحضور)

تُنتج إدخالات حالة الحضور من مصادر متعددة ثم **تُدمج**.

### 1) إدخال Gateway الذاتي

يضيف Gateway دائمًا إدخالًا «ذاتيًا» عند بدء التشغيل لكي تعرض واجهات المستخدم مضيف Gateway
حتى قبل اتصال أي عميل.

### 2) اتصال WebSocket

يبدأ كل عميل WS بطلب `connect`. وبعد نجاح المصافحة،
يُدرج Gateway إدخال حالة حضور لذلك الاتصال أو يحدّثه.

#### سبب عدم ظهور اتصالات مستوى التحكم المؤقتة

غالبًا ما تتصل أوامر CLI وعملاء RPC الخلفيون والمسابير لفترة وجيزة. ولتجنّب
الاحتفاظ بهذا التبدّل طوال مدة TTL لحالة الحضور، لا تتحول اتصالات العملاء في وضع `cli` أو `backend`
أو `probe` إلى إدخالات حالة حضور. ويستمر تتبّع العملاء في وضع الاختبار
لأن مجموعات الاختبار تستخدمهم بدائل للعملاء الحقيقيين.

### 3) إشارات `system-event`

يمكن للعملاء إرسال إشارات دورية أكثر ثراءً عبر التابع `system-event`. يستخدم تطبيق Mac
ذلك للإبلاغ عن اسم المضيف وعنوان IP و`lastInputSeconds`.

### 4) اتصالات Node (الدور: node)

عندما تتصل Node عبر WebSocket الخاص بـ Gateway باستخدام `role: node`،
يُدرج Gateway إدخال حالة حضور لتلك الـNode أو يحدّثه (وفق التدفق نفسه المتّبع مع عملاء WS الآخرين).

## قواعد الدمج وإزالة التكرار (سبب أهمية `instanceId`)

تُخزّن إدخالات حالة الحضور في خريطة واحدة داخل الذاكرة، وتكون مفاتيحها غير حساسة لحالة الأحرف
استنادًا إلى أول قيمة متاحة بالترتيب التالي: معرّف جهاز مقترن، ثم `connect.client.instanceId`،
ثم معرّف كل اتصال كحل أخير.

يُستبعد عملاء مستوى التحكم المؤقتون من التتبّع بالكامل (راجع
أعلاه)، لذلك لا تصبح معرّفات اتصالاتهم مفاتيح مطلقًا. أما لكل عميل آخر، فيعني
استخدام معرّف الاتصال كحل احتياطي أن العميل الذي يعيد الاتصال من دون
`instanceId` ثابت يظهر كصف **مكرر**.

## TTL والحجم المحدود

حالة الحضور مؤقتة بطبيعتها:

- **TTL:** تُزال الإدخالات التي يزيد عمرها على 5 دقائق
- **الحد الأقصى للإدخالات:** 200 (تُحذف الأقدم أولًا)

يحافظ ذلك على حداثة القائمة ويمنع نمو الذاكرة بلا حدود.

## تنبيه بشأن الاتصال البعيد/النفق (عناوين IP للحلقة المحلية)

عندما يتصل عميل عبر نفق SSH أو إعادة توجيه منفذ محلي، قد يرى Gateway
العنوان البعيد على أنه `127.0.0.1`. ولتجنّب تسجيل عنوان النفق
هذا باعتباره عنوان IP للعميل، تحذف معالجة الاتصال `ip` بالكامل
للعملاء المكتشفين محليًا (الحلقة المحلية)، بدلًا من كتابة عنوان الحلقة المحلية
في الإدخال.

## الجهات المستهلكة

### صفحة الأجهزة في واجهة التحكم

تربط صفحة **الأجهزة** `system-presence` بسجلات الاقتران وNode
الدائمة. وتثبّت الإشارة الذاتية لـGateway أولًا، كما تستخدم معرّفات الجهاز أو
المثيل المتطابقة لبيانات المنصة والإصدار والطراز وحداثة الإدخال المباشرة.

### علامة تبويب المثيلات في macOS

يعرض تطبيق macOS ناتج `system-presence` ويطبّق مؤشر حالة صغيرًا
(نشط/خامل/قديم) استنادًا إلى عمر آخر تحديث.

## نصائح تصحيح الأخطاء

- لعرض القائمة الأولية، استدعِ `system-presence` على Gateway.
- إذا ظهرت إدخالات مكررة:
  - تأكّد من أن العملاء يرسلون `client.instanceId` ثابتًا في المصافحة
  - تأكّد من أن الإشارات الدورية تستخدم `instanceId` نفسه
  - تحقّق مما إذا كان الإدخال المشتق من الاتصال يفتقد `instanceId` (يُتوقع ظهور التكرارات)

## ذو صلة

<CardGroup cols={2}>
  <Card title="حالة حضور الكمبيوتر النشط" href="/nodes/presence" icon="computer-mouse">
    كيفية استخدام الإدخال الفعلي على Mac لتحديد Node نشطة وتوجيه تنبيهات الاتصال.
  </Card>
  <Card title="مؤشرات الكتابة" href="/ar/concepts/typing-indicators" icon="ellipsis">
    متى تُرسل مؤشرات الكتابة وكيفية ضبطها.
  </Card>
  <Card title="البث والتقسيم إلى أجزاء" href="/ar/concepts/streaming" icon="bars-staggered">
    البث الصادر والتقسيم إلى أجزاء والتنسيق الخاص بكل قناة.
  </Card>
  <Card title="بنية Gateway" href="/ar/concepts/architecture" icon="diagram-project">
    مكوّنات Gateway وبروتوكول WebSocket الذي يدير تحديثات حالة الحضور.
  </Card>
  <Card title="بروتوكول Gateway" href="/ar/gateway/protocol" icon="plug">
    بروتوكول الاتصال عبر الشبكة لـ`connect` و`system-event` و`system-presence`.
  </Card>
</CardGroup>
