macOS companion app
macOS IPC
OpenClaw macOS IPC mimarisi
Yerel bir Unix soketi, çalıştırma onayları ve system.run için Node ana makine hizmetini macOS uygulamasına bağlar. Keşif/bağlantı denetimleri için bir openclaw-mac hata ayıklama CLI'ı (apps/macos/Sources/OpenClawMacCLI) bulunur; ajan eylemleri yine Gateway WebSocket ve node.invoke üzerinden gerçekleşir. Node destekli computer.act yolu, gömülü Peekaboo otomasyonunu işlem içinde çalıştırır; bağımsız Peekaboo istemcileri PeekabooBridge kullanır.
Hedefler
- TCC ile etkileşime giren tüm işleri (bildirimler, ekran kaydı, mikrofon, konuşma, AppleScript) yöneten tek bir GUI uygulaması örneği.
- Otomasyon için küçük bir yüzey: Gateway + Node komutları, işlem içi
computer.actve bağımsız kullanıcı arayüzü otomasyon istemcileri için PeekabooBridge. - Öngörülebilir izinler: TCC izinlerinin kalıcı olması için her zaman launchd tarafından başlatılan aynı imzalı paket kimliği.
Nasıl çalışır?
Gateway + Node aktarımı
- Uygulama, Gateway'i (yerel modda) çalıştırır ve ona bir Node olarak bağlanır.
- Ajan eylemleri
node.invokearacılığıyla gerçekleştirilir (ör.system.run,system.notify,canvas.*). - Node komutları
canvas.*,camera.snap,camera.clip,screen.snapshot,screen.record,computer.act,system.runvesystem.notifyöğelerini içerir. - Node, ajanların ekran, kamera, mikrofon, konuşma, otomasyon veya erişilebilirlik erişiminin kullanılabilir olup olmadığını görebilmesi için bir
permissionseşlemesi bildirir.
Node hizmeti + uygulama IPC'si
- Başsız bir Node ana makine hizmeti, Gateway WebSocket'e bağlanır.
system.runistekleri yerel bir Unix soketi (ExecApprovalsSocket.swift) üzerinden macOS uygulamasına iletilir.- Uygulama, çalıştırma işlemini kullanıcı arayüzü bağlamında gerçekleştirir, gerekirse kullanıcıdan onay ister ve çıktıyı döndürür.
Diyagram (SCI):
Ajan -> Gateway -> Node Hizmeti (WS) | IPC (UDS + belirteç + HMAC + TTL) v Mac Uygulaması (UI + TCC + system.run)PeekabooBridge (kullanıcı arayüzü otomasyonu)
- Yerleşik ajan
computeraracı bu soketi kullanmaz. Eşleştirilmiş bir macOS Node'u, gömülü Peekaboo hizmetleriyle uygulama işlemi içindecomputer.actişlemini gerçekleştirir. - Kullanıcı arayüzü otomasyonu, ayrı bir UNIX soketi (
~/Library/Application Support/OpenClaw/<socket>) ve PeekabooBridge JSON protokolünü kullanır. - Ana makine tercih sırası (istemci tarafında): Peekaboo.app -> Claude.app -> OpenClaw.app -> yerel çalıştırma.
- Güvenlik: köprü ana makineleri izin verilenler listesindeki bir TeamID'yi zorunlu kılar (paketle gelen
PeekabooBridgeHostCoordinator, sabit bir ekibin yanı sıra uygulamanın kendi imzalama ekibine de izin verir); yalnızca DEBUG için sunulan aynı UID'li kaçış mekanizmasıPEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1ile korunur (Peekaboo kuralı). - Ayrıntılar için bkz. PeekabooBridge kullanımı.
İşletim akışları
- Yeniden başlatma/derleme:
scripts/restart-mac.shmevcut örnekleri sonlandırır, Swift aracılığıyla yeniden derler, yeniden paketler ve tekrar başlatır. Kullanılabilir bir imzalama kimliğini otomatik olarak algılar ve bulunamazsa--no-signseçeneğine geri döner; imzalamayı zorunlu kılmak için--signseçeneğini (anahtar yoksa başarısız olur), imzasız yolu zorlamak içinse--no-signseçeneğini kullanın. Ortamda ayarlanmışSIGN_IDENTITY, imzalı yolda kaldırılır; böylecescripts/codesign-mac-app.shbetiğinin kendi kimlik otomatik algılama mekanizması sertifikayı seçer. - Tek örnek: uygulama, yinelenen bir paket kimliği için
NSWorkspace.runningApplicationsdeğerini denetler ve birden fazla örnek bulunursa çıkar (MenuBar.swiftiçindekiisDuplicateInstance()).
Güçlendirme notları
- Tüm ayrıcalıklı yüzeyler için TeamID eşleşmesini zorunlu kılmayı tercih edin.
- PeekabooBridge:
PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1(yalnızca DEBUG), yerel geliştirme için aynı UID'ye sahip çağıranlara izin verebilir. - Tüm iletişim yalnızca yerel olarak gerçekleşir; hiçbir ağ soketi dışarıya açılmaz.
- TCC istemleri yalnızca GUI uygulama paketinden kaynaklanır; yeniden derlemeler boyunca imzalı paket kimliğini sabit tutun.
- Çalıştırma onayları soketi güçlendirmesi:
0600dosya modu, paylaşılan belirteç, eş UID denetimi (getpeereid), HMAC-SHA256 sınama/yanıt mekanizması ve isteklerde kısa bir TTL.
İlgili
Was this useful?