Platforms overview
اپلیکیشن Android
نمای کلی پشتیبانی
- نقش: برنامه Node همراه (Android میزبان Gateway نیست).
- Gateway الزامی است: بله (آن را در macOS، Linux یا Windows از طریق WSL2 اجرا کنید).
- نصب: Google Play یا
OpenClaw-Android.apkاز یک نسخه GitHub پشتیبانیشده، شروع به کار برای Gateway و سپس جفتسازی. - Gateway: راهنمای عملیاتی + پیکربندی.
- پروتکلها: پروتکل Gateway (Nodeها + صفحه کنترل).
- Settings → OpenClaw هنگامیکه اتصال اپراتور دارای
operator.adminباشد و Gateway ازopenclaw.chatپشتیبانی کند، یک دستیار اختصاصی تنظیمات Gateway را باز میکند. گفتوگوی راهاندازی آن از Chat عادی جدا میماند، پاسخهای محرمانه را بهصورت محلی میپوشاند و فقط پس از لمس Open Chat به Chat منتقل میشود.
کنترل سیستم (launchd/systemd) در میزبان Gateway انجام میشود — به Gateway مراجعه کنید.
نشستهای همزمان Gateway
هر Gateway را یکبار جفت کنید، سپس Settings → Gateway را باز کنید. علامت تیک، Gateway متمرکز را مشخص میکند و هر کلید تعیین میکند که آیا نشست اپراتور یک Gateway غیرمتمرکز متصل بماند یا نه. Gatewayهای فعال هنگامیکه برنامه در پیشزمینه است، مستقل از یکدیگر دوباره متصل میشوند؛ بنابراین تغییر تمرکز باعث قطع اتصال بقیه نمیشود. فقط Gateway متمرکز مالک نشست Node در Android و قابلیتهای دستگاه است؛ این کار مانع میشود Gatewayهای همزمان فرمانهای دوربین، موقعیت مکانی، صفحهنمایش یا اعلان را به یک تلفن واحد صادر کنند. پس از خروج برنامه از پیشزمینه، Android ممکن است اتصالهای ثانویه را تعلیق کند.
همراه Wear OS
همراه Wear OS از اتصال احراز هویتشده Gateway در تلفن Android جفتشده استفاده میکند؛ ساعت هرگز اطلاعات ورود Gateway را دریافت یا ذخیره نمیکند. این همراه میتواند عاملها و نشستها را انتخاب کند، رونوشتهای محدود را بخواند، پاسخهای متنی یا دیکتهشده ارسال کند، اجرای فعال را لغو کند، Talk بلادرنگ را در نشست انتخابشده آغاز کند و Gateway تلفن جفتشده را متصل یا قطع کند. همچنین اعلانهای محلی پاسخ، ظاهر تیره یا روشن و گفتار خودکار اختیاری برای پاسخها را ارائه میدهد. کنترلهای عامل و Gateway برای بهروزرسانیهای غیرهمزمان تلفن و ساعت از طریق مذاکره قابلیتها تعیین میشوند. Talk بلادرنگ صدای میکروفون و پخش را از طریق یک کانال موقت Data Layer در Wear OS جابهجا میکند و با از دست رفتن تلفن انتخابشده، اتصال Gateway یا کانال صوتی متوقف میشود.
نصب خارج از Google Play
نسخههای نهایی و اصلاحی عادی GitHub شامل یک OpenClaw-Android.apk عمومی و OpenClaw-Android-SHA256SUMS.txt هستند. APK از برچسب نسخه ساخته میشود، با کلید انتشار Android متعلق به OpenClaw امضا میشود و منشأ GitHub Actions را به همراه دارد.
یک نسخه را انتخاب کنید که هر دو دارایی را فهرست میکند؛ سپس پیش از نصب جانبی، همان برچسب دقیق را دانلود و تأیید کنید:
release_tag=vYYYY.M.PATCHgh release download "$release_tag" \ --repo openclaw/openclaw \ --pattern OpenClaw-Android.apk \ --pattern OpenClaw-Android-SHA256SUMS.txtsha256sum --check OpenClaw-Android-SHA256SUMS.txtgh attestation verify OpenClaw-Android.apk \ --repo openclaw/openclaw \ --signer-workflow openclaw/openclaw/.github/workflows/android-release.yml \ --source-ref "refs/tags/${release_tag}" \ --deny-self-hosted-runnersبازتاب و کنترل Android از یک Mac راه دور
scrcpy صفحه Android را در یک پنجره macOS بازتاب میدهد و ورودی صفحهکلید و اشارهگر را از طریق Android Debug Bridge (ADB) منتقل میکند. این یک گردشکار سمت اپراتور و جدا از اتصال Node متعلق به OpenClaw است. زمانی مفید است که دستگاه Android و Mac در مکانهای متفاوتی باشند، اما یک شبکه خصوصی Tailscale مشترک داشته باشند.
پیش از شروع
-
Tailscale را روی دستگاه Android و Mac نصب کنید و هر دو را به یک tailnet متصل کنید.
-
در Android، Developer options و USB debugging را فعال کنید. Android 16 گزینه Wireless debugging را در Settings > System > Developer options قرار میدهد. به گزینههای توسعهدهنده Android مراجعه کنید.
-
scrcpy و ADB را روی Mac نصب کنید:
bash brew install scrcpybrew install --cask android-platform-tools -
برای نخستین اتصال، دستگاه Android را در دسترس نگه دارید. پیش از آنکه هر Mac بتواند دستگاه را کنترل کند، Android باید کلید ADB آن Mac را تأیید کند.
فعالسازی ADB روی TCP
برای راهاندازی اولیه، دستگاه Android را از طریق USB به یک رایانه مورد اعتماد متصل کنید و درخواست اشکالزدایی آن را تأیید کنید. سپس اجرا کنید:
adb devicesadb tcpip 5555اکنون میتوانید USB را جدا کنید. اگر پس از راهاندازی مجدد دستگاه یا بازنشانی اشکالزدایی، درگاه 5555 دیگر شنونده نبود، این مرحله راهاندازی محلی را تکرار کنید. Android 11 و نسخههای جدیدتر نیز میتوانند اعتماد اولیه را با Wireless debugging > Pair device with pairing code و adb pair برقرار کنند.
اجازه دسترسی فقط به Mac کنترلکننده
tailnetهای دارای مجوزهای محدود باید صریحاً به Mac کنترلکننده اجازه دهند به درگاه TCP شماره 5555 در دستگاه Android دسترسی پیدا کند. یک قاعده محدود به خطمشی tailnet اضافه کنید و نشانیهای نمونه را با IPهای پایدار Tailscale دو دستگاه جایگزین کنید:
{ grants: [ { src: ["<remote-mac-tailnet-ip>"], dst: ["<android-tailnet-ip>"], ip: ["tcp:5555"], }, ],}برای نامهای مستعار میزبان و دیگر گزینشگرها، به مجوزهای Tailscale مراجعه کنید. این درگاه را در اختیار اینترنت عمومی قرار ندهید و آن را با Funnel در معرض دسترسی نگذارید: یک کلاینت مجاز ADB کنترل گستردهای بر دستگاه دارد.
اتصال و آغاز بازتاب
در Mac راه دور:
adb connect <android-tailnet-ip>:5555adb devicesscrcpy --serial <android-tailnet-ip>:5555نخستین adb connect از این Mac یک کادر مجوز در Android نمایش میدهد. قفل دستگاه را باز کنید، اثر انگشت کلید را تأیید کنید و فقط درصورتیکه Mac مورد اعتماد است، Always allow from this computer را انتخاب کنید. ورودی موفق adb devices با device پایان مییابد؛ unauthorized یعنی درخواست روی دستگاه تأیید نشده است.
پس از باز شدن پنجره scrcpy، مستقیماً از آن استفاده کنید یا آن را با یک ابزار خودکارسازی صفحه macOS مانند Peekaboo هدف بگیرید. scrcpy نمایشگر و ورودی را منتقل میکند؛ Tailscale فقط مسیر شبکه خصوصی را فراهم میکند.
عیبیابی
Connection timed out: مجوز tailnet برای TCP 5555 را بررسی کنید. موفقیتtailscale pingدسترسپذیری همتا را ثابت میکند، نه اینکه خطمشی این درگاه TCP را مجاز میداند. باnc -vz <android-tailnet-ip> 5555از Mac آزمایش کنید.unauthorized: قفل Android را باز کنید و کلید ADB متعلق به Mac راه دور را تأیید کنید، یا ایستگاه کاری قدیمی را از Wireless debugging > Paired devices حذف و دوباره جفت کنید.Connection refused: دوباره بهصورت محلی متصل شوید وadb tcpip 5555را دوباره اجرا کنید.- بیش از یک دستگاه فهرست شده است: آرگومان صریح
--serial <android-tailnet-ip>:5555را حفظ کنید.
پس از پایان کار، scrcpy را ببندید و اتصال ADB را قطع کنید:
adb disconnect <android-tailnet-ip>:5555راهنمای عملیاتی اتصال
برنامه Node در Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android مستقیماً به WebSocket متعلق به Gateway متصل میشود و از جفتسازی دستگاه (role: node) استفاده میکند.
برای Tailscale یا میزبانهای عمومی، Android به یک نقطه پایانی امن نیاز دارد:
- ترجیحی: Tailscale Serve / Funnel با
https://<magicdns>/wss://<magicdns> - همچنین پشتیبانی میشود: هر URL دیگر
wss://متعلق به Gateway با یک نقطه پایانی واقعی TLS ws://بدون رمزنگاری همچنان در نشانیهای LAN خصوصی / میزبانهای.local، بهعلاوهlocalhost،127.0.0.1و پل شبیهساز Android (10.0.2.2) پشتیبانی میشود؛ راهاندازی غیر-loopback بهطور خودکار از دسترسی محدود اپراتور استفاده میکند
پیشنیازها
- Gateway روی دستگاه دیگری در حال اجرا باشد (یا از طریق SSH قابل دسترسی باشد).
- دستگاه/شبیهساز Android بتواند به WebSocket متعلق به Gateway دسترسی پیدا کند:
- همان LAN با mDNS/NSD، یا
- همان tailnet متعلق به Tailscale با استفاده از Wide-Area Bonjour / unicast DNS-SD (پایین را ببینید)، یا
- میزبان/درگاه دستی Gateway (راهکار جایگزین)
- جفتسازی موبایل روی tailnet/عمومی از نقاط پایانی IP خام tailnet یعنی
ws://استفاده نمیکند. در عوض از Tailscale Serve یا یک URL دیگرwss://استفاده کنید. - CLI مربوط به
openclawبرای تأیید درخواستهای جفتسازی روی دستگاه Gateway (یا از طریق SSH) در دسترس باشد.
1. راهاندازی Gateway
openclaw gateway --port 18789 --verboseدر گزارشها تأیید کنید که چیزی شبیه مورد زیر میبینید:
listening on ws://0.0.0.0:18789
برای دسترسی راه دور Android از طریق Tailscale، بهجای اتصال خام tailnet، Serve/Funnel را ترجیح دهید:
openclaw gateway --tailscale serveاین یک نقطه پایانی امن wss:// / https:// در اختیار Android میگذارد. راهاندازی ساده gateway.bind: "tailnet" برای نخستین جفتسازی راه دور Android کافی نیست، مگر آنکه TLS را نیز جداگانه خاتمه دهید.
2. تأیید کشف (اختیاری)
از دستگاه Gateway:
dns-sd -B _openclaw-gw._tcp local.یادداشتهای بیشتر درباره اشکالزدایی: Bonjour.
اگر دامنه کشف گستردهای را نیز پیکربندی کردهاید، آن را با مورد زیر مقایسه کنید:
openclaw gateway discover --jsonاین فرمان local. و دامنه گسترده پیکربندیشده را در یک مرحله نشان میدهد و بهجای راهنماییهای صرفاً TXT از نقطه پایانی تفکیکشده سرویس استفاده میکند.
کشف بینشبکهای از طریق unicast DNS-SD
کشف NSD/mDNS در Android از مرز شبکهها عبور نمیکند. اگر Node متعلق به Android و Gateway در شبکههای متفاوتی باشند، اما از طریق Tailscale متصل شده باشند، بهجای آن از Wide-Area Bonjour / unicast DNS-SD استفاده کنید. کشف بهتنهایی برای جفتسازی Android روی tailnet/عمومی کافی نیست — مسیر کشفشده همچنان به یک نقطه پایانی امن (wss:// یا Tailscale Serve) نیاز دارد:
- یک ناحیه DNS-SD (برای نمونه
openclaw.internal.) روی میزبان Gateway راهاندازی و رکوردهای_openclaw-gw._tcpرا منتشر کنید. - DNS تفکیکی Tailscale را برای دامنه انتخابی خود پیکربندی کنید تا به آن سرور DNS اشاره کند.
جزئیات و نمونه پیکربندی CoreDNS: Bonjour.
3. اتصال از Android
در برنامه Android:
- برنامه اتصال Gateway خود را از طریق یک foreground service (اعلان پایدار) فعال نگه میدارد.
- زبانه Connect را باز کنید.
- از حالت Setup Code یا Manual استفاده کنید.
- اگر کشف مسدود شده است، در Advanced controls از میزبان/درگاه دستی استفاده کنید. برای میزبانهای LAN خصوصی،
ws://همچنان کار میکند. برای میزبانهای Tailscale/عمومی، TLS را فعال کنید و از یک نقطه پایانیwss:/// Tailscale Serve استفاده کنید.
پس از نخستین جفتسازی موفق، Android هنگام راهاندازی بهطور خودکار به Gateway جفتشده فعال دوباره متصل میشود (بهصورت بهترین تلاش برای Gatewayهای کشفشده، که باید در شبکه قابل مشاهده باشند).
کدهای راهاندازی رسمی، Android را بهعنوان یک Node متصل میکنند و بهطور پیشفرض از طریق wss:// دسترسی کامل اپراتوری Gateway را اعطا میکنند. راهاندازی متن ساده و غیر-loopback از طریق ws:// برای ایمنی توکن حامل، بهطور خودکار از دسترسی محدود استفاده میکند. تنظیمات ← Gateway
دسترسی کامل یا محدود را نشان میدهد. برای اتصال محدود، wss:// یا Tailscale Serve را پیکربندی کنید، در Control UI یا با
openclaw qr یک کد جدید با دسترسی کامل بسازید، سپس آن را در همان صفحه اسکن یا جایگذاری کنید و دوباره متصل شوید. اپراتورهایی
که نمایه کاهشیافته را میخواهند، میتوانند در Control UI گزینه دسترسی محدود را انتخاب کنند یا
openclaw qr --limited را اجرا کنند.
مدیریت Gatewayهای جفتشده
برنامه فهرستی از تمام Gatewayهایی که با آنها جفت شده است نگه میدارد؛ بنابراین میتوانید نشستهای اپراتوری را متصل نگه دارید و بدون جفتسازی مجدد، تمرکز را تغییر دهید:
- تنظیمات ← Gateway، Gatewayهای جفتشده را فهرست میکند و مورد متمرکز را علامت میزند. برای متمرکزشدن روی یک مورد، روی آن ضربه بزنید؛ سایر نشستهای اپراتوری فعال متصل میمانند.
- هر کلید تعیین میکند که آیا آن Gateway غیرمتمرکز، هنگامی که برنامه در پیشزمینه است، متصل بماند یا نه. Gateway متمرکز فعال میماند و مالک اتصال Node تلفن و قابلیتهای دستگاه است.
- زبانه اتصال هنگامی که بیش از یک Gateway جفت شده باشد، یک تعویضگر سریع نشان میدهد.
- اعتبارنامهها، توکنهای دستگاه، اعتماد TLS، تاریخچه گپ و پیامهای آفلاین در صف، برای هر Gateway جداگانه ذخیره میشوند. تغییر تمرکز هرگز وضعیت Gatewayها را با یکدیگر مخلوط نمیکند و پیامهایی که در حالت آفلاین در صف قرار گرفتهاند، فقط به Gateway مقصدشان تحویل داده میشوند.
- گزینه فراموشکردن، ورودی یک Gateway را همراه با اعتبارنامهها، توکنهای دستگاه، پین TLS و گپهای ذخیرهشده در حافظه نهان حذف میکند.
بیکنهای زندهبودن حضور
پس از اتصال نشست احراز هویتشده Node، و هنگامی که برنامه درحالیکه سرویس پیشزمینه همچنان متصل است به پسزمینه میرود، Android تابع node.event را با event: "node.presence.alive" فراخوانی میکند. Gateway تنها پس از مشخصشدن هویت احراز هویتشده دستگاه Node، این مورد را بهصورت lastSeenAtMs/lastSeenReason در فراداده Node/دستگاه جفتشده ثبت میکند.
برنامه فقط زمانی بیکن را با موفقیت ثبتشده محسوب میکند که پاسخ Gateway شامل handled: true باشد. Gatewayهای قدیمیتر ممکن است node.event را با { "ok": true } تأیید کنند؛ این پاسخ سازگار است، اما بهعنوان بهروزرسانی ماندگار آخرین مشاهده محسوب نمیشود.
4. تأیید جفتسازی (CLI)
در دستگاه Gateway:
openclaw devices listopenclaw devices approve <requestId>openclaw devices reject <requestId>جزئیات جفتسازی: جفتسازی.
اختیاری: اگر Node اندرویدی همیشه از یک زیرشبکه کاملاً کنترلشده متصل میشود، میتوانید با CIDRهای صریح یا IPهای دقیق، تأیید خودکار نخستین جفتسازی Node را فعال کنید:
{ gateway: { nodes: { pairing: { autoApproveCidrs: ["192.168.1.0/24"], }, }, },}این قابلیت بهطور پیشفرض غیرفعال است. فقط برای جفتسازی جدید role: node بدون دامنههای درخواستی اعمال میشود. جفتسازی اپراتور/مرورگر و هرگونه تغییر نقش، دامنه، فراداده یا کلید عمومی همچنان به تأیید دستی نیاز دارد.
5. بررسی اتصال Node
openclaw nodes statusopenclaw gateway call node.list --params "{}"6. گپ + تاریخچه
زبانه گپ Android از انتخاب نشست پشتیبانی میکند (پیشفرض main، بهعلاوه سایر نشستهای موجود):
- تاریخچه:
chat.history(برای نمایش عادیسازی میشود — برچسبهای دستوری درونخطی، بارهای XML فراخوانی ابزار بهصورت متن ساده (<tool_call>،<function_call>،<tool_calls>،<function_calls>و گونههای کوتاهشده) و توکنهای کنترلی مدل ASCII/تمامعرضِ نشتکرده حذف میشوند؛ ردیفهای دستیار با توکن خاموش مانندNO_REPLY/no_replyدقیق حذف میشوند؛ ردیفهای بیشازحد بزرگ ممکن است با جاینگهدار جایگزین شوند) - ارسال:
chat.send - ارسال ماندگار: هر ارسال (متن، تصاویر انتخابشده و یادداشتهای صوتی) پیش از هر تلاش شبکهای در یک صندوق خروجی روی دستگاه و مختص هر Gateway ثبت میشود؛ بنابراین بستهشدن برنامه نمیتواند ورودی ارسالشده را از بین ببرد. ارسالهایی که در حالت آفلاین در صف قرار گرفتهاند، پس از اتصال مجدد بهترتیب و با کلیدهای پایدار همتوانی تحویل داده میشوند و یک ارسال فقط پس از مشاهده نوبت در
chat.historyمرجع کنار گذاشته میشود — تأیید دریافت بهتنهایی مدرک تحویل محسوب نمیشود. نتایج مبهم (ازدسترفتن تأیید دریافت، بستهشدن برنامه حین ارسال، یا راهاندازی مجدد Gateway پیش از نوشتن رونوشت) بهجای ارسال مجدد خودکار، بهصورت ردیفهای قابلمشاهده با گزینههای صریح تلاش مجدد/حذف نمایش داده میشوند. فرمانهای اسلش هرگز پس از اتصال مجدد بهطور خودکار تکرار نمیشوند؛ آنها برای تلاش مجدد صریح متوقف میمانند. صف محدود است (50 پیام و 48 MB بایت پیوست برای هر Gateway) و ردیفهای ارسالنشده پس از 48 ساعت منقضی میشوند. پیشنویسهای کادر نوشتن که هرگز ارسال نشدهاند، در برابر پایان فرایند ماندگار نیستند. - بهروزرسانیهای ارسالی (با حداکثر تلاش):
chat.subscribe->event:"chat" - گوشدادن: روی پیام دستیار لمس طولانی کنید و گوشدادن را انتخاب کنید؛ صدا از طریق
tts.speakدر Gateway و با زنجیره ارائهدهنده TTS پیکربندیشده رندر میشود و وقتی Gateway نتواند صدا را رندر کند، از TTS سیستمی روی دستگاه استفاده میشود. پخش با تغییر نشست، گپ جدید، رفتن برنامه به پسزمینه یا بستهشدن گپ متوقف میشود.
7. بوم + دوربین
میزبان بوم Gateway (توصیهشده برای محتوای وب)
برای اینکه Node بتواند HTML/CSS/JS واقعی را که عامل روی دیسک ویرایش میکند نمایش دهد، Node را به میزبان بوم Gateway هدایت کنید.
- فایل
~/.openclaw/workspace/canvas/index.htmlرا در میزبان Gateway ایجاد کنید. - Node را به آن هدایت کنید (LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'Tailnet (اختیاری): اگر هر دو دستگاه روی Tailscale هستند، بهجای .local از نام MagicDNS یا IP شبکه tailnet استفاده کنید؛ برای نمونه http://<gateway-magicdns>:18789/__openclaw__/canvas/.
این سرور یک کلاینت بارگذاری مجدد زنده را در HTML تزریق میکند و هنگام تغییر فایلها دوباره بارگذاری میشود. Gateway همچنین /__openclaw__/a2ui/ را ارائه میکند، اما برنامه Android صفحات راهدور A2UI را فقط برای رندر در نظر میگیرد. فرمانهای A2UI دارای قابلیت اقدام از صفحه A2UI همراه برنامه و تحت مالکیت برنامه استفاده میکنند.
فرمانهای بوم (فقط در پیشزمینه):
canvas.eval،canvas.snapshot،canvas.navigate(برای بازگشت به داربست پیشفرض از{"url":""}یا{"url":"/"}استفاده کنید).canvas.snapshotمقدار{ format, base64 }را برمیگرداند (پیشفرضformat="jpeg").- A2UI:
canvas.a2ui.push،canvas.a2ui.reset(نام مستعار قدیمیcanvas.a2ui.pushJSONL). این موارد برای رندر دارای قابلیت اقدام از صفحه A2UI همراه برنامه و تحت مالکیت برنامه استفاده میکنند.
فرمانهای دوربین (فقط در پیشزمینه؛ منوط به مجوز): camera.snap (jpg)، camera.clip (mp4). برای پارامترها و ابزارهای کمکی CLI به Node دوربین مراجعه کنید.
8. صدا + سطح فرمان گسترده Android
- پیمایش پوسته Android شامل خانه، گپ و تنظیمات است. ورودی صوتی به کادر نوشتن گپ تعلق دارد؛ زبانه جداگانهای برای صدا وجود ندارد.
- برای تشخیص گفتار روی دستگاه که رونوشت را در پیشنویس درج میکند، روی میکروفون کادر نوشتن ضربه بزنید. برای ضبط پیوست یادداشت صوتی، میکروفون را طولانی فشار دهید. رابط کاربری بهجای حذف بیصدای تلاش، دردسترسنبودن تشخیص، مجوز ازدسترفته، خطاهای مشغولبودن/شبکه و نتایج بدون گفتار را گزارش میکند.
- حالت پیوسته گفتوگو را از شکل موج گپ آغاز کنید. دیکته، ضبط یادداشت صوتی و گفتوگو مسیرهای میکروفون ناسازگار با یکدیگر هستند.
- حالت گفتوگو، پیش از آغاز ضبط سرویس پیشزمینه موجود را از
connectedDeviceبهconnectedDevice|microphoneارتقا میدهد و پس از توقف حالت گفتوگو آن را تنزل میدهد. سرویس Node،FOREGROUND_SERVICE_CONNECTED_DEVICEرا باCHANGE_NETWORK_STATEاعلام میکند؛ Android 14+ همچنین به اعلانFOREGROUND_SERVICE_MICROPHONE، اعطای زماناجرایRECORD_AUDIOو نوع سرویس میکروفون در زمان اجرا نیاز دارد. - بهطور پیشفرض، گفتوگوی Android از تشخیص گفتار بومی، گپ Gateway و
talk.speakاز طریق ارائهدهنده گفتوگوی پیکربندیشده Gateway استفاده میکند. TTS سیستمی محلی فقط وقتی استفاده میشود کهtalk.speakدردسترس نباشد. - گفتوگوی Android فقط زمانی از رله بلادرنگ Gateway استفاده میکند که
talk.realtime.modeبرابر باrealtimeوtalk.realtime.transportبرابر باgateway-relayباشد. - Android قابلیت
voiceWakeرا اعلام نمیکند. برای ورودی صوتی از دیکته گپ، یادداشت صوتی یا گفتوگو استفاده کنید. - خانوادههای فرمان اضافی Android (دردسترسبودن به دستگاه، مجوزها و تنظیمات کاربر بستگی دارد):
device.status،device.info،device.permissions،device.healthdevice.appsفقط هنگامی که Settings > Phone Capabilities > Installed Apps فعال است؛ بهطور پیشفرض برنامههای قابلمشاهده در راهانداز را فهرست میکند (برای فهرست کامل،includeNonLaunchableرا ارسال کنید).notifications.list،notifications.actions(در ادامه ارسال اعلانها را ببینید)photos.latestcontacts.search،contacts.addcalendar.events،calendar.addcallLog.searchsms.searchmotion.activity،motion.pedometer
9. فایلهای فضای کاری (فقط خواندنی)
نمای کلی خانه شامل کارت فایلها است که فضای کاری عامل فعال را از طریق RPCهای فقطخواندنی agents.workspace.list / agents.workspace.get در Gateway مرور میکند: پیمایش سلسلهمراتبی پوشهها، پیشنمایش متن و تصویر و صدور از طریق برگه اشتراکگذاری Android. هیچ عملیات نوشتنی وجود ندارد و اندازه پیشنمایشها توسط Gateway محدود میشود.
بازبینی تأییدهای فرمان
یک اتصال اپراتوری با operator.admin، یا یک اتصال جفتشده
operator.approvals که Gateway صریحاً آن را هدف قرار داده است، میتواند درخواستهای اجرای
در انتظار را در تنظیمات -> تأییدها بازبینی کند. برنامه پیش از فعالکردن دکمهها،
رکورد پاکسازیشده تأیید را از Gateway بارگیری میکند، هرگونه
هشدار امنیتی و تصمیمهای دقیقی را که آن درخواست ارائه میکند نشان میدهد و
شناسه تأیید و نوع مالک را به Gateway ارسال میکند.
وضعیت تأیید با Control UI و سطوح گپ پشتیبانیشده مشترک است. نخستین پاسخ ثبتشده برنده است؛ Android آن نتیجه مرجع را حتی هنگامی که سطح دیگری ابتدا پاسخ داده باشد نمایش میدهد. اگر پاسخ رفع گم شود یا Gateway قطع شود، برنامه اقدام را قفلشده نگه میدارد و پیش از ارائه تصمیم دیگری، تأیید را دوباره میخواند.
Gatewayهایی که پیش از روشهای یکپارچه تأیید هستند، به روشهای ارسالشده و مختص اجرا بازمیگردند. بازبینی موارد در انتظار همچنان کار میکند، اما وضعیت نگهداریشده پایانه و نتیجه غنیتر میانسطحی به Gateway بهروزشده نیاز دارد.
پاسخ به پرسشهای عامل
گپ، پرسشهای در انتظار Gateway را بهصورت کارتهای بومی برای اتصالهای اپراتوری
با operator.questions (یا operator.admin) نشان میدهد. کارتها از گزینههای تکانتخابی و
چندانتخابی، توضیحات گزینهها، پاسخهای متنی آزاد سایر و
شمارش معکوس انقضا پشتیبانی میکنند. اتصالهای مجدد، پرسشهای در انتظار را از Gateway دوباره بارگیری میکنند. یک کارت
هنگامی قفل میشود که این دستگاه به آن پاسخ دهد، سطح دیگری ابتدا به آن پاسخ دهد، یا
پرسش منقضی یا لغو شود.
نقاط ورود دستیار
Android از اجرای OpenClaw با محرک دستیار سیستم (Google Assistant) پشتیبانی میکند. نگهداشتن دکمه خانه (یا محرک دیگری از نوع ACTION_ASSIST) برنامه را باز میکند؛ گفتن «Hey Google, ask OpenClaw <prompt>» با الگوی پرسوجوی App Actions اعلامشده برنامه مطابقت دارد و درخواست را بدون ارسال خودکار به کادر نوشتن گپ منتقل میکند.
این قابلیت از App Actions در Android (قابلیت shortcuts.xml) استفاده میکند که در مانیفست برنامه اعلام شده است. هیچ پیکربندی در سمت Gateway لازم نیست — intent دستیار کاملاً توسط برنامه Android مدیریت میشود.
ارسال اعلانها
Android میتواند اعلانهای دستگاه را بهصورت موارد node.event به Gateway ارسال کند. این قابلیت روی دستگاه و در برگه تنظیمات برنامه پیکربندی میشود — نه در پیکربندی gateway/openclaw.json.
| تنظیم | توضیحات |
|---|---|
| ارسال رویدادهای اعلان | کلید اصلی. بهطور پیشفرض خاموش است؛ ابتدا باید دسترسی شنوندهٔ اعلان اعطا شود. |
| فیلتر بسته | فهرست مجاز (فقط شناسههای بستهٔ فهرستشده ارسال میشوند) یا فهرست مسدود (پیشفرض: همهٔ بستهها بهجز شناسههای فهرستشده). بستهٔ خود OpenClaw در حالت فهرست مسدود همیشه مستثنا میشود تا از حلقههای ارسال جلوگیری شود. |
| ساعات سکوت | بازهٔ محلی شروع/پایان با قالب HH:mm که ارسال را متوقف میکند. بهطور پیشفرض غیرفعال است؛ پس از فعالسازی، مقادیر پیشفرض آن 22:00-07:00 هستند. |
| حداکثر رویدادها / دقیقه | محدودیت نرخ اعلانهای ارسالی برای هر دستگاه. مقدار پیشفرض 20 است. |
| کلید نشست مسیریابی | اختیاری. رویدادهای اعلان ارسالی را بهجای مسیر پیشفرض اعلان دستگاه، به یک نشست مشخص متصل میکند. |
اعلانهای WhatsApp، WhatsApp Business، Telegram، Telegram X، Discord و Signal همیشه مستثنا هستند. پیامهای آنها از قبل متعلق به نشستهای بومی کانال OpenClaw هستند؛ ارسال اعلان Android بهعنوان رویدادی جداگانه از Node ممکن است پاسخ را از طریق گفتوگوی اشتباه مسیریابی کند.