Nodes and media
Aktivasi suara
Kata pemicu adalah satu daftar global yang dimiliki oleh Gateway — tidak ada daftar khusus per Node. Setiap Node atau UI aplikasi dapat mengedit daftar tersebut; Gateway menyimpan perubahan dan menyiarkannya ke setiap klien yang terhubung.
- macOS: tombol aktif/nonaktif Voice Wake lokal. Memerlukan macOS 26+; lihat Pemicu suara (macOS) untuk detail runtime/PTT.
- iOS: tombol aktif/nonaktif Voice Wake lokal di Settings.
- Android: tombol aktif/nonaktif Voice Wake lokal dan editor kata pemicu di Settings → Voice. Memerlukan pengenalan ucapan pada perangkat Android.
Penyimpanan
Kata pemicu dan aturan perutean berada di basis data status Gateway, ~/.openclaw/state/openclaw.sqlite secara default (ganti dengan OPENCLAW_STATE_DIR), dalam tabel voicewake_triggers, voicewake_routing_config, voicewake_routing_routes. settings/voicewake.json dan settings/voicewake-routing.json versi lama hanya merupakan masukan migrasi openclaw doctor --fix — runtime tidak pernah membacanya.
Protokol
Daftar pemicu
| Metode | Parameter | Hasil |
|---|---|---|
voicewake.get |
tidak ada | { triggers: string[] } |
voicewake.set |
{ triggers: string[] } |
{ triggers: string[] } |
voicewake.set menormalisasi masukan: memangkas spasi kosong, menghapus entri kosong, mempertahankan paling banyak 32 pemicu, dan memotong masing-masing menjadi 64 unit kode UTF-16 tanpa memisahkan pasangan pengganti. Hasil kosong akan kembali menggunakan nilai default bawaan (openclaw, claude, computer).
Perutean (pemicu ke target)
| Metode | Parameter | Hasil |
|---|---|---|
voicewake.routing.get |
tidak ada | { config: VoiceWakeRoutingConfig } |
voicewake.routing.set |
{ config: VoiceWakeRoutingConfig } |
{ config: VoiceWakeRoutingConfig } |
{ "version": 1, "defaultTarget": { "mode": "current" }, "routes": [{ "trigger": "robot wake", "target": { "sessionKey": "agent:main:main" } }], "updatedAtMs": 1730000000000}Setiap target rute mendukung tepat salah satu dari:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
Batas: paling banyak 32 rute, teks pemicu paling banyak 64 karakter. Pemicu rute dinormalisasi untuk pencocokan dan pendeteksian duplikat dengan mengubahnya menjadi huruf kecil, menghapus tanda baca di awal/akhir setiap kata, dan menyatukan spasi kosong ("Hey, Bot!!" dan "hey bot" cocok dan dihitung sebagai duplikat) — normalisasi ini lebih ketat daripada pemangkasan biasa yang digunakan untuk daftar pemicu global di atas.
Peristiwa
| Peristiwa | Payload |
|---|---|
voicewake.changed |
{ triggers: string[] } |
voicewake.routing.changed |
{ config: VoiceWakeRoutingConfig } |
Keduanya disiarkan ke setiap klien WebSocket dengan cakupan baca (aplikasi macOS, WebChat, dan sejenisnya) serta ke setiap Node yang terhubung. Node juga menerima keduanya sebagai pengiriman snapshot awal segera setelah terhubung.
Perilaku klien
- macOS: memanggil
voicewake.set/voicewake.getdan memantauvoicewake.changedagar tetap sinkron dengan klien lain. - iOS: memanggil
voicewake.set/voicewake.getdan memantauvoicewake.changedagar pendeteksian kata pemicu lokal tetap responsif. - Android: memanggil
voicewake.set/voicewake.get, memantauvoicewake.changed, dan mengiklankanvoiceWakesaat diaktifkan. Pengenalan tetap berlangsung pada perangkat dan hanya di latar depan; proses ini dijeda saat audio sedang digunakan oleh Talk, dikte manual, perekaman catatan suara, atau ucapan pesan.