Ứng dụng Android (Node)
Lưu ý: Ứng dụng Android chưa được phát hành công khai. Mã nguồn có sẵn trong kho OpenClaw dướiapps/android. Bạn có thể tự xây dựng bằng Java 17 và Android SDK (./gradlew :app:assemblePlayDebug). Xem apps/android/README.md để biết hướng dẫn xây dựng.
Hỗ trợ snapshot
- Vai trò: ứng dụng node đồng hành (Android không lưu trữ Gateway).
- Yêu cầu Gateway: có (chạy trên macOS, Linux, hoặc Windows qua WSL2).
- Cài đặt: Bắt đầu + Ghép đôi.
- Gateway: Hướng dẫn + Cấu hình.
- Giao thức: Giao thức Gateway (nodes + control plane).
Kiểm soát hệ thống
Kiểm soát hệ thống (launchd/systemd) nằm trên máy chủ Gateway. Xem Gateway.Hướng dẫn kết nối
Ứng dụng node Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway Android kết nối trực tiếp đến Gateway WebSocket (mặc địnhws://<host>:18789) và sử dụng ghép đôi thiết bị (role: node).
Điều kiện tiên quyết
- Có thể chạy Gateway trên máy “chủ”.
- Thiết bị/emulator Android có thể truy cập WebSocket của gateway:
- Cùng mạng LAN với mDNS/NSD, hoặc
- Cùng mạng Tailscale sử dụng Wide-Area Bonjour / unicast DNS-SD (xem bên dưới), hoặc
- Thủ công nhập host/port của gateway (dự phòng)
- Có thể chạy CLI (
openclaw) trên máy gateway (hoặc qua SSH).
1) Khởi động Gateway
listening on ws://0.0.0.0:18789
- Đặt
gateway.bind: "tailnet"trong~/.openclaw/openclaw.jsontrên máy chủ gateway. - Khởi động lại Gateway / ứng dụng menubar macOS.
2) Xác minh phát hiện (tùy chọn)
Từ máy gateway:Phát hiện Tailnet (Vienna ⇄ London) qua unicast DNS-SD
Phát hiện NSD/mDNS của Android sẽ không vượt qua các mạng. Nếu node Android và gateway ở trên các mạng khác nhau nhưng kết nối qua Tailscale, sử dụng Wide-Area Bonjour / unicast DNS-SD thay thế:- Thiết lập một vùng DNS-SD (ví dụ
openclaw.internal.) trên máy chủ gateway và công bố các bản ghi_openclaw-gw._tcp. - Cấu hình Tailscale split DNS cho miền đã chọn trỏ vào máy chủ DNS đó.
3) Kết nối từ Android
Trong ứng dụng Android:- Ứng dụng giữ kết nối gateway thông qua một dịch vụ nền (thông báo liên tục).
- Mở tab Connect.
- Sử dụng Setup Code hoặc chế độ Manual.
- Nếu phát hiện bị chặn, sử dụng host/port thủ công (và TLS/token/mật khẩu khi cần) trong Advanced controls.
- Điểm cuối thủ công (nếu được bật), nếu không
- Gateway cuối cùng được phát hiện (nỗ lực tốt nhất).
4) Phê duyệt ghép đôi (CLI)
Trên máy gateway:5) Xác minh node đã kết nối
-
Qua trạng thái nodes:
-
Qua Gateway:
6) Chat + lịch sử
Tab Chat của Android hỗ trợ lựa chọn phiên (mặc địnhmain, cùng với các phiên khác đã tồn tại):
- Lịch sử:
chat.history - Gửi:
chat.send - Cập nhật đẩy (nỗ lực tốt nhất):
chat.subscribe→event:"chat"
7) Canvas + camera
Máy chủ Canvas Gateway (khuyến nghị cho nội dung web)
Nếu muốn node hiển thị HTML/CSS/JS thực mà agent có thể chỉnh sửa trên đĩa, hãy trỏ node vào máy chủ canvas của Gateway. Lưu ý: nodes tải canvas từ máy chủ HTTP của Gateway (cùng cổng vớigateway.port, mặc định 18789).
-
Tạo
~/.openclaw/workspace/canvas/index.htmltrên máy chủ gateway. - Điều hướng node đến đó (LAN):
.local, ví dụ http://<gateway-magicdns>:18789/__openclaw__/canvas/.
Máy chủ này chèn một client tải lại trực tiếp vào HTML và tải lại khi có thay đổi tệp.
Máy chủ A2UI nằm tại http://<gateway-host>:18789/__openclaw__/a2ui/.
Lệnh Canvas (chỉ nền trước):
canvas.eval,canvas.snapshot,canvas.navigate(sử dụng{"url":""}hoặc{"url":"/"}để quay lại scaffold mặc định).canvas.snapshottrả về{ format, base64 }(mặc địnhformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLalias cũ)
camera.snap(jpg)camera.clip(mp4)
8) Voice + bề mặt lệnh Android mở rộng
- Voice: Android sử dụng một luồng mic bật/tắt duy nhất trong tab Voice với ghi âm và phát lại TTS (ElevenLabs khi được cấu hình, hệ thống TTS dự phòng). Voice dừng khi ứng dụng rời khỏi nền trước.
- Các công tắc wake/talk-mode của Voice hiện đã bị loại bỏ khỏi UX/runtime của Android.
- Các nhóm lệnh Android bổ sung (tùy thuộc vào thiết bị + quyền):
device.status,device.info,device.permissions,device.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer