Nodes and media
Perintah lokasi
TL;DR
location.getadalah perintah node, yang dipanggil melaluinode.invokeatauopenclaw nodes location get.- Nonaktif secara default.
- Build Android pihak ketiga menggunakan pemilih: Nonaktif / Saat Digunakan / Selalu. Build Play tetap menggunakan Nonaktif / Saat Digunakan.
- Lokasi Presisi adalah tombol alih terpisah.
Mengapa menggunakan pemilih (bukan sekadar tombol alih)
Izin lokasi OS memiliki beberapa tingkat. Lokasi presisi juga merupakan izin OS terpisah (iOS 14+ "Precise", Android "fine" vs "coarse"). Pemilih dalam aplikasi menentukan mode yang diminta, tetapi OS tetap menentukan izin yang sebenarnya diberikan.
Model pengaturan
Per perangkat node:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
Perilaku UI:
- Memilih
whileUsingakan meminta izin latar depan. - Memilih
alwaysdalam build Android pihak ketiga akan terlebih dahulu meminta izin latar depan, menjelaskan akses latar belakang, lalu membuka pengaturan aplikasi Android untuk memberikan izin Allow all the time secara terpisah. - Build Android Play tidak mendeklarasikan izin lokasi latar belakang atau menampilkan
always. - Jika OS menolak tingkat yang diminta, aplikasi kembali ke tingkat tertinggi yang telah diberikan dan menampilkan status.
Pemetaan izin (node.permissions)
Opsional. Node macOS melaporkan location melalui peta permissions pada node.list/node.describe; iOS/Android mungkin tidak menyertakannya.
Perintah: location.get
Dipanggil melalui node.invoke, atau pembantu CLI:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000Parameter:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}Flag CLI dipetakan secara langsung: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.
Payload respons:
{ "lat": 48.20849, "lon": 16.37208, "accuracyMeters": 12.5, "altitudeMeters": 182.0, "speedMps": 0.0, "headingDeg": 270.0, "timestamp": "2026-01-03T12:34:56.000Z", "isPrecise": true, "source": "gps|wifi|cell|unknown"}Kesalahan (kode stabil):
LOCATION_DISABLED: pemilih dinonaktifkan.LOCATION_PERMISSION_REQUIRED: izin untuk mode yang diminta tidak tersedia.LOCATION_BACKGROUND_UNAVAILABLE: aplikasi berada di latar belakang, tetapi hanya izin Saat Digunakan yang diberikan.LOCATION_TIMEOUT: lokasi tidak ditemukan tepat waktu.LOCATION_UNAVAILABLE: kegagalan sistem atau tidak ada penyedia.
Perilaku latar belakang
- Build Android pihak ketiga menerima
location.getdi latar belakang hanya ketika pengguna memilihAlwaysdan Android memberikan izin lokasi latar belakang. Layanan node persisten yang ada menambahkan jenis layananlocationdan menampilkanLocation: Alwayssaat aktif. - Build Android Play dan mode
While Usingmenolaklocation.getsaat berada di latar belakang. - Platform node lainnya mungkin memiliki perilaku berbeda.
Host node Linux
Plugin Node Linux bawaan menambahkan location.get ke layanan CLI openclaw node, termasuk host headless tanpa aplikasi desktop Linux. Lokasi dinonaktifkan secara default. Aktifkan di entri plugin, lalu mulai ulang layanan node:
{ plugins: { entries: { "linux-node": { config: { location: { enabled: true }, }, }, }, },}Instal GeoClue2 dan demo where-am-i miliknya (geoclue-2-demo pada Debian dan Ubuntu). Pengguna layanan node harus diizinkan oleh kebijakan GeoClue dan agen otorisasi milik host.
Plugin menggunakan where-am-i, bukan serangkaian panggilan busctl. GeoClue mengaitkan pembuatan klien, properti, pemulaian, pembaruan, dan penghentian dengan satu koneksi klien D-Bus; demo mempertahankan seluruh siklus hidup tersebut bersama-sama, sedangkan subproses busctl yang terpisah tidak. Tidak ada dependensi npm yang ditambahkan.
Linux memetakan coarse, balanced, dan precise ke tingkat akurasi GeoClue 4, 6, dan 8. Sistem memvalidasi maxAgeMs terhadap stempel waktu yang dikembalikan. Demo GeoClue tidak mengekspos penyedia yang dipilih, sehingga source adalah unknown; isPrecise bernilai true hanya ketika akurasi yang dilaporkan adalah 100 meter atau lebih baik.
Linux menggunakan kesalahan stabil yang sama: LOCATION_DISABLED, LOCATION_TIMEOUT, dan LOCATION_UNAVAILABLE.
Integrasi model/peralatan
- Alat agen: tindakan
location_getdari alatnodes(node diperlukan). - CLI:
openclaw nodes location get --node <id>. - Pedoman agen: hanya panggil ketika pengguna telah mengaktifkan lokasi dan memahami cakupannya.
Teks UX (disarankan)
- Nonaktif: "Berbagi lokasi dinonaktifkan."
- Saat Digunakan: "Hanya saat OpenClaw terbuka."
- Selalu: "Izinkan pemeriksaan lokasi yang diminta saat OpenClaw berada di latar belakang."
- Presisi: "Gunakan lokasi GPS presisi. Nonaktifkan untuk membagikan perkiraan lokasi."