Gateway 自己
系统会先给自己挂一个灯牌,让你知道总机房活着。
Concepts 导读
Presence 是 OpenClaw 的轻量、尽力而为的可见性视图,主要用来渲染 macOS 的 Instances 标签页。它显示 Gateway 自身和已连接的客户端(mac app、WebChat、CLI 等),但请注意:这是“尽力而为”的,不是精确的在线状态。最容易搞错的是把 presence 当实时心跳用——它不会保证每个连接都实时更新,字段如 lastInputSeconds 可能缺失。
先讲这一页到底在解决什么
Presence 是 OpenClaw 的轻量、尽力而为的可见性视图,主要用来渲染 macOS 的 Instances 标签页。它显示 Gateway 自身和已连接的客户端(mac app、WebChat、CLI 等),但请注意:这是“尽力而为”的,不是精确的在线状态。最容易搞错的是把 presence 当实时心跳用——它不会保证每个连接都实时更新,字段如 lastInputSeconds 可能缺失。
第一眼
Presence 是一个很轻的视图。它主要给 macOS app 的 Instances tab 和运维看板用。
系统会先给自己挂一个灯牌,让你知道总机房活着。
mac app、WebChat、CLI、node 这些连上来的客人,也会被挂成一排状态卡。
像运维一眼扫过大厅,先知道谁在场、谁刚走、谁还亮着灯。
它是现场名单,不是档案室。
字段
这些字段不是为了炫技,而是为了让你一眼看懂“这是谁、在哪儿、什么状态”。
instanceId像一张不容易变的工牌。最好有它,重连之后也更容易认出来。
host / ip像写着这台设备的名字和门牌号。
version像胸牌上的版本号,告诉你这台设备现在穿的是哪套衣服。
mode / reason像状态灯和“为什么亮起来”的备注。
怎么来的
官方把 producers 说得很清楚:Gateway 自己会有一张,客户端连上来会有一张,节点进来会有一张,后台 beacon 也会来补充。
开机时先给自己挂灯,免得大厅一开始像空屋子。
客户端进门时会先报到,成功后就把自己补进名单。
像隔一会儿喊一声“我还在”,顺手带上 host、IP、lastInputSeconds。
节点连上来也会被登记,像又来了一位新的在场嘉宾。
合并规则
官方特别强调 instanceId。因为如果工牌不稳定,同一个人重连后就可能被挂成两张卡。
最好的 presence key 是能跨重连保持不变的 instanceId。这样灯牌不会乱长。
像门卫不太在乎大小写,只认是不是同一块牌。
如果客户端不老实带同一张卡,它就可能在名单里出现两次。
presence 不是数据库去重的终点,它只是一个尽量聪明的现场灯牌板。
TTL
Presence 是刻意做成短命的。它只想让你看现在,不想把大厅变成古董柜。
五分钟没更新的卡片,会被慢慢清掉。
最多只保留 200 张牌。旧的会先让路。
这样名单才不会越堆越长,也不会让内存一直长胖。
Presence 只负责“现在谁在”,不负责“永远都在”。
一个小坑
官方提醒得很细:有时客户端其实是远端来的,但 Gateway 看到的远端地址却像本地回环地址。
如果对方是通过隧道来的,127.0.0.1 不一定是真实来处,所以它会被忽略掉,避免把好数据覆盖坏。
像门口门牌牌子有时候会写错,系统宁可少写一项,也不想把原本准确的地址改坏。
如果名单里重复了,先看客户端有没有稳定 instanceId,再看 beacon 有没有一直用同一张工牌。
Presence 看的是“现场谁在”,不是“谁从哪条隧道来的全部历史”。
最后总结
Presence 就像门口的一排灯牌:Gateway 和客户端谁在线、谁刚连上、谁还在场,先轻轻看一眼就够了。
如果你下一页想继续看“为什么有些动作会重试,而有些不会”,就去 /concepts/retry。