Nodes and media
アクティブなコンピューターの存在状態
コンピュータのアクティブ状態は、接続中のどの macOS Node が最も最近、
物理的なマウスまたはキーボード入力を受け取ったかを Gateway に通知します。OpenClaw はこのシグナルを使用して、
1 台の Mac を active としてマークし、エージェントに安定したアクティブ Node のヒントを提供し、
ユーザーがいる可能性が最も高いコンピュータに Node 接続アラートをルーティングします。
これは、Gateway クライアントのライブ一覧であるシステムプレゼンスや、
モバイル Node を接続中として扱わずに最後に起動した時刻を記録する
永続的な node.presence.alive ビーコンとは別のものです。
要件
- OpenClaw macOS アプリがペアリングされ、Node モードで接続されていること。
- Settings -> Permissions -> Active computer detection が有効になっていること。デフォルトでは無効です。
- 署名済み OpenClaw アプリに Accessibility 権限が付与されていること。
- 接続アラートを使用する場合は、Notifications 権限も付与され、
Mac Node が
system.notifyを公開していること。
アクティビティレポートは現在、ネイティブ macOS Node によって実装されています。iOS、 Android、watchOS、およびヘッドレス Node ホストは、接続状態またはバックグラウンドでの 最終確認状態を報告できますが、アクティブコンピュータの指定対象にはなりません。
アクティブコンピュータを確認する
-
macOS アプリで Settings -> Permissions を開き、 Active computer detection を有効にして、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 秒に 1 回以下の頻度で報告します。アイドル中は 3 分ごとにキープアライブを 送信します。アイドル時間は 30 日を上限とし、非常に古いサンプルが時間の経過とともに 前方へずれて、誤って最新のコンピュータとして扱われないようにします。
Active computer detection を無効にすると、サンプリングが停止し、現在の Node 接続を介して 認証済みのクリアイベントが送信されます。Gateway はその Mac の保持済みアクティビティタイムスタンプを 直ちに削除してアクティブコンピュータを再計算しますが、その他の Node 機能や実行中の処理は 接続されたままです。接続中の Gateway がこのクリアアクションに対応していない古いバージョンの場合、 切断時のクリーンアップで保持済みアクティビティを削除できるよう、Mac Node は一度再接続します。
Gateway は、次のすべての条件を満たす場合にのみアクティビティを受け入れます。
- イベントが、その Node ID の現在の認証済み接続に属していること。
- Node に有効な
accessibility: true権限があること。 - ペイロードに範囲内の整数
idleSeconds値が含まれていること。
Gateway は自身の観測時刻から idleSeconds を減算して
lastActiveAtMs を算出します。Node が提供する実時間タイムスタンプは決して信頼しません。
接続中で対象となる Mac のうち、最新の lastActiveAtMs が選ばれます。同値の場合は、
最も新しいプレゼンス更新が使用されます。
プレゼンスはプロセスローカルであり、接続に紐づきます。現在のセッションの切断、 同じ Node ID を使用する別セッションへの置換、または Accessibility の取り消しが発生すると、 その Node のアクティビティ状態がクリアされ、アクティブな Mac が再計算されます。
プライバシーとモデルコンテキスト
アクティビティ共有はデフォルトで無効であり、UI 自動化に使用される Accessibility の付与とは 別のものです。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 すべてへの配信を試みます。 - 以降の再接続では通知されません。Gateway は正常な接続を ペアリングメタデータに記録するため、Gateway を再起動しても、 以前に接続されたすべての Node にアラートが再送されることはありません。
アラートは認証済み Node ID に紐づきます。同じ Node の置換セッションは、 保留中の初回接続アラートを引き継ぎます。配信の実行時にその 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 のトラブルシューティングを参照してください。