跳转至

屏幕

screen 工具可让代理布置基于浏览器的 Control UI。它是一个类型化的布局和导航界面,而不是截图捕获或浏览器自动化。

仅当发起客户端声明 ui-commands 能力时,才会暴露该工具。工具运行时,所选人员发起请求的 Control UI 仍必须保持连接;否则 Gateway 返回 UNAVAILABLE。

客户端会在 Gateway 连接握手期间发送的 caps 数组中声明 ui-commands(参见 Gateway 协议)。内置 Control UI 已经声明了它,因此无需在那里开启任何设置。未声明它的客户端永远不会被提供 screen,因此工具缺失,而不是在调用时失败。

操作

操作 效果 可选输入
split_right 将目标会话窗格向右拆分 sessionKey(默认当前会话)
split_down 将目标会话窗格向下拆分 sessionKey(默认当前会话)
close_pane 关闭目标会话窗格 sessionKey(默认当前会话)
focus 聚焦目标会话窗格 sessionKey(默认当前会话)
navigate 打开目标会话 sessionKey(默认当前会话)
sidebar_show / sidebar_hide 显示或隐藏主侧边栏 -
terminal_show / terminal_hide 显示或隐藏操作员终端面板 dock(显示时为 bottom 或 right)
browser_show / browser_hide 显示或隐藏浏览器面板 dock(显示时为 bottom 或 right)
desktop_show / desktop_hide 显示或隐藏远程桌面 environmentId、sessionKey、dock(默认 right)
portal_show / portal_hide 显示或隐藏 Web 应用门户 portalId、sessionKey、dock(默认 right)

每个操作都接受可选的 user,即 Control UI 消息会话上下文中该人员已验证的 requester_profile.id。当多人已引导该轮次时,user 为必填项;代理会选择提出请求的人员,若不明确则询问他们。

对于运行在已附加环境上的原生应用,请使用其 environmentId 调用 desktop_show。对于 Web 应用,先为服务器端口打开一个门户,然后使用返回的 portalId 调用 portal_show。所选视图会在该对话的侧边栏中打开。隐藏视图不会停止其应用、关闭门户或释放环境。

桌面面板和计算机工具指向同一环境。screen 仅负责呈现它;计算机工具执行点击、输入和截图。

环境可能在配置完成前出现。桌面会显示启动进度,并在该确切机器可用时连接。在其应用启动期间,portal_show 可以接受 environmentId;就绪后将其替换为该应用的 portalId。待处理的 Portal 绝不会从门户列表中打开另一个应用。

成功命令会在 Gateway 向发起请求的浏览器发送类型化的 ui.command 事件后返回 { "ok": true }。

路由与安全

命令只会更改所选人员发起请求的 Control UI 连接。其他人的仪表板以及你的其他标签页会保持当前视图。sessionKey 选择要打开哪个会话;它不选择接收方。

Gateway 在接受消息时会捕获浏览器目标,并将其与排队轮次和 worker 执行一起保留。如果该浏览器断开连接,或该轮次没有 Control UI 目标,命令将以 UNAVAILABLE 失败。请从已打开的 Control UI 重新请求;命令绝不会回退到广播。

具有匹配权限的人员可以引导同一轮次。每个参与者都保留自己捕获的浏览器目标;user 只能选择轮次所有者或已接受的参与者。排队或被拒绝的引导不会添加参与者。如果所选人员的访问权限已变更,他们必须重新请求。

之前使用 ui.command 进行广播的独立 RPC 和 MCP 调用方,必须从发起请求的 Control UI 连接或在该连接中启动的代理轮次中调用它。如果没有该浏览器目标,它们现在会收到 UNAVAILABLE,即使其他仪表板已连接。这有意取代了旧版广播契约。

Gateway RPC 需要 operator.write。该工具只能更改呈现状态:它不能读取像素、截取屏幕截图、点击任意页面内容,或绕过所选会话和操作员面板的权限。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw