Multi-agent
Kehadiran
OpenClaw "presence" adalah tampilan ringan dengan upaya terbaik untuk:
- Gateway itu sendiri, dan
- klien yang terlihat oleh pengguna dan terhubung ke Gateway (aplikasi Mac, WebChat, node, dll.)
Presence menampilkan metadata koneksi langsung di halaman Devices pada Control UI (di bawah Settings → Devices) dan tab Instances pada aplikasi macOS.
Halaman ini membahas daftar klien Gateway. Untuk mendeteksi Mac yang terakhir digunakan dan merutekan peringatan node ke sana, lihat Presence komputer aktif.
Bidang presence (yang ditampilkan)
Entri presence adalah objek terstruktur dengan bidang seperti:
instanceId(opsional tetapi sangat disarankan): identitas klien stabil (biasanyaconnect.client.instanceId)host: nama host yang mudah dipahamiip: alamat IP berdasarkan upaya terbaikversion: string versi kliendeviceFamily/modelIdentifier: petunjuk perangkat kerasmode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: detik sejak input pengguna terakhir, jika diketahuireason: string bebas yang disediakan klien; Gateway itu sendiri hanya memancarkanself,connect, dandisconnectdeviceId,roles,scopes: identitas perangkat dan petunjuk peran/cakupan dari handshake koneksits: stempel waktu pembaruan terakhir (md sejak epoch)
Produsen (asal presence)
Entri presence dihasilkan oleh beberapa sumber dan digabungkan.
1) Entri mandiri Gateway
Gateway selalu membuat entri "mandiri" saat dimulai agar UI menampilkan host gateway bahkan sebelum ada klien yang terhubung.
2) Koneksi WebSocket
Setiap klien WS dimulai dengan permintaan connect. Setelah handshake berhasil,
Gateway melakukan upsert entri presence untuk koneksi tersebut.
Alasan koneksi control-plane sementara tidak ditampilkan
Perintah CLI, klien RPC backend, dan probe sering kali hanya terhubung sebentar. Untuk menghindari
penyimpanan aktivitas yang terus berubah tersebut selama seluruh TTL presence, klien dalam mode cli, backend,
atau probe tidak diubah menjadi entri presence. Klien mode pengujian
tetap dilacak karena rangkaian pengujian menggunakannya sebagai pengganti klien nyata.
3) Beacon system-event
Klien dapat mengirim beacon berkala yang lebih lengkap melalui metode system-event. Aplikasi
Mac menggunakannya untuk melaporkan nama host, IP, versi, dan metadata keaktifan. Aktivitas
input fisik bukan bagian dari beacon generik ini; event node native khusus
yang dijelaskan dalam Presence komputer aktif menanganinya. Mac
menandai beacon ini dengan system-presence-clear-last-input; Gateway saat ini
menggunakan penanda yang kompatibel dengan versi sebelumnya tersebut untuk menghapus kebaruan input yang tersimpan dari
aplikasi lama. Beacon juga membawa nilai tetap 30 hari agar Gateway lama yang
mengabaikan tag tersebut menimpa kebaruan yang tepat alih-alih menyimpannya. Tidak ada aktivitas baru
yang diambil sampelnya untuk nilai kompatibilitas ini.
4) Koneksi node (peran: node)
Saat node terhubung melalui WebSocket Gateway dengan role: node, Gateway
melakukan upsert entri presence untuk node tersebut (alur yang sama seperti klien WS lainnya).
Aturan penggabungan + deduplikasi (alasan instanceId penting)
Entri presence disimpan dalam satu peta dalam memori, dengan kunci yang tidak peka huruf besar-kecil
berdasarkan nilai pertama yang tersedia dengan urutan: id perangkat yang dipasangkan, connect.client.instanceId,
atau id per koneksi sebagai pilihan terakhir.
Klien control-plane sementara sepenuhnya dikecualikan dari pelacakan (lihat
di atas), sehingga id koneksinya tidak pernah menjadi kunci. Untuk setiap klien lainnya,
penggunaan id koneksi sebagai pilihan terakhir berarti klien yang terhubung kembali tanpa
instanceId stabil akan ditampilkan sebagai baris duplikat.
TTL dan ukuran terbatas
Presence sengaja bersifat sementara:
- TTL: entri yang berusia lebih dari 5 menit dihapus
- Entri maksimum: 200 (yang paling lama dihapus terlebih dahulu)
Hal ini menjaga daftar tetap mutakhir dan menghindari pertumbuhan memori tanpa batas.
Catatan koneksi jarak jauh/tunnel (IP loopback)
Saat klien terhubung melalui tunnel SSH / penerusan port lokal, Gateway
mungkin melihat alamat jarak jauhnya sebagai 127.0.0.1. Untuk menghindari pencatatan alamat tunnel
tersebut sebagai IP klien, penanganan koneksi sepenuhnya menghilangkan ip untuk
klien yang terdeteksi lokal (loopback), alih-alih menulis alamat loopback
ke dalam entri.
Konsumen
Halaman Devices pada Control UI
Halaman Devices menggabungkan system-presence dengan catatan pemasangan dan node
yang persisten. Halaman ini menyematkan beacon mandiri Gateway di urutan pertama dan menggunakan id perangkat atau
instans yang cocok untuk metadata platform, versi, model, dan kebaruan input langsung.
Tab Instances pada macOS
Aplikasi macOS menampilkan output system-presence dan menerapkan indikator status
kecil (Active/Idle/Stale) berdasarkan usia pembaruan terakhir.
Kiat debugging
- Untuk melihat daftar mentah, panggil
system-presenceterhadap Gateway. - Jika terlihat duplikat:
- pastikan klien mengirim
client.instanceIdyang stabil dalam handshake - pastikan beacon berkala menggunakan
instanceIdyang sama - periksa apakah entri yang berasal dari koneksi tidak memiliki
instanceId(duplikat memang diperkirakan)
- pastikan klien mengirim
Terkait
Cara input fisik Mac memilih node aktif dan merutekan peringatan koneksi.
Waktu indikator pengetikan dikirim dan cara menyesuaikannya.
Streaming keluar, pemotongan, dan pemformatan per kanal.
Komponen Gateway dan protokol WebSocket yang menggerakkan pembaruan presence.
Protokol wire untuk connect, system-event, dan system-presence.