Concepts 导读

Presence 不是实时在线,而是“谁连过、现在大概在哪”

Presence 是 OpenClaw 的轻量、尽力而为的可见性视图,主要用来渲染 macOS 的 Instances 标签页。它显示 Gateway 自身和已连接的客户端(mac app、WebChat、CLI 等),但请注意:这是“尽力而为”的,不是精确的在线状态。最容易搞错的是把 presence 当实时心跳用——它不会保证每个连接都实时更新,字段如 lastInputSeconds 可能缺失。

先讲这一页到底在解决什么

Presence 不是实时在线,而是“谁连过、现在大概在哪”

Presence 是 OpenClaw 的轻量、尽力而为的可见性视图,主要用来渲染 macOS 的 Instances 标签页。它显示 Gateway 自身和已连接的客户端(mac app、WebChat、CLI 等),但请注意:这是“尽力而为”的,不是精确的在线状态。最容易搞错的是把 presence 当实时心跳用——它不会保证每个连接都实时更新,字段如 lastInputSeconds 可能缺失。

原文共 14 节,先看 Start Here 路径:/concepts/presence 查看官方原文

第一眼

💡 它先告诉你“谁在门口”,不是“每个人一生都干过什么”

Presence 是一个很轻的视图。它主要给 macOS app 的 Instances tab 和运维看板用。

🏠

Gateway 自己

系统会先给自己挂一个灯牌,让你知道总机房活着。

🖥

Connected clients

mac app、WebChat、CLI、node 这些连上来的客人,也会被挂成一排状态卡。

📱

Instances tab

像运维一眼扫过大厅,先知道谁在场、谁刚走、谁还亮着灯。

🎈

一句话

它是现场名单,不是档案室。

字段

🧾 每张小卡片都会写几项简单信息

这些字段不是为了炫技,而是为了让你一眼看懂“这是谁、在哪儿、什么状态”。

instanceId

像一张不容易变的工牌。最好有它,重连之后也更容易认出来。

host / ip

像写着这台设备的名字和门牌号。

version

像胸牌上的版本号,告诉你这台设备现在穿的是哪套衣服。

mode / reason

像状态灯和“为什么亮起来”的备注。

怎么来的

🚪 这些灯牌不是一个地方来的,而是几个门一起送来的

官方把 producers 说得很清楚:Gateway 自己会有一张,客户端连上来会有一张,节点进来会有一张,后台 beacon 也会来补充。

1

Gateway self entry

开机时先给自己挂灯,免得大厅一开始像空屋子。

2

WebSocket connect

客户端进门时会先报到,成功后就把自己补进名单。

3

system-event beacon

像隔一会儿喊一声“我还在”,顺手带上 host、IP、lastInputSeconds。

4

node connects

节点连上来也会被登记,像又来了一位新的在场嘉宾。

合并规则

🧲 认人靠稳定工牌,不然就容易出现重复灯牌

官方特别强调 instanceId。因为如果工牌不稳定,同一个人重连后就可能被挂成两张卡。

稳定工牌

最好的 presence key 是能跨重连保持不变的 instanceId。这样灯牌不会乱长。

case-insensitive

像门卫不太在乎大小写,只认是不是同一块牌。

没有稳定工牌就可能重复

如果客户端不老实带同一张卡,它就可能在名单里出现两次。

📌 这节真正想告诉你

presence 不是数据库去重的终点,它只是一个尽量聪明的现场灯牌板。

TTL

⏳ 灯牌是会过期的,不是永远挂着

Presence 是刻意做成短命的。它只想让你看现在,不想把大厅变成古董柜。

5m

TTL

五分钟没更新的卡片,会被慢慢清掉。

200

Max entries

最多只保留 200 张牌。旧的会先让路。

🧺

为什么这样

这样名单才不会越堆越长,也不会让内存一直长胖。

📌

一句话

Presence 只负责“现在谁在”,不负责“永远都在”。

一个小坑

🪟 用 SSH 隧道时,127.0.0.1 可能会冒充来宾地址

官方提醒得很细:有时客户端其实是远端来的,但 Gateway 看到的远端地址却像本地回环地址。

loopback IP 可能是假信号

如果对方是通过隧道来的,127.0.0.1 不一定是真实来处,所以它会被忽略掉,避免把好数据覆盖坏。

为什么要忽略

像门口门牌牌子有时候会写错,系统宁可少写一项,也不想把原本准确的地址改坏。

🛠 排查方式

如果名单里重复了,先看客户端有没有稳定 instanceId,再看 beacon 有没有一直用同一张工牌。

📌 记一句

Presence 看的是“现场谁在”,不是“谁从哪条隧道来的全部历史”。

最后总结

🎈 把这页压成一句最短的话

Presence 就像门口的一排灯牌:Gateway 和客户端谁在线、谁刚连上、谁还在场,先轻轻看一眼就够了。

如果你下一页想继续看“为什么有些动作会重试,而有些不会”,就去 /concepts/retry