Neden vardı?
- Güvenlik sınırı: Gateway API yüzeyinin tamamı yerine küçük bir izin verilenler listesi sunuyordu.
- Eşleştirme + Node kimliği: Node kabulü Gateway tarafından yönetiliyor ve Node başına bir belirtece bağlanıyordu.
- Keşif kullanıcı deneyimi: Node’lar LAN üzerinde Bonjour aracılığıyla Gateway’leri keşfedebiliyor veya bir tailnet üzerinden doğrudan bağlanabiliyordu.
- Geri döngü WS: WS denetim düzleminin tamamı, SSH üzerinden tünellenmediği sürece yerel kalıyordu.
Aktarım
- TCP, satır başına bir JSON nesnesi (JSONL).
- İsteğe bağlı TLS (
bridge.tls.enabled: true). - Varsayılan dinleyici bağlantı noktası
18790idi.
bridgeTls=1 ile birlikte bridgeTlsSha256 içeriyordu. Bonjour/mDNS TXT kayıtları kimliği doğrulanmamış kayıtlardır; istemciler, başka bir bant dışı doğrulama olmadan duyurulan parmak izini yetkili bir sabitleme değeri olarak kabul edemezdi.
El sıkışma ve eşleştirme
- İstemci, Node meta verileriyle ve önceden eşleştirilmişse belirteçle birlikte
hellogönderir. - Eşleştirilmemişse Gateway,
error(NOT_PAIRED/UNAUTHORIZED) ile yanıt verir. - İstemci
pair-requestgönderir. - Gateway onay bekler, ardından
pair-okvehello-okgönderir.
hello-ok eskiden serverName döndürüyordu; barındırılan Plugin yüzeyleri artık güncel Gateway protokolünde pluginSurfaceUrls aracılığıyla duyurulur (Canvas/A2UI, pluginSurfaceUrls.canvas kullanır).
Çerçeveler
İstemciden Gateway’e:req/res: kapsamı belirlenmiş Gateway RPC’si (sohbet, oturumlar, yapılandırma, sistem durumu, sesle uyandırma, skills.bins).event: Node sinyalleri (ses dökümü, aracı isteği, sohbet aboneliği, yürütme yaşam döngüsü).
invoke/invoke-res: Node komutları (canvas.*,camera.*,screen.record,location.get,sms.send).event: abone olunan oturumlar için sohbet güncellemeleri.ping/pong: bağlantıyı canlı tutma.
src/gateway/server-bridge.ts içinde yer alıyordu (kaldırıldı).
Yürütme yaşam döngüsü olayları
Node’lar, tamamlanansystem.run etkinliğini göstermek için exec.finished yayımlıyor ve bu etkinlik Gateway tarafından sistem olaylarıyla eşleniyordu (eski Node’lar ayrıca exec.started yayımlayabiliyordu). exec.denied, reddedilen bir system.run girişimini sistem olayı kuyruğa alınmadan veya aracı çalışması uyandırılmadan nihai bir ret olarak işaretliyordu.
Yük alanları (belirtilmediği sürece tümü isteğe bağlıdır):
Geçmişteki tailnet kullanımı
- Köprüyü bir tailnet IP’sine bağlayın:
~/.openclaw/openclaw.jsoniçindebridge.bind: "tailnet"(yalnızca geçmişe yöneliktir;bridge.*artık geçerli bir yapılandırma değildir). - İstemciler MagicDNS adı veya tailnet IP’si üzerinden bağlanıyordu.
- Bonjour ağlar arasında çalışmaz; aksi durumda geniş alan DNS-SD veya manuel bir ana makine/bağlantı noktası gerekiyordu.