Di halaman ini
Di halaman ini
macOS companion app
IPC macOS
Arsitektur IPC OpenClaw macOS
Soket Unix lokal menghubungkan layanan host Node ke aplikasi macOS untuk persetujuan eksekusi dan system.run. CLI debug openclaw-mac (apps/macos/Sources/OpenClawMacCLI) tersedia untuk pemeriksaan penemuan/koneksi; tindakan agen tetap mengalir melalui WebSocket Gateway dan node.invoke. Jalur computer.act yang didukung Node menjalankan otomatisasi Peekaboo tertanam dalam proses; klien Peekaboo mandiri menggunakan PeekabooBridge.
Tujuan
- Satu instans aplikasi GUI yang menangani semua pekerjaan yang berinteraksi dengan TCC (notifikasi, perekaman layar, mikrofon, ucapan, AppleScript).
- Permukaan kecil untuk otomatisasi: Gateway + perintah Node,
computer.actdalam proses, serta PeekabooBridge untuk klien otomatisasi UI mandiri. - Izin yang dapat diprediksi: selalu menggunakan ID bundel bertanda tangan yang sama, diluncurkan oleh launchd, sehingga pemberian izin TCC tetap berlaku.
Cara kerjanya
Transportasi Gateway + Node
- Aplikasi menjalankan Gateway (mode lokal) dan terhubung dengannya sebagai Node.
- Tindakan agen dilakukan melalui
node.invoke(misalnyasystem.run,system.notify,canvas.*). - Perintah Node mencakup
canvas.*,camera.snap,camera.clip,screen.snapshot,screen.record,computer.act,system.run, dansystem.notify. - Node melaporkan peta
permissionsagar agen dapat melihat apakah akses layar, kamera, mikrofon, ucapan, otomatisasi, atau aksesibilitas tersedia.
Layanan Node + IPC aplikasi
- Layanan host Node tanpa antarmuka grafis terhubung ke WebSocket Gateway.
- Permintaan
system.runditeruskan ke aplikasi macOS melalui soket Unix lokal (ExecApprovalsSocket.swift). - Aplikasi melakukan eksekusi dalam konteks UI, meminta konfirmasi jika diperlukan, dan mengembalikan keluaran.
Diagram (SCI):
PeekabooBridge (otomatisasi UI)
- Alat
computerbawaan agen tidak menggunakan soket ini. Node macOS yang dipasangkan menjalankancomputer.actdalam proses aplikasi dengan layanan Peekaboo tertanam. - Otomatisasi UI menggunakan soket UNIX terpisah (
~/Library/Application Support/OpenClaw/<socket>) dan protokol JSON PeekabooBridge. - Urutan preferensi host (sisi klien): Peekaboo.app -> Claude.app -> OpenClaw.app -> eksekusi lokal.
- Keamanan: host jembatan memerlukan TeamID yang masuk daftar izin (
PeekabooBridgeHostCoordinatorbawaan mengizinkan tim tetap serta tim penandatanganan aplikasi itu sendiri); jalur darurat UID yang sama khusus DEBUG dilindungi olehPEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1(konvensi Peekaboo). - Lihat: Penggunaan PeekabooBridge untuk detailnya.
Alur operasional
- Mulai ulang/bangun ulang:
scripts/restart-mac.shmenghentikan instans yang ada, membangun ulang melalui Swift, mengemas ulang, dan meluncurkannya kembali. Skrip ini secara otomatis mendeteksi identitas penandatanganan yang tersedia dan beralih ke--no-signjika tidak ada yang ditemukan; berikan--signuntuk mewajibkan penandatanganan (gagal jika tidak ada kunci yang tersedia) atau--no-signuntuk memaksakan jalur tanpa tanda tangan.SIGN_IDENTITYyang ditetapkan di lingkungan akan dihapus pada jalur bertanda tangan, sehingga deteksi otomatis identitas milikscripts/codesign-mac-app.shmemilih sertifikat tersebut. - Instans tunggal: aplikasi memeriksa
NSWorkspace.runningApplicationsuntuk ID bundel duplikat dan keluar jika ditemukan lebih dari satu instans (isDuplicateInstance()dalamMenuBar.swift).
Catatan penguatan keamanan
- Sebaiknya wajibkan kecocokan TeamID untuk semua permukaan dengan hak istimewa.
- PeekabooBridge:
PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1(khusus DEBUG) dapat mengizinkan pemanggil dengan UID yang sama untuk pengembangan lokal. - Semua komunikasi tetap hanya lokal; tidak ada soket jaringan yang diekspos.
- Permintaan TCC hanya berasal dari bundel aplikasi GUI; pertahankan kestabilan ID bundel bertanda tangan di seluruh proses pembangunan ulang.
- Penguatan soket persetujuan eksekusi: mode berkas
0600, token bersama, pemeriksaan UID rekan (getpeereid), tantangan/respons HMAC-SHA256, dan TTL singkat pada permintaan.
Terkait
Was this useful?