---
read_when:
    - التحقيق في شيفرة عميل Node القديمة أو سجلات الاقتران المؤرشفة
    - تدقيق ما كانت واجهة Node القديمة تتيحه سابقًا
summary: 'بروتوكول الجسر التاريخي (العُقد القديمة): TCP JSONL، والاقتران، وRPC محدد النطاق'
title: بروتوكول الجسر
x-i18n:
    generated_at: "2026-07-12T05:54:13Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 6e8b69c59f2170439f0e7b139bf5bbdb429d7c9d8dde7b36cd64aab63939c95d
    source_path: gateway/bridge-protocol.md
    workflow: 16
---

<Warning>
تمت **إزالة** جسر TCP. لا تتضمن إصدارات OpenClaw الحالية مستمع الجسر، ولم تعد مفاتيح الإعداد `bridge.*` موجودة في المخطط. هذه الصفحة مرجع تاريخي فقط. استخدم [بروتوكول Gateway](/ar/gateway/protocol) لجميع عملاء العُقد/المشغّلين.
</Warning>

## سبب وجوده

- **الحد الأمني**: أتاح قائمة سماح صغيرة بدلًا من كامل سطح واجهة برمجة تطبيقات Gateway.
- **الإقران + هوية العقدة**: كان Gateway يتولى قبول العقدة ويربطها برمز مميز خاص بكل عقدة.
- **تجربة الاكتشاف**: كان بإمكان العقد اكتشاف بوابات Gateway عبر Bonjour على الشبكة المحلية، أو الاتصال مباشرة عبر شبكة tailnet.
- **WebSocket عبر الاسترجاع المحلي**: ظل مستوى تحكم WebSocket الكامل محليًا ما لم يُمرَّر عبر نفق SSH.

## النقل

- TCP، كائن JSON واحد في كل سطر (JSONL).
- TLS اختياري (`bridge.tls.enabled: true`).
- كان منفذ الاستماع الافتراضي `18790`.

عند تمكين TLS، كانت سجلات TXT الخاصة بالاكتشاف تتضمن `bridgeTls=1` بالإضافة إلى `bridgeTlsSha256` كتلميح غير سري. سجلات TXT الخاصة بـ Bonjour/mDNS غير موثَّقة؛ لذا لم يكن بإمكان العملاء التعامل مع البصمة المُعلن عنها كتثبيت موثوق دون تحقق آخر عبر قناة خارجية.

## المصافحة والإقران

1. يرسل العميل `hello` مع بيانات العقدة الوصفية والرمز المميز (إذا كانت مقترنة بالفعل).
2. إذا لم تكن مقترنة، يرد Gateway بـ `error` ‏(`NOT_PAIRED` / `UNAUTHORIZED`).
3. يرسل العميل `pair-request`.
4. ينتظر Gateway الموافقة، ثم يرسل `pair-ok` و`hello-ok`.

كان `hello-ok` يعيد سابقًا `serverName`؛ أما أسطح Plugin المستضافة فيُعلن عنها الآن عبر `pluginSurfaceUrls` في بروتوكول Gateway الحالي (تستخدم Canvas/A2UI القيمة `pluginSurfaceUrls.canvas`).

## الإطارات

من العميل إلى Gateway:

- `req` / `res`: استدعاء RPC محدود النطاق لـ Gateway (الدردشة، الجلسات، الإعداد، الصحة، التنبيه الصوتي، `skills.bins`).
- `event`: إشارات العقدة (النص المنسوخ صوتيًا، طلب الوكيل، الاشتراك في الدردشة، دورة حياة التنفيذ).

من Gateway إلى العميل:

- `invoke` / `invoke-res`: أوامر العقدة (`canvas.*`، و`camera.*`، و`screen.record`، و`location.get`، و`sms.send`).
- `event`: تحديثات الدردشة للجلسات المشترك فيها.
- `ping` / `pong`: إبقاء الاتصال نشطًا.

كان تطبيق قائمة السماح موجودًا في `src/gateway/server-bridge.ts` (أُزيل).

## أحداث دورة حياة التنفيذ

كانت العقد تُصدر `exec.finished` لإظهار نشاط `system.run` المكتمل، وكان Gateway يحوّله إلى أحداث نظام (وكان بإمكان العقد القديمة أيضًا إصدار `exec.started`). كان `exec.denied` يحدد محاولة `system.run` المرفوضة كرفض نهائي دون إدراج حدث نظام في قائمة الانتظار أو إيقاظ عمل الوكيل.

حقول الحمولة (كلها اختيارية ما لم يُذكر خلاف ذلك):

| الحقل                            | ملاحظات                                                                                                  |
| -------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `sessionKey`                     | مطلوب. جلسة الوكيل لربط الحدث، ولتسليم حدث النظام في حالة `exec.finished`.                               |
| `runId`                          | معرّف تنفيذ فريد للتجميع.                                                                                |
| `command`                        | سلسلة الأمر الخام أو المنسقة.                                                                           |
| `exitCode`، `timedOut`، `output` | تفاصيل الإكمال (للعمليات المكتملة فقط).                                                                  |
| `reason`                         | سبب الرفض (للعمليات المرفوضة فقط).                                                                       |

## الاستخدام التاريخي لشبكة tailnet

- اربط الجسر بعنوان IP على شبكة tailnet: ‏`bridge.bind: "tailnet"` في `~/.openclaw/openclaw.json` (للتوثيق التاريخي فقط؛ لم يعد `bridge.*` إعدادًا صالحًا).
- كان العملاء يتصلون عبر اسم MagicDNS أو عنوان IP على شبكة tailnet.
- لا يعبر Bonjour بين الشبكات؛ لذلك كان يلزم استخدام DNS-SD واسع النطاق أو تحديد المضيف/المنفذ يدويًا.

## إدارة الإصدارات

كان الجسر يستخدم الإصدار v1 ضمنيًا، دون تفاوض على حد أدنى/أقصى. يستخدم عملاء العُقد/المشغّلين الحاليون [بروتوكول Gateway](/ar/gateway/protocol) عبر WebSocket، والذي يتفاوض على نطاق إصدارات البروتوكول.

## ذو صلة

- [بروتوكول Gateway](/ar/gateway/protocol)
- [العُقد](/ar/nodes)
