Nodes and media
بیدارباش صوتی
واژههای بیدارباش یک فهرست سراسری واحد متعلق به Gateway هستند — هیچ فهرست سفارشی جداگانهای برای هر Node وجود ندارد. رابط کاربری هر Node یا برنامهای میتواند این فهرست را ویرایش کند؛ Gateway تغییر را پایدار ذخیره میکند و آن را برای همه کلاینتهای متصل پخش میکند.
- macOS: کلید محلی فعال/غیرفعالکردن بیدارباش صوتی. به macOS 26+ نیاز دارد؛ برای جزئیات زمان اجرا/PTT به بیدارباش صوتی (macOS) مراجعه کنید.
- iOS: کلید محلی فعال/غیرفعالکردن بیدارباش صوتی در تنظیمات.
- Android: کلید محلی فعال/غیرفعالکردن بیدارباش صوتی و ویرایشگر واژههای بیدارباش در Settings → Voice. به تشخیص گفتار روی دستگاه در Android نیاز دارد.
ذخیرهسازی
واژههای بیدارباش و قواعد مسیریابی در پایگاه داده وضعیت Gateway قرار دارند؛ بهطور پیشفرض ~/.openclaw/state/openclaw.sqlite (با OPENCLAW_STATE_DIR بازنویسی میشود)، در جدولهای voicewake_triggers، voicewake_routing_config و voicewake_routing_routes. فایلهای قدیمی settings/voicewake.json و settings/voicewake-routing.json فقط ورودیهای مهاجرت openclaw doctor --fix هستند — زمان اجرا هرگز آنها را نمیخواند.
پروتکل
فهرست محرکها
| متد | پارامترها | نتیجه |
|---|---|---|
voicewake.get |
ندارد | { triggers: string[] } |
voicewake.set |
{ triggers: string[] } |
{ triggers: string[] } |
voicewake.set ورودی را نرمالسازی میکند: فاصلههای سفید ابتدا و انتها را حذف میکند، ورودیهای خالی را کنار میگذارد، حداکثر 32 محرک را نگه میدارد و هرکدام را بدون شکستن جفتهای جانشین به 64 واحد کد UTF-16 کوتاه میکند. اگر نتیجه خالی باشد، از مقادیر پیشفرض داخلی (openclaw، claude، computer) استفاده میشود.
مسیریابی (از محرک به مقصد)
| متد | پارامترها | نتیجه |
|---|---|---|
voicewake.routing.get |
ندارد | { 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}هر target مسیر دقیقاً از یکی از موارد زیر پشتیبانی میکند:
{ "mode": "current" }{ "agentId": "main" }{ "sessionKey": "agent:main:main" }
محدودیتها: حداکثر 32 مسیر و متن محرک با حداکثر 64 نویسه. محرکهای مسیر برای تطبیق و تشخیص تکراریبودن با تبدیل حروف به کوچک، حذف علائم نگارشی ابتدا و انتهای هر واژه و یکیکردن فاصلههای سفید نرمالسازی میشوند ("Hey, Bot!!" و "hey bot" با هم تطبیق دارند و تکراری محسوب میشوند) — این نرمالسازی از حذف ساده فاصلههای ابتدا و انتها که برای فهرست سراسری محرکهای بالا استفاده میشود، سختگیرانهتر است.
رویدادها
| رویداد | محتوای پیام |
|---|---|
voicewake.changed |
{ triggers: string[] } |
voicewake.routing.changed |
{ config: VoiceWakeRoutingConfig } |
هر دو برای همه کلاینتهای WebSocket دارای دامنه دسترسی خواندن (برنامه macOS، WebChat و موارد مشابه) و همه Nodeهای متصل پخش میشوند. هر Node بلافاصله پس از اتصال، هر دو را بهصورت ارسال اولیه یک تصویر لحظهای نیز دریافت میکند.
رفتار کلاینت
- macOS:
voicewake.set/voicewake.getرا فراخوانی میکند و برای همگامماندن با سایر کلاینتها بهvoicewake.changedگوش میدهد. - iOS:
voicewake.set/voicewake.getرا فراخوانی میکند و برای پاسخگو نگهداشتن تشخیص محلی واژه بیدارباش بهvoicewake.changedگوش میدهد. - Android:
voicewake.set/voicewake.getرا فراخوانی میکند، بهvoicewake.changedگوش میدهد و هنگام فعالبودنvoiceWakeرا اعلام میکند. تشخیص روی دستگاه و فقط در پیشزمینه باقی میماند؛ هنگامی که Talk، دیکته دستی، ضبط یادداشت صوتی یا گفتار پیام کنترل صدا را در اختیار دارد، متوقف میشود.