Operate and troubleshoot the OpenClaw Control UI: navigate connected clients, organize sessions, build session dashboards, and handle direct or Tailscale-hosted
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-control-ui-fbf999cb6bbc ,按照其中的说明把「control-ui」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Use OpenClaw's typed UI tools for state and layout. Use browser automation only to inspect or interact with rendered pixels.
/dashboards gallery.screen changes connected Control UI layout and navigation. It does not read
the page or take screenshots.sessions_list finds sessions. sessions renames, groups, pins, or archives
them. It does not edit board content.dashboard reads and arranges the current session's board and registered
plugin widgets. show_widget authors or updates custom HTML/SVG widgets.Do not replace these operations with shell calls or raw Gateway RPC when the typed tool exists.
sessions_list to resolve the session;dashboard with action: "read" for the current session;Read hosting.md before opening or repairing a remote
Control UI. Read dashboards.md before creating or
restructuring a board.
Use the visualize skill for widget composition, libraries, interactive code
explanations, and dashboard content. Keep session and board organization here.
Use screen for deterministic client commands:
navigate to open a session by sessionKey;sidebar_show / sidebar_hide for the session sidebar;split_right / split_down, focus, and close_pane for panes;terminal_show / terminal_hide and browser_show / browser_hide for
docked panels.screen broadcasts to every connected Control UI that advertises UI commands;
it cannot select one browser tab. Confirm the blast radius when several clients
may be open. If it reports no capable client, ask the user to open the Control
UI and retry.
Use the in-app browser or an available browser-control tool when the task needs DOM inspection, clicking, typing, or screenshots. Reuse the existing signed-in Control UI tab when possible.
dashboard read. Reuse suitable tabs and widget names.tab_create / tab_update; use short lowercase
slug IDs.show_widget with
pin: true and report;show_widget with pin: true;dashboard widget_put with an advertised
pluginKind.
Do not embed Grafana or another external application in an <iframe> inside
show_widget; widget sandboxes reject child-frame URLs and navigation. Use
an ordinary user-clicked link to open the application, fetch an exact HTTPS
API through declared capabilities.netOrigins, use a Gateway data binding,
or install/use a trusted plugin widget instead.name when calling show_widget. Reusing the same name with
new widget_code updates the widget in place.widget_move, widget_resize, and tab reordering. Prefer size
presets and board order over pixel placement.sessions patch when it should stay prominent.dashboard focus_tab to show the intended tab in the dashboard side
panel. If no Control UI is connected, the command returns unavailable; have
the user open the session and retry.set_presentation with
presentation: "expanded" expands the dashboard; "split" shows it beside
chat in the current panel layout. The human can use
Expand side panel for a full-width dashboard, Collapse to bring chat
back, or close the panel for chat alone.Never create a fake top-level page for a dashboard. For a dedicated dashboard, use a dedicated session, pin that session, and build its board from inside it.
Use two layers of proof:
dashboard read shows the expected tabs, widgets, names, owners,
order, and sizes; sessions_list shows the expected session
metadata.An HTTP 200 for the shell or widget route is transport proof, not visual proof.
Do not claim the dashboard works until the sandboxed frame renders.
For widgets that fetch live data, exercise that fetch from the rendered frame.
A host-side curl does not prove the browser received the required capability
grant or accepted the endpoint's CORS and mixed-content policy.
If no browser-control or connected-client inspection is available, report the
dashboard as published but visually unverified instead of claiming success.
When a widget is blank or stale:
dashboard read;Failed to fetch, verify its exact HTTPS origin
is declared and granted in capabilities.netOrigins, then check browser CORS
and mixed-content errors;