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.enabledtrue olduğunda). - Tarihsel varsayılan dinleyici bağlantı noktası
18790idi (mevcut derlemeler bir TCP köprüsü başlatmaz).
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
- İstemci, Node metaverileri + token ile
hellogönderir (zaten eşlendiyse). - Eşlenmemişse Gateway
error(NOT_PAIRED/UNAUTHORIZED) yanıtı verir. - İstemci
pair-requestgönderir. - Gateway onay bekler, ardından
pair-okvehello-okgönderir.
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ü)
invoke/invoke-res: Node komutları (canvas.*,camera.*,screen.record,location.get,sms.send)event: abone olunan oturumlar için sohbet güncellemeleriping/pong: keepalive
src/gateway/server-bridge.ts içinde yaşıyordu (kaldırıldı).
Exec yaşam döngüsü olayları
Node’lar, tamamlanansystem.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 veexec.finishediç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.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 ana makine/bağlantı noktası veya geniş alan DNS-SD kullanın.