Nodes and media
アクティブなコンピューターの存在状態
アクティブなコンピューターのプレゼンスは、接続中のどの macOS Node が直近の物理的なマウスまたはキーボード入力を受け取ったかを Gateway に通知します。OpenClaw はこのシグナルを使用して、1 台の Mac を active としてマークし、エージェントに安定したアクティブ Node のヒントを提供し、ユーザーが最も存在している可能性が高いコンピューターへ Node 接続アラートをルーティングします。
これは、Gateway クライアントのライブ名簿であるシステムプレゼンスや、モバイル Node を接続中として扱わずに最後に起動した時刻を記録する永続的な node.presence.alive ビーコンとは別のものです。
要件
- OpenClaw macOS アプリがペアリングされ、Node モードで接続されている。
- 署名済み OpenClaw アプリに Accessibility 権限が付与されている。
- 接続アラートを使用する場合は、Notifications 権限も付与され、Mac Node が
system.notifyを公開している。
アクティビティの報告は現在、ネイティブ macOS Node に実装されています。iOS、Android、watchOS、およびヘッドレス Node ホストは、接続状態またはバックグラウンドでの最終確認状態を報告できますが、アクティブなコンピューターの指定候補にはなりません。
アクティブなコンピューターを確認する
-
macOS アプリで Settings -> Permissions を開き、macOS System Settings で Accessibility を許可します。
-
Mac Node が接続されていることを確認します。
bash openclaw nodes status --connected -
その Mac でマウスを動かすかキーを押してから、次を実行します。
bash openclaw nodes statusopenclaw nodes describe --node <node-id-or-name>
対象となる Mac のうち、情報が最も新しいものが active としてマークされます。ステータス出力には最後の入力からの経過時間が表示され、describe では active、lastActiveAtMs、presenceUpdatedAtMs が公開されます。アクティビティは意図的にまとめて処理されるため、直近の報告後に発生した別の入力が表示に反映されるまで、最大約 15 秒かかる場合があります。
アクティビティがプレゼンスになる仕組み
macOS レポーターは、HID システムのアイドルクロックを 2 秒ごとにサンプリングします。Node 接続が準備完了になったときに一度報告し、その後は新しい物理的アクティビティを 15 秒に一度以下の頻度で報告します。アイドル中は 3 分ごとにキープアライブを送信します。非常に古いサンプルが時間の経過とともに進んで誤って最新のコンピューターにならないように、アイドル時間は 30 日を上限とします。
Gateway は、次のすべての条件を満たす場合にのみアクティビティを受け入れます。
- イベントが、その Node ID に対する現在の認証済み接続に属している。
- Node に有効な
accessibility: true権限がある。 - ペイロードに範囲内の整数値
idleSecondsが含まれている。
Gateway は、自身が観測した時刻から idleSeconds を差し引いて lastActiveAtMs を算出します。Node が提供した実時刻のタイムスタンプは決して信頼しません。接続中で対象となる Mac のうち、lastActiveAtMs が最も新しいものが選ばれます。同値の場合は、プレゼンスの更新が最も新しいものが選ばれます。
プレゼンスはプロセスローカルであり、接続に紐付けられます。現在のセッションを切断した場合、同じ Node ID を使用する別のセッションで置き換えた場合、または Accessibility を取り消した場合、その Node のアクティビティ状態は消去され、アクティブな Mac が再計算されます。
プライバシーとモデルコンテキスト
OpenClaw が送信するのはアイドル時間であり、入力内容ではありません。キーの値、マウス座標、アプリケーション名、ウィンドウタイトル、または生の入力イベントは送信しません。macOS レポーターはハードウェアの HID 状態を読み取るため、合成されたコンピューター制御イベントによって、自動操作中の Mac がユーザー自身の物理的に使用したコンピューターとして扱われることはありません。
継続的なアクティビティによって、モデル向けのシステムイベントが生成されることはありません。動的なランタイム行には、認証済みの Node ID のみが含まれます。
active_node=<node-id>プロンプトインジェクションとキャッシュの変動を避けるため、正確なタイムスタンプと Node が制御する表示名はプロンプトに含まれません。エージェントが最新の詳細情報を必要とする場合は、代わりに nodes ツールで node.list または node.describe を読み取れます。
接続アラートのルーティング方法
Node が Gateway ハンドシェイクを完了した後、OpenClaw は接続中の Mac が最初のアクティビティサンプルを送信できるように 750 ミリ秒待機します。その後、接続中で通知機能を持つ Mac のうち、アクティビティが最も新しいものへの送信を試みます。
- プライマリ配信が成功した場合、ほかの Mac はアラートを受信しません。
- アクティブな Mac が存在しない場合、またはプライマリ配信が失敗した場合、OpenClaw は 5 秒待機してから、
system.notifyを公開している残りの接続中 Mac すべてへの送信を試みます。 - 同じ Node の再接続アラートは、実際の配信試行後 5 分間抑制され、接続の頻繁な切り替わりによって通知が大量に発生することを防ぎます。
アラートは特定の Node 接続に紐付けられます。切断または置換された送信元セッションが、以前にスケジュールされたアラートを完了することはできません。また、置換後の送信先接続は、引き続きフォールバック配信に参加できます。
トラブルシューティング
| 症状 | 確認事項 |
|---|---|
active とマークされた行がない |
ネイティブ macOS Node が接続されており、openclaw nodes describe --node <id> に permissions.accessibility: true と表示されることを確認してください。 |
| 間違った Mac がアクティブなままになる | その Mac を物理的に操作し、まとめて処理される時間枠が経過するのを待ってから、openclaw nodes status を再実行してください。合成されたコンピューター制御操作は対象になりません。 |
| 最終入力データが消える | Mac が切断されたか、Node セッションが置き換えられたか、Accessibility が取り消されたかを確認してください。いずれの条件でも、意図的にアクティビティが消去されます。 |
| 複数の Mac にアラートが表示される | プライマリ配信が利用できないか失敗したため、遅延フォールバックが実行されました。アクティブな Mac が接続され、通知を許可し、system.notify を公開していることを確認してください。 |
| エージェントがアクティブな Mac に言及しない | アクティビティの変更後に新しいターンを開始してください。ランタイムのヒントは安定かつコンパクトです。正確な最新メタデータを取得するには nodes ツールを使用してください。 |
TCC の復旧については、macOS の権限を参照してください。Node の接続およびコマンドの失敗については、Node のトラブルシューティングを参照してください。