活动计算机在线状态
活动电脑在线状态会告诉 Gateway 哪个已连接的 macOS 节点最近接收到了活动。当你与 OpenClaw 应用交互时,基础在线状态即可工作,无需额外权限。可选的系统级在线状态检测还会包含其他应用中的物理鼠标和键盘活动。OpenClaw 使用该信号将一个 Mac 标记为 active,为智能体提供稳定的活动节点提示,并将节点连接警报路由到你最可能所在的电脑。
这是一种近期活动提示,而不是证明某条聊天消息由哪台电脑发送的证据。活动 Mac 可能与运行 Gateway 或智能体的电脑不同。设备状态和连接警报路由会在整个 Gateway 范围内选择最新符合条件的 Mac。智能体的提示词提示则会在与已认证请求者关联的节点中进行选择。它绝不会回退到另一个人的机器。共享所有者和未识别的回合可以收到未分配节点提示,并明确标记为未知人员身份。
核心在线状态工具将这些观察结果与人员和客户端的实时名册结合。它会保留活动来源,并单独识别共享或未分配的机器。持久的 node.presence.alive 信标会记录移动节点上次唤醒的时间,而不会将其视为已连接或建立用户活动。
要求¶
- OpenClaw macOS 应用已配对并以节点模式连接。
- 与 OpenClaw 应用交互以提供基础在线状态。仅仅运行或将该应用置于前台不算活动。
- 若要包含其他应用中的活动,请启用设置 -> 权限 -> 系统级在线状态检测,并授予已签名的 OpenClaw 应用 Accessibility。系统级检测默认关闭。
- 对于连接警报,还需授予 Notifications 权限,并且 Mac 节点暴露
system.notify。
活动报告仅由原生 macOS 节点实现。iOS、Android、watchOS 和无头节点主机可以报告连接或后台最后可见状态,但它们不会竞争活动电脑指定。
检查活动电脑¶
- 与 OpenClaw macOS 应用交互。此基础在线状态信号无需 Accessibility 权限。若要同时检测其他应用中的活动,请启用设置 -> 权限 -> 系统级在线状态检测,并在 macOS 系统设置中授予 Accessibility。
- 确认 Mac 节点已连接:
- 在该 Mac 上的 OpenClaw 中点击或输入,然后运行:
最新符合条件的 Mac 会被标记为 active。状态输出会显示其最后一次输入距今的时间;describe 会显示 active、lastActiveAtMs 和 presenceUpdatedAtMs。活动会被有意合并,因此在最近一次报告之后,显示可能需要最多约 15 秒才能反映另一次输入。
活动如何成为在线状态¶
macOS 应用会记录 OpenClaw 接收到的本地输入事件。当启用系统级检测并授予 Accessibility 时,它还会每两秒采样一次 HID 系统空闲时钟。报告会被合并:较新的活动最多每 15 秒发送一次,空闲时每三分钟发送一次保活。空闲时长上限为 30 天,因此非常旧的样本不会向前漂移并错误地成为最新的电脑。
禁用系统级在线状态检测或失去 Accessibility,会清除之前的系统级样本,并在已观察到应用本地活动时回退到应用本地活动。它不会关闭基础在线状态或断开其他节点功能。如果没有应用本地样本,该 Mac 将保持未选中状态,直到你与 OpenClaw 交互。
Gateway 仅在所有以下条件都为真时才接受活动:
- 该事件属于该节点 id 的当前已认证连接;
- 负载中包含有界的整数
idleSeconds值; - 来源是应用本地,或系统级且有效权限为
accessibility: true。没有来源的旧版报告被视为系统级。
Gateway 会从自身的观察时间中减去 idleSeconds,以推导 lastActiveAtMs。它从不信任节点提供的墙上时钟时间戳。在已连接且符合条件的 Mac 中,最新的 lastActiveAtMs 获胜;平局时使用最近的在线状态更新。
在线状态是进程本地且与连接绑定的。断开当前会话,或使用相同节点 id 的另一个会话替换它,会清除该节点的活动状态并重新计算活动 Mac。撤销 Accessibility 会使系统级活动失效,但应用本地活动仍然符合条件。
隐私和模型上下文¶
基础应用本地在线状态无需授予 Accessibility 即可使用。只有系统级检测是可选加入的,并且独立于用于 UI 自动化的 Accessibility 授权。OpenClaw 发送空闲时长和活动来源,而不是输入内容。它不发送按键值、鼠标坐标、应用名称、窗口标题或原始输入事件。
系统级检测读取硬件 HID 状态,因此合成的电脑控制事件不算作物理系统级活动。应用本地检测记录交付给 OpenClaw 的输入,并且不是事件来自物理设备的证明。
持续活动不会创建面向模型的系统事件。在回合准备时,动态上下文包含一个紧凑提示,其中只有已认证的节点 id:
当没有符合条件的已连接 Mac 具有当前在线状态时,提示为 active_node=unknown。这会清除之前的选择,而不是让智能体复用一台已断开的 Mac。它不会识别消息的源设备,也不意味着没有人正在使用电脑。
对于共享所有者或未识别的回合,身份标记为 active_node_identity=unknown;该机器上的活动不能确定谁使用了它。指定人员的提示需要匹配的已认证节点配置文件。设备名称、IP 地址和单个可见人员无法建立该关联。
精确时间戳和节点控制的显示名称不放入 prompt,以避免 prompt 注入和缓存抖动。只要所选节点 ID 保持不变,提示就保持逐字节一致。当代理需要当前详细信息时,presence 工具可以检查请求者及其设备。nodes 工具继续通过 node.list 或 node.describe 读取设备状态和控制能力。
连接警报如何路由¶
在节点完成批准后的首次成功 Gateway 握手后,OpenClaw 会等待 750 毫秒,以便正在连接的 Mac 提交其首个活动样本。然后,它会尝试使用活动最新且支持通知的已连接 Mac。
- 如果主投递成功,其他 Mac 不会收到警报。
- 如果没有可用的活动 Mac,或主投递失败,OpenClaw 会等待五秒,并尝试所有剩余已连接且暴露
system.notify的 Mac。 - 后续重连是静默的。Gateway 会在配对元数据中记录成功连接,因此 Gateway 重启不会为每个先前连接的节点重放警报。
警报绑定到经过身份验证的节点身份。同一节点的替换会话会接管其待处理的首次连接警报;如果投递运行时该节点已不再连接,则警报会被取消。
故障排查¶
| 症状 | 检查 |
|---|---|
没有行被标记为 active |
确认已连接原生 macOS 节点,然后在 OpenClaw 中点击或输入。对于 OpenClaw 之外的活动,启用系统范围检测,并在 openclaw nodes describe --node <id> 中检查 permissions.accessibility: true。 |
| 错误的 Mac 仍然保持活动 | 在你想要使用的 Mac 上与 OpenClaw 交互,等待合并窗口,然后重新运行 openclaw nodes status。启用系统范围检测后,其他应用中的物理输入也会被计入。 |
| 最后输入数据消失 | 检查 Mac 是否断开连接,或其节点会话是否被替换。禁用系统范围检测或撤销辅助功能会清除系统范围样本;应用本地活动仍可选择该 Mac。 |
| 警报出现在多台 Mac 上 | 主投递不可用或失败,因此延迟回退已运行。验证活动 Mac 已连接、允许通知,并暴露 system.notify。 |
| 代理未提及活动 Mac | 在活动变化后开始新一轮。运行时提示稳定且紧凑;使用 nodes 工具获取精确的当前元数据。 |
有关 TCC 恢复,请参阅 macOS 权限。有关节点连接和命令失败,请参阅 节点故障排查。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw