Nodes and media
位置情報コマンド
TL;DR
location.getは Node コマンドで、node.invokeまたはopenclaw nodes location getを介して呼び出されます。- デフォルトではオフです。
- Android のサードパーティビルドでは、Off / While Using / Always のセレクターを使用します。Play ビルドでは引き続き Off / While Using のみです。
- Precise Location は独立したトグルです。
スイッチだけでなくセレクターを使用する理由
OS の位置情報権限には複数のレベルがあります。正確な位置情報も独立した OS 権限です(iOS 14+ の「Precise」、Android の「fine」と「coarse」)。アプリ内のセレクターによって要求するモードが決まりますが、実際に付与する権限は引き続き OS が決定します。
設定モデル
Node デバイスごと:
location.enabledMode:off | whileUsing | alwayslocation.preciseEnabled: bool
UI の動作:
whileUsingを選択すると、フォアグラウンド権限を要求します。- Android のサードパーティビルドで
alwaysを選択すると、まずフォアグラウンド権限を要求し、バックグラウンドアクセスについて説明した後、独立した Allow all the time 権限を付与するために Android のアプリ設定を開きます。 - Android Play ビルドでは、バックグラウンド位置情報権限を宣言せず、
alwaysも表示しません。 - OS が要求されたレベルを拒否した場合、アプリは付与済みの最高レベルに戻し、ステータスを表示します。
権限のマッピング(node.permissions)
任意です。macOS Node は、node.list/node.describe の permissions マップを介して location を報告します。iOS/Android では省略される場合があります。
コマンド: location.get
node.invoke または CLI ヘルパーを介して呼び出します:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000パラメーター:
{ "timeoutMs": 10000, "maxAgeMs": 15000, "desiredAccuracy": "coarse|balanced|precise"}CLI フラグは直接対応します: --location-timeout -> timeoutMs、--max-age -> maxAgeMs、--accuracy -> desiredAccuracy。
レスポンスペイロード:
{ "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"}エラー(安定したコード):
LOCATION_DISABLED: セレクターがオフです。LOCATION_PERMISSION_REQUIRED: 要求されたモードに必要な権限がありません。LOCATION_BACKGROUND_UNAVAILABLE: アプリがバックグラウンドにありますが、While Using のみが付与されています。LOCATION_TIMEOUT: 時間内に位置情報を取得できませんでした。LOCATION_UNAVAILABLE: システム障害、またはプロバイダーがありません。
バックグラウンドでの動作
- Android のサードパーティビルドでは、ユーザーが
Alwaysを選択し、Android がバックグラウンド位置情報を許可した場合に限り、バックグラウンドでのlocation.getを受け付けます。既存の常駐 Node サービスはlocationサービスタイプを追加し、動作中はLocation: Alwaysを明示します。 - Android Play ビルドと
While Usingモードでは、バックグラウンド中のlocation.getを拒否します。 - その他の Node プラットフォームでは動作が異なる場合があります。
Linux Node ホスト
同梱の Linux Node Plugin は、Linux デスクトップアプリのないヘッドレスホストを含む CLI openclaw node サービスに location.get を追加します。位置情報はデフォルトでオフです。Plugin エントリで有効にしてから、Node サービスを再起動します:
{ plugins: { entries: { "linux-node": { config: { location: { enabled: true }, }, }, }, },}GeoClue2 とその where-am-i デモ(Debian および Ubuntu では geoclue-2-demo)をインストールします。Node サービスのユーザーは、ホストの GeoClue ポリシーおよび認可エージェントによって許可されている必要があります。
Plugin は、一連の busctl 呼び出しの代わりに where-am-i を使用します。GeoClue では、クライアントの作成、プロパティ、開始、更新、停止が単一の D-Bus クライアント接続に関連付けられます。デモはこのライフサイクルをまとめて維持しますが、個別の busctl サブプロセスでは維持できません。npm 依存関係は追加されません。
Linux は coarse、balanced、precise を、それぞれ GeoClue の精度レベル 4、6、8 にマッピングします。返されたタイムスタンプに対して maxAgeMs を検証します。GeoClue のデモでは選択されたプロバイダーが公開されないため、source は unknown です。isPrecise は、報告された精度が 100 メートル以下の場合にのみ true になります。
Linux でも同じ安定したエラーを使用します: LOCATION_DISABLED、LOCATION_TIMEOUT、LOCATION_UNAVAILABLE。
モデル/ツール連携
- エージェントツール:
nodesツールのlocation_getアクション(Node が必要)。 - CLI:
openclaw nodes location get --node <id>。 - エージェントのガイドライン: ユーザーが位置情報を有効にし、その範囲を理解している場合にのみ呼び出します。
UX 文言(推奨)
- Off: 「位置情報の共有は無効です。」
- While Using: 「OpenClaw が開いているときのみ。」
- Always: 「OpenClaw がバックグラウンドにある間も、要求された位置情報の確認を許可します。」
- Precise: 「正確な GPS 位置情報を使用します。おおよその位置情報を共有するにはオフに切り替えてください。」