Session Share 插件
捆绑的 session-share 插件可让团队成员在 Control UI 中读取来自另一个 OpenClaw Gateway 的选定会话。源端操作员选择要发布的会话组。源机器上的节点主机会读取这些会话,并作为已配对设备连接到接收端 Gateway。
Session Share 默认禁用。它发布的是只读的 OpenClaw sessions 目录,而不是在源机器上运行代理的第二种方式。如需在没有配对节点的情况下获取外部编码会话的脱敏快照,请参阅 Beam。
开始前¶
两台机器都需要安装带有 Session Share 插件的 OpenClaw。请以与源端 Gateway 相同的操作系统用户身份运行源端节点主机,并使用相同的 OPENCLAW_STATE_DIR 和配置。如果源端使用自定义配置位置,也请设置 OPENCLAW_CONFIG_PATH。节点会读取已配置的 session.store,包括自定义路径和按代理划分的模板。接收端需要一个可访问、已认证的 Gateway 端点,以及批准设备配对的权限。
对于仅会话连接,请使用下面的命令允许列表。如果没有允许列表,普通节点主机可以声明其他能力。
在源端选择会话¶
在源端启用插件,并选择要发布的精确会话组名称:
{
plugins: {
entries: {
"session-share": {
enabled: true,
config: {
share: { groups: ["Team"] },
},
},
},
},
}
在源端 Control UI 中,将想要共享的会话移动到 Team 组。组名称必须与会话类别完全匹配。省略或空的 share.groups 不会发布任何内容。子代理、隐身会话、草稿以及从其他会话目录采用的行永远不会发布,即使它们属于已选择的组。这也排除了具有已记录生成谱系的命名或恢复会话;用户创建的 fork 仍然符合条件。
在默认混合重载模式下,源端 Gateway 会自动应用插件配置。更改插件配置后,请启动或重启源端节点主机。将会话移出共享组会立即撤销新的对话记录读取;已经读取文本的接收端可能保留该文本。
启用接收端并配对源端¶
在接收端 Gateway 上:
启用命令会应用正在运行的 Gateway 的插件生命周期,而无需重启它。请保持加入 URL 私密。在源机器上,使用该 URL 并严格使用以下两个只读命令:
openclaw connect <join-url> --service \
--commands openclaw.sessions.list.v1,openclaw.sessions.read.v1
省略 --service 可在前台运行。使用 --service 时,允许列表会保存在源节点的持久机器状态中,并在服务重启后继续生效。
在接收端批准源设备:
检查配对请求和已连接节点是否仅声明 openclaw.sessions.list.v1 和 openclaw.sessions.read.v1,并带有 openclaw-sessions 能力。目录仅识别声明这两个命令的节点。有关加入代码过期时间,请参阅 Connect;有关命令允许列表,请参阅 Nodes。
读取共享会话¶
打开接收端 Control UI。共享行会显示在 OpenClaw sessions 中源节点的标题下。选择某一行会以只读方式打开其对话记录。仅共享用户和助手的对话文本。思考、工具调用和工具结果会被省略。接收端无法继续、归档或为该会话打开终端。
发布会与接收端获许可的查看者共享,而不仅仅是指定所有者。查看者需要 operator.read;在角色受限的 Gateway 上,其个人资料的角色还必须允许查看他人的会话(sessions.others: "view"、"suggest" 或 "write")。仅限所有者的查看者和未配置个人资料的受限查看者无法看到已发布的行。请参阅 Operator scopes。
目录通过轮询刷新,而不是实时对话记录流。源节点必须保持连接,才能进行列表和读取。长对话记录会分页;必要时,单个文本字段会被脱敏和截断。
聊天启动期间使用的渐进式目录列表在前台最多等待五秒。并发查看者共享节点请求,并接收一个待处理主机,在可用时保留其最后一个有效页面。刷新后的页面通过目录的正常主机更新到达。定向元数据查找、分页以及没有进度更新的调用方仍会等待完整响应。待处理请求和保留页面属于接收端的 Session Share 服务;配置更改、节点重连和服务退役会使它们失效。
列表不会触及冷对话记录归档,并使用任何已存储的标题元数据。要读取冷历史记录,请先在源端 Gateway 上打开该会话,以便其常规历史记录所有者恢复归档。每个源页面还将原始对话记录读取限制在 8 MiB;单个更大的条目会返回显式错误,而不是被静默跳过。请在源端 Gateway 上检查该条目。
为源节点添加归属信息¶
接收端身份设置是可选的,并以 openclaw nodes list 显示的节点 ID 作为键:
{
plugins: {
entries: {
"session-share": {
enabled: true,
config: {
nodes: {
"<nodeId>": {
owner: "github:octocat",
linkGitHubIdentities: true,
},
},
},
},
},
},
}
owner 接受 github:<login> 或 profile:<profileId>。GitHub 登录名会不区分大小写地解析为具有已验证 GitHub 身份的本地个人资料。当某一行没有可移植的人类创建者时,绑定的所有者提供默认归属;它不会覆盖可移植的人类身份,也不会授予基于所有权的访问权限。
linkGitHubIdentities 默认值为 false。启用后,拥有已验证数字 GitHub 账户 ID 的远程创建者和消息发送者将显示为接收方本地个人资料,且具有相同的已验证账户 ID。仅凭登录文本不足以关联远程发送者。未匹配的身份保持为远程,并保留其显示标签。
没有节点特定设置时,归属保持为远程。源本地个人资料 ID 会作为远程身份进行命名空间处理,绝不会直接在接收方上解释为个人资料。源和接收方设置可以在同一个插件配置中共存。
安全边界¶
源选择要发布的内容;接收方信任配对设备针对该发布附带的身份声明。归属是显示元数据,从不授予访问权限。
使用两条命令的允许列表时,节点不暴露 shell 执行、文件系统浏览、终端上传、插件工具、MCP 服务器、技能、worker 托管或计算机使用。两条命令均为只读,并且每次读取转录都会重新检查会话是否仍处于共享状态。接收方不需要访问源 Gateway 的 HTTP 端点或身份验证凭据。
共享会话会暴露其用户和助手的对话文本以及目录元数据,其中可能包括工作区路径或分支名称。脱敏会屏蔽已知的凭据模式;它不会使任意对话内容适合发布。请谨慎选择群组,并将接收到的转录视为不可信文本。
故障排除¶
要撤销仅限会话的设置,在前景中使用 openclaw node run --all-commands,或为服务使用 openclaw node install --force --all-commands;这会忘记已保存的允许列表并恢复完整的默认节点功能面。
源节点因没有允许的命令而失败
在源上启用 session-share,设置非空的 share.groups,重启节点主机,并检查确切的命令 ID。未知或不可用的命令不会被通告。
节点已连接,但没有出现 OpenClaw 会话主机
在接收方上启用插件并确认其已应用。在 openclaw nodes list 中,源必须声明两个会话命令,并且必须已获批准用于这些命令。
主机已出现,但缺少某个会话
检查其在源上的群组、share.groups 的确切拼写,以及它是否是子代理、隐身、草稿,或从另一个目录采用。即使会话之前可见,子代理密钥和记录的生成谱系仍会被排除。验证源节点使用与源 Gateway 相同的用户和状态目录。在角色受限的接收方上,检查查看者的个人资料以及查看他人会话的权限。
某行可见后,转录读取失败
刷新目录。源可能离线,会话可能已被删除,或其群组可能不再共享。对于离线主机错误,重新连接源节点;不要扩大其命令允许列表。
目录刷新有时需要 30 秒
当接收方诊断和警告日志启用时,gateway/session-catalog 会记录发现阶段和节点调用阶段,这些阶段至少需要一秒。带有 nodeCommandDispatched: false 的 TIMEOUT 发生在分发之前;true 表示接收方已分发命令,因此请检查源节点及其连接。这并不能证明源处理程序已启动。缺失的字段会使分发状态未知。这些记录包含有界的节点错误代码和持续时间,但不包含节点标识符、请求参数或错误消息。
名称未关联到本地个人资料
检查已配置的节点 ID 和 linkGitHubIdentities。两个个人资料都需要具有相同的已验证数字 GitHub 账户 ID;匹配的名称或未验证的登录不会关联它们。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw