×

注意!页面内容来自https://docs.openclaw.ai/zh-CN/web/control-ui,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

控制 UI(浏览器)

控制 UI 是一个由 Gateway 网关提供的小型 Vite + Lit 单页应用: 它会直接连接到同一端口上的 Gateway 网关 WebSocket

快速打开(本地)

如果 Gateway 网关运行在同一台电脑上,请打开: 如果页面无法加载,请先启动 Gateway 网关:openclaw gateway 鉴权会在 WebSocket 握手期间通过以下方式提供: 控制面板设置面板会为当前浏览器标签页会话保留 token 和所选 Gateway 网关 URL;不会持久化密码。新手引导通常会在首次连接时为共享密钥鉴权生成一个 gateway token,但当 gateway.auth.mode"password" 时,密码鉴权同样可用。

设备配对(首次连接)

当你从新的浏览器或设备连接到控制 UI 时,Gateway 网关会要求进行一次性配对批准——即使你位于同一个 Tailnet 中并且设置了 gateway.auth.allowTailscale: true。这是一项安全措施,用于防止未授权访问。 你会看到: “disconnected (1008): pairing required” 批准设备的方法:
# 列出待处理请求
openclaw devices list

# 按请求 ID 批准
openclaw devices approve <requestId>
如果浏览器使用变更后的鉴权信息(角色/作用域/公钥)重试配对,之前的待处理请求会被新的请求取代,并创建新的 requestId。批准前请重新运行 openclaw devices list 一旦获得批准,该设备就会被记住,除非你使用 openclaw devices revoke --device <id> --role <role> 撤销它,否则无需再次批准。有关 token 轮换和撤销,请参阅 Devices CLI 说明:

语言支持

控制 UI 可在首次加载时根据你的浏览器语言环境进行本地化,你也可以稍后通过 Access 卡片中的语言选择器进行覆盖。

它今天可以做什么

Cron 作业面板说明:

聊天行为

Tailnet 访问(推荐)

集成式 Tailscale Serve(首选)

让 Gateway 网关保持在 loopback 上,并由 Tailscale Serve 使用 HTTPS 代理它:
openclaw gateway --tailscale serve
打开: 默认情况下,当 gateway.auth.allowTailscaletrue 时,控制 UI/WebSocket Serve 请求可通过 Tailscale 身份头 (tailscale-user-login)进行鉴权。OpenClaw 会通过 tailscale whois 解析 x-forwarded-for 地址并与该头匹配来验证身份,并且只有当请求命中 loopback 且带有 Tailscale 的 x-forwarded-* 头时才会接受这些头。如果你希望即使对于 Serve 流量也要求显式共享密钥凭证,请设置 gateway.auth.allowTailscale: false。然后使用 gateway.auth.mode: "token""password"。 对于这个异步 Serve 身份路径,来自同一客户端 IP 和鉴权范围的失败鉴权尝试会在写入速率限制之前进行串行化。因此,来自同一浏览器的并发错误重试在第二次请求时可能会显示 retry later,而不是两个普通不匹配并行竞争。 无 token 的 Serve 鉴权假设 gateway host 是受信任的。如果该主机上可能运行不受信任的本地代码,请要求 token/password 鉴权。

绑定到 tailnet + token

openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
然后打开: 将匹配的共享密钥粘贴到 UI 设置中(作为 connect.params.auth.tokenconnect.params.auth.password 发送)。

不安全的 HTTP

如果你通过明文 HTTP 打开控制面板(http://<lan-ip>http://<tailscale-ip>), 浏览器会运行在非安全上下文中,并阻止 WebCrypto。默认情况下, OpenClaw 会阻止没有设备身份的控制 UI 连接。 文档化的例外情况: 推荐修复方式: 使用 HTTPS(Tailscale Serve)或在本地打开 UI: 不安全鉴权开关行为:
{
  gateway: {
    controlUi: { allowInsecureAuth: true },
    bind: "tailnet",
    auth: { mode: "token", token: "replace-me" },
  },
}
allowInsecureAuth 仅是一个本地兼容性开关: 仅限紧急放行:
{
  gateway: {
    controlUi: { dangerouslyDisableDeviceAuth: true },
    bind: "tailnet",
    auth: { mode: "token", token: "replace-me" },
  },
}
dangerouslyDisableDeviceAuth 会禁用控制 UI 设备身份检查,这是严重的安全降级。应在紧急使用后尽快恢复。 Trusted-proxy 说明: 有关 HTTPS 设置指南,请参阅 Tailscale

构建 UI

Gateway 网关从 dist/control-ui 提供静态文件。使用以下命令构建:
pnpm ui:build # auto-installs UI deps on first run
可选的绝对基础路径(当你想使用固定资源 URL 时):
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
用于本地开发(独立 dev server):
pnpm ui:dev # auto-installs UI deps on first run
然后将 UI 指向你的 Gateway 网关 WS URL(例如 ws://127.0.0.1:18789)。

调试/测试:dev server + 远程 Gateway

控制 UI 是静态文件;WebSocket 目标可配置,并且可以与 HTTP 来源不同。当你希望本地运行 Vite dev server,但 Gateway 网关运行在其他地方时,这非常有用。
  1. 启动 UI dev server:pnpm ui:dev
  2. 打开如下 URL:
http://localhost:5173/?gatewayUrl=ws://<gateway-host>:18789
可选的一次性鉴权(如有需要):
http://localhost:5173/?gatewayUrl=wss://<gateway-host>:18789#token=<gateway-token>
说明: 示例:
{
  gateway: {
    controlUi: {
      allowedOrigins: ["http://localhost:5173"],
    },
  },
}
远程访问设置细节:远程访问

相关内容