Tóm tắt
location.getlà một lệnh Node, được gọi quanode.invokehoặcopenclaw nodes location get.- Mặc định tắt.
- Các bản dựng Android của bên thứ ba sử dụng bộ chọn: Tắt / Khi đang sử dụng / Luôn luôn. Các bản dựng Play vẫn chỉ có Tắt / Khi đang sử dụng.
- Vị trí chính xác là một nút bật/tắt riêng biệt.
Tại sao dùng bộ chọn (thay vì chỉ một công tắc)
Quyền vị trí của hệ điều hành có nhiều cấp độ. Vị trí chính xác cũng là một quyền cấp riêng của hệ điều hành (iOS 14+ dùng “Chính xác”, Android dùng “chính xác” so với “gần đúng”). Bộ chọn trong ứng dụng quyết định chế độ được yêu cầu, nhưng hệ điều hành vẫn quyết định quyền thực tế được cấp.Mô hình cài đặt
Theo từng thiết bị Node:location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
- Việc chọn
whileUsingsẽ yêu cầu quyền truy cập khi ứng dụng ở tiền cảnh. - Việc chọn
alwaystrong bản dựng Android của bên thứ ba trước tiên sẽ yêu cầu quyền truy cập khi ứng dụng ở tiền cảnh, giải thích về quyền truy cập trong nền, sau đó mở phần cài đặt ứng dụng Android để cấp riêng quyền Allow all the time. - Các bản dựng Android Play không khai báo quyền truy cập vị trí trong nền hoặc hiển thị
always. - Nếu hệ điều hành từ chối cấp độ được yêu cầu, ứng dụng sẽ quay về cấp độ cao nhất đã được cấp và hiển thị trạng thái.
Ánh xạ quyền (node.permissions)
Không bắt buộc. Node macOS báo cáolocation qua ánh xạ permissions trên node.list/node.describe; iOS/Android có thể bỏ qua thông tin này.
Lệnh: location.get
Được gọi qua node.invoke hoặc trình trợ giúp CLI:
--location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Tải trọng phản hồi:
LOCATION_DISABLED: bộ chọn đang tắt.LOCATION_PERMISSION_REQUIRED: thiếu quyền cho chế độ được yêu cầu.LOCATION_BACKGROUND_UNAVAILABLE: ứng dụng đang chạy trong nền nhưng chỉ được cấp quyền Khi đang sử dụng.LOCATION_TIMEOUT: không xác định được vị trí kịp thời.LOCATION_UNAVAILABLE: lỗi hệ thống hoặc không có nhà cung cấp.
Hành vi trong nền
- Các bản dựng Android của bên thứ ba chỉ chấp nhận
location.gettrong nền khi người dùng đã chọnAlwaysvà Android đã cấp quyền truy cập vị trí trong nền. Dịch vụ Node thường trực hiện có bổ sung loại dịch vụlocationvà hiển thịLocation: Alwayskhi đang hoạt động. - Các bản dựng Android Play và chế độ
While Usingtừ chốilocation.getkhi ứng dụng đang chạy trong nền. - Các nền tảng Node khác có thể hoạt động khác.
Máy chủ Node Linux
Plugin Node Linux đi kèm bổ sunglocation.get vào dịch vụ CLI openclaw node, bao gồm cả các máy chủ không có giao diện không chạy ứng dụng máy tính Linux. Vị trí mặc định bị tắt. Bật tính năng này trong mục nhập Plugin, sau đó khởi động lại dịch vụ Node:
where-am-i của nó (geoclue-2-demo trên Debian và Ubuntu). Người dùng chạy dịch vụ Node phải được chính sách GeoClue và tác nhân ủy quyền của máy chủ cho phép.
Plugin sử dụng where-am-i thay vì một chuỗi lệnh gọi busctl. GeoClue liên kết việc tạo máy khách, thuộc tính, khởi động, cập nhật và dừng với một kết nối máy khách D-Bus duy nhất; bản demo duy trì toàn bộ vòng đời này cùng nhau, trong khi các tiến trình con busctl riêng biệt thì không. Không có phần phụ thuộc npm nào được thêm vào.
Linux ánh xạ coarse, balanced và precise sang các cấp độ chính xác GeoClue 4, 6 và 8. Hệ thống xác thực maxAgeMs dựa trên dấu thời gian được trả về. Bản demo của GeoClue không cung cấp nhà cung cấp đã chọn, vì vậy source là unknown; isPrecise chỉ là true khi độ chính xác được báo cáo là 100 mét trở xuống.
Linux sử dụng cùng các lỗi ổn định: LOCATION_DISABLED, LOCATION_TIMEOUT và LOCATION_UNAVAILABLE.
Tích hợp mô hình/công cụ
- Công cụ của tác nhân: hành động
location_getcủa công cụnodes(yêu cầu Node). - CLI:
openclaw nodes location get --node <id>. - Hướng dẫn dành cho tác nhân: chỉ gọi khi người dùng đã bật vị trí và hiểu phạm vi.
Nội dung UX (đề xuất)
- Tắt: “Chia sẻ vị trí đã bị tắt.”
- Khi đang sử dụng: “Chỉ khi OpenClaw đang mở.”
- Luôn luôn: “Cho phép các yêu cầu kiểm tra vị trí khi OpenClaw đang chạy trong nền.”
- Chính xác: “Sử dụng vị trí GPS chính xác. Tắt tùy chọn này để chia sẻ vị trí gần đúng.”