跳到正文
cccskills
免费在 GitHub 公开中文介绍

control-ui

在OpenClaw管理界面中整理会话和页面布局,创建会话仪表板,并检查连接目标及远程开放访问时的显示、通信故障,同时核对保存状态与实际画面。

原文查看原文说明

Operate and troubleshoot the OpenClaw Control UI: navigate connected clients, organize sessions, build session dashboards, and handle direct or Tailscale-hosted Gateways.

AI 评分90分/ 100查看安装方法

适用场景

  • 将相关会话分组并固定
  • 在专用会话中创建仪表板
  • 调整标签页和组件布局
  • 排查空白显示及远程连接故障

中文介绍

功能

control-ui用于整理OpenClaw Control UI中的会话、调整界面布局、创建仪表板和排查故障。可以重命名会话、分组、固定或归档,也可以分割画面、显示面板。在仪表板中,可以添加或更新标签页和组件,调整顺序与尺寸,并通过保存的状态和实际显示画面两方面核对结果。

适用场景

适合整理多个对话,或在某个会话中集中展示信息。对于直接连接或通过Tailscale开放访问的管理界面,也可以调查组件空白、内容不更新等问题。

使用示例

  • “将相关会话分组并固定。”
  • “在专用会话中创建仪表板,整理标签页和组件。”
  • “调查远程开放访问的界面为什么不显示组件。”

注意事项

使用OpenClaw的界面工具。界面操作会发送到所有支持相应命令的已连接客户端。仪表板属于会话,创建后不能移到其他会话;删除会话也会删除其仪表板。内容编排需要配合visualize技能。检查实际显示效果需要已连接的界面或浏览器操作环境。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

客观评估

AI 仅根据 SKILL.md 的内容,从 4 个方面进行了评估。星标数和热度不计入评估。

指令清晰度能否看出何时使用、做什么
A良好明确说明了会话整理、界面操作和仪表板编辑所用工具的职责。
步骤具体性步骤、输入输出和示例是否具体
A良好步骤涵盖dashboard read、编辑、布局及保存状态与实际界面的验证。
安全性发送数据、删除文件、执行命令等是否有说明
A良好明确说明修改前的状态和客户端检查、删除会话的影响及重新授权条件。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足需要OpenClaw界面工具和visualize,但未提供安装步骤。

总分按每项 A=25 分、B=15 分、C=5 分相加。 由 AI(OpenAI Codex)于 2026年10月19日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(3)

  • SKILL.md7.1 KB
  • references/dashboards.md4.8 KB
  • references/hosting.md4.7 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Control UI

Use OpenClaw's typed UI tools for state and layout. Use browser automation only to inspect or interact with rendered pixels.

Mental model

  • A sidebar item is a session, not a dashboard page.
  • Each session owns one board. The board contains tabs and widgets.
  • Pinning a session keeps it in the sidebar. Sessions with a stored board appear in the /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.

Start safely

  1. Identify the target session and whether the Control UI is local/direct or published through Tailscale or another HTTPS proxy.
    • If the user wants a dedicated sidebar dashboard, choose or create its visible session before authoring any widget. A tab is only a partition inside one session's board; it never creates a sidebar row.
    • If the current turn is running in a temporary or parent session, hand the dashboard task to the intended visible session first. Board widgets are keyed by session and cannot be moved to another session afterward.
  2. Read current state before changing it:
    • use sessions_list to resolve the session;
    • use dashboard with action: "read" for the current session;
    • inspect existing tabs, stable widget names, owners, sizes, and panel layout.
  3. If the task targets another session's board, move the work into that session. Dashboard tools intentionally operate on 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.

Navigate and arrange the UI

Use screen for direct 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. Check which clients are connected before sending a command. 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.

Build a session dashboard

  1. Call dashboard read. Reuse suitable tabs and widget names.
  2. Create or rename tabs with tab_create / tab_update; use short lowercase slug IDs.
  3. Add content with the correct owner:
    • native text, metrics, tables, charts, and links: show_widget with pin: true and report;
    • self-contained custom HTML/SVG or registered-source content: show_widget with pin: true;
    • trusted plugin widgets: 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.
  4. Use a stable name when calling show_widget. Reusing the same name with new widget_code updates the widget in place.
  5. Arrange with widget_move, widget_resize, and tab reordering. Prefer size presets and board order over pixel placement.
  6. Pin the current session with sessions patch when it should stay prominent.
  7. Call 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.
  8. Choose the presentation after focusing the tab. 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.

