Gateway

Köprü protokolü

Neden vardı

  • Güvenlik sınırı: köprü, tüm gateway API yüzeyi yerine küçük bir izin listesi sunar.
  • Eşleme + Node kimliği: Node kabulü Gateway tarafından yönetilir ve Node başına bir token'a bağlanır.
  • Keşif kullanıcı deneyimi: Node'lar LAN üzerinde Bonjour ile Gateway'leri keşfedebilir veya doğrudan bir tailnet üzerinden bağlanabilir.
  • Loopback WS: tam WS kontrol düzlemi, SSH ile tünellenmediği sürece yerel kalır.

Taşıma

  • TCP, satır başına bir JSON nesnesi (JSONL).
  • İsteğe bağlı TLS (bridge.tls.enabled true olduğunda).
  • Tarihsel varsayılan dinleyici bağlantı noktası 18790 idi (mevcut derlemeler bir TCP köprüsü başlatmaz).

TLS etkinleştirildiğinde keşif TXT kayıtları, gizli olmayan bir ipucu olarak bridgeTls=1 ve bridgeTlsSha256 içerir. Bonjour/mDNS TXT kayıtlarının kimlik doğrulamasız olduğunu unutmayın; istemciler, açık kullanıcı niyeti veya başka bir bant dışı doğrulama olmadan duyurulan parmak izini yetkili bir pin olarak değerlendirmemelidir.

El sıkışma + eşleme

  1. İstemci, Node metaverileri + token ile hello gönderir (zaten eşlendiyse).
  2. Eşlenmemişse Gateway error (NOT_PAIRED/UNAUTHORIZED) yanıtı verir.
  3. İstemci pair-request gönderir.
  4. Gateway onay bekler, ardından pair-ok ve hello-ok gönderir.

Tarihsel olarak hello-ok, serverName döndürüyordu; barındırılan Plugin yüzeyleri artık pluginSurfaceUrls üzerinden duyurulur. Canvas/A2UI, pluginSurfaceUrls.canvas kullanır; kullanımdan kaldırılmış canvasHostUrl takma adı yeniden düzenlenmiş protokolün parçası değildir.

Çerçeveler

İstemci → Gateway:

  • req / res: kapsamlı Gateway RPC (sohbet, oturumlar, yapılandırma, sağlık, voicewake, skills.bins)
  • event: Node sinyalleri (ses dökümü, ajan isteği, sohbet aboneliği, exec yaşam döngüsü)

Gateway → İstemci:

  • invoke / invoke-res: Node komutları (canvas.*, camera.*, screen.record, location.get, sms.send)
  • event: abone olunan oturumlar için sohbet güncellemeleri
  • ping / pong: keepalive

Eski izin listesi uygulaması src/gateway/server-bridge.ts içinde yaşıyordu (kaldırıldı).

Exec yaşam döngüsü olayları

Node'lar, tamamlanan system.run etkinliğini göstermek için exec.finished olayları yayabilir. Bunlar Gateway içinde sistem olaylarına eşlenir. (Eski Node'lar hâlâ exec.started yayabilir.) Node'lar reddedilen system.run denemeleri için exec.denied yayabilir; Gateway olayı terminal bir ret olarak kabul eder ve bir sistem olayı kuyruğa almaz veya ajan işini uyandırmaz.

Yük alanları (belirtilmedikçe tümü isteğe bağlıdır):

  • sessionKey (gerekli): olay korelasyonu ve exec.finished için sistem olayı teslimi amacıyla ajan oturumu.
  • runId: gruplama için benzersiz exec kimliği.
  • command: ham veya biçimlendirilmiş komut dizesi.
  • exitCode, timedOut, success, output: tamamlanma ayrıntıları (yalnızca finished).
  • reason: ret nedeni (yalnızca denied).

Tarihsel tailnet kullanımı

  • Köprüyü bir tailnet IP'sine bağlayın: ~/.openclaw/openclaw.json içinde bridge.bind: "tailnet" (yalnızca tarihsel; bridge.* artık geçerli değildir).
  • İstemciler MagicDNS adı veya tailnet IP'si üzerinden bağlanır.
  • Bonjour ağlar arasında geçiş yapmaz; gerektiğinde manuel ana makine/bağlantı noktası veya geniş alan DNS-SD kullanın.

Sürümleme

Köprü örtük v1 idi (min/maks pazarlığı yoktu). Bu bölüm yalnızca tarihsel başvuru içindir; mevcut Node/operatör istemcileri WebSocket Gateway Protokolü kullanır.

İlgili

Was this useful?
On this page

On this page