Gateway
Köprü protokolü
Neden vardı?
- Güvenlik sınırı: köprü, tam Gateway API yüzeyi yerine küçük bir izin listesi sunar.
- Eşleme + düğüm kimliği: düğüm kabulü Gateway tarafından yönetilir ve düğüm başına bir token’a bağlanır.
- Keşif UX’i: düğümler LAN üzerinde Bonjour aracılığıyla Gateway’leri keşfedebilir veya bir tailnet üzerinden doğrudan bağlanabilir.
- Loopback WS: tam WS kontrol düzlemi SSH üzerinden tünellenmedikçe yerel kalır.
Taşıma
- TCP, satır başına bir JSON nesnesi (JSONL).
- İsteğe bağlı TLS (
bridge.tls.enabledtrue olduğunda). - Tarihsel varsayılan dinleyici bağlantı noktası
18790idi (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 kimliğinin doğrulanmadığını unutmayın; istemciler, açık kullanıcı niyeti veya başka bant dışı doğrulama olmadan ilan edilen parmak izini yetkili bir sabitleme olarak ele almamalıdır.
El sıkışma + eşleme
- İstemci, düğüm meta verileri + token (zaten eşlenmişse) ile
hellogönderir. - Eşlenmemişse Gateway
error(NOT_PAIRED/UNAUTHORIZED) yanıtı verir. - İstemci
pair-requestgönderir. - Gateway onay bekler, ardından
pair-okvehello-okgönderir.
Tarihsel olarak hello-ok, serverName döndürürdü; barındırılan Plugin yüzeyleri artık pluginSurfaceUrls üzerinden ilan edilir. Canvas/A2UI pluginSurfaceUrls.canvas kullanır; kullanımdan kaldırılan canvasHostUrl takma adı yeniden düzenlenen protokolün parçası değildir.
Çerçeveler
İstemci → Gateway:
req/res: kapsamlı Gateway RPC’si (sohbet, oturumlar, yapılandırma, sağlık, voicewake, skills.bins)event: düğüm sinyalleri (ses dökümü, ajan isteği, sohbet aboneliği, exec yaşam döngüsü)
Gateway → İstemci:
invoke/invoke-res: düğüm komutları (canvas.*,camera.*,screen.record,location.get,sms.send)event: abone olunan oturumlar için sohbet güncellemeleriping/pong: keepalive
Eski izin listesi zorlaması src/gateway/server-bridge.ts içinde bulunuyordu (kaldırıldı).
Exec yaşam döngüsü olayları
Düğümler, system.run etkinliğini yüzeye çıkarmak için exec.finished veya exec.denied olayları yayabilir.
Bunlar Gateway’de sistem olaylarına eşlenir. (Eski düğümler hâlâ exec.started yayabilir.)
Yük alanları (belirtilmedikçe tümü isteğe bağlıdır):
sessionKey(gerekli): sistem olayını alacak ajan oturumu.runId: gruplama için benzersiz exec kimliği.command: ham veya biçimlendirilmiş komut dizesi.exitCode,timedOut,success,output: tamamlama ayrıntıları (yalnızca finished).reason: reddetme nedeni (yalnızca denied).
Tarihsel tailnet kullanımı
- Köprüyü bir tailnet IP’sine bağlayın:
~/.openclaw/openclaw.jsoniçindebridge.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 host/bağlantı noktası veya geniş alan DNS-SD kullanın.
Sürümleme
Köprü örtük v1 idi (min/max pazarlığı yoktu). Bu bölüm yalnızca tarihsel başvuru içindir; mevcut düğüm/operatör istemcileri WebSocket Gateway Protokolü kullanır.