Update without breaking the board

  • Read first and mutate the smallest unit.
  • Keep stable tab IDs and widget names unless replacement is intentional.
  • Do not change a widget's content owner in place. Remove it, then recreate it with the new owner or registered kind.
  • Capability grants are bound to exact widget bytes and revision. Changed content may require approval again.
  • Resetting a conversation preserves its board. Deleting the session deletes the board.

Verify the result

Use two layers of proof:

  1. State: dashboard read shows the expected tabs, widgets, names, owners, order, and sizes; sessions_list shows the expected session metadata.
  2. Rendered UI: open the actual Control UI, confirm the correct session and dashboard panel, then inspect or screenshot the widget frame. Exercise any important controls.

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.

Recovery order

When a widget is blank or stale:

  1. confirm the expected session, tab, widget name, and revision with dashboard read;
  2. classify the hosting path using hosting.md;
  3. verify the Control UI origin, the separate widget sandbox origin, and the protocol used on every reverse-proxy hop;
  4. if widget JavaScript reports Failed to fetch, verify its exact HTTPS origin is declared and granted in capabilities.netOrigins, then check browser CORS and mixed-content errors;
  5. after a Gateway restart or routing change, republish/update the widget so the browser receives a fresh ticketed frame URL;
  6. reload the Control UI and verify the rendered frame, not only route status.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

1password

免费有简介AI 评分 100分

检查1Password命令行工具的安装和认证,将已保存的密码或API密钥传入命令及配置。支持桌面应用集成、服务账号和交互式登录,并先验证访问权限。

  • 安装1Password命令行工具
  • 将API密钥传入命令
  • 在CI中使用服务账号认证
openclaw/openclaw39.2万2026年10月18日 更新

acp-router

免费有简介AI 评分 80分

将提交给OpenClaw的自然语言请求转交给Claude Code等外部编程智能体,通过ACP或acpx启动、继续会话,并保留对话上下文。

  • 在讨论串中启动Claude Code
  • 继续外部智能体的现有工作
  • 通过acpx直接传递指令
openclaw/openclaw39.2万2026年10月18日 更新

add-model-provider

免费有简介AI 评分 100分

为OpenClaw添加模型服务商,并通过实际回复验证连接。凭据以环境变量或文件引用的形式配置,同时验证设置并报告测试结果。

  • 为OpenClaw添加模型服务商
  • 通过引用配置认证凭据
  • 确认模型能返回实际回复
openclaw/openclaw39.2万2026年10月18日 更新

agent-transcript

免费有简介AI 评分 90分

将AI代理的工作日志整理为可附在GitHub拉取请求或议题中的记录,筛选相关内容、移除敏感信息,并支持预览及经单独授权后的发布。

  • 为拉取请求整理代理工作记录
  • 从本地日志提取相关请求和结果
  • 预览已移除敏感信息的记录
openclaw/openclaw39.2万2026年10月18日 更新

apple-notes

免费有简介AI 评分 100分

通过代理管理macOS上的Apple Notes笔记,支持创建、查看、搜索、编辑和删除,在文件夹之间移动笔记,并将选定笔记导出为HTML或Markdown。

  • 创建带标题的笔记
  • 按文件夹筛选或模糊搜索笔记
  • 编辑笔记并整理文件夹
openclaw/openclaw39.2万2026年10月18日 更新

apple-reminders

免费有简介AI 评分 70分

通过Mac查看、添加和编辑Apple Reminders中带截止时间的待办事项,管理列表并完成或删除任务,整理在iPhone或iPad上查看的个人任务。

  • 查看今天和已逾期的任务
  • 添加带截止日期的个人待办事项
  • 整理iPhone或iPad上的任务
openclaw/openclaw39.2万2026年10月18日 更新

查看 openclaw 的全部技能

报告此技能的问题