openclaw dashboard 命令实战指南:一键打开 Control UI 与令牌安全处理机制
人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载openclaw dashboard是 OpenClaw CLI 中用于打开浏览器版 Control UI控制面板的核心维护命令它会读取当前配置与认证信息自动拼装带令牌的访问 URL并完成打印 → 复制剪贴板 → 启动浏览器的一站式流程。本文以 docs/cli/dashboard.md 为主线结合 commands/dashboard.ts 的实现、commands/dashboard.test.ts 与 commands/dashboard.links.test.ts 的测试用例以及 docs/web/control-ui.md 的配套说明深入讲解该命令的用法、令牌解析链路、SecretRef 防泄漏设计、URL 生成规则与无图形环境下的 SSH 隧道方案帮助你安全、高效地在浏览器中管理 OpenClaw 网关。命令概览openclaw dashboarddashboard是 OpenClaw CLI 的维护类maintenance命令之一注册于 cli/program/register.maintenance.ts与doctor、reset、uninstall同组官方描述为Open the Control UI with your current token即使用当前认证信息打开 Control UI。基本用法# 默认行为打印/复制 URL并自动启动浏览器 openclaw dashboard # 只打印 URL不启动浏览器适合服务器、SSH 会话、脚本场景 openclaw dashboard --no-open完整命令定义见 cli/program/register.maintenance.ts#L43-L58选项说明默认值无参数解析令牌 → 生成 URL → 复制到剪贴板 → 尝试打开浏览器—--no-open跳过浏览器启动仅打印 URL关闭默认尝试打开在无头服务器、Docker 容器或 SSH 会话中执行时浏览器启动通常会失败命令会自动降级为打印 URL 与 SSH 隧道提示详见下文无图形环境小节。前置条件网关与 Control UIdashboard打开的是由Gateway托管的 Control UI——一个基于Vite Lit的单页应用与网关 WebSocket 同端口通信默认18789。因此执行该命令前需先确认网关正在运行openclaw gateway如果网关未启动页面将无法加载。Control UI 的默认访问地址为http://127.0.0.1:18789/或http://localhost:18789/也可以通过在配置中设置gateway.controlUi.basePath增加路径前缀例如/openclaw后地址变为http://127.0.0.1:18789/openclaw/。Control UI 的能力范围包括与模型聊天chat.history/chat.send/chat.abort/chat.inject、渠道状态与二维码登录、实例/Session 管理、Cron 任务面板、Skills 管理、配置查看与热重载config.get/config.set/config.apply、日志实时查看、执行审批与设备管理详见 docs/web/control-ui.md。令牌来源解析gateway.auth.token的完整查找链dashboard命令的关键动作之一是解析配置中的gateway.auth.token。从源码 commands/dashboard.ts#L19-L48 看其解析函数resolveDashboardToken委托给resolveConfiguredSecretInputWithFallback实现在 gateway/resolve-configured-secret-input-string.ts令牌来源优先级如下config配置明文gateway.auth.token直接配置为普通字符串如replace-mesecretRefSecretRef 引用gateway.auth.token是 SecretRef 结构{ source, provider, id }或环境变量模板字符串如${OPENCLAW_GATEWAY_TOKEN}尝试从秘密提供方解析出真实值env环境变量回退以上均无结果时回退读取环境变量OPENCLAW_GATEWAY_TOKEN见 gateway/credentials.ts 中导出的readGatewayTokenEnv。最终返回值带source: config | env | secretRef标记用于区分令牌到底来自哪一层。测试 commands/dashboard.links.test.ts#L157-L179 验证了SecretRef 无法解析但存在环境变量回退的场景此时虽然OPENCLAW_GATEWAY_TOKEN可作回退URL 仍保持非令牌化见下节。SecretRef 防泄漏设计为什么 URL 有时不带令牌文档明确指出dashboard会尽可能解析gateway.auth.token的 SecretRef但对于 SecretRef 托管的令牌无论是否成功解析命令都不会把令牌拼进 URL而是打印/复制/打开一个非令牌化non-tokenizedURL。这一设计的核心目的是避免外部托管的秘密出现在终端输出、剪贴板历史或浏览器启动参数中。对应源码逻辑见 commands/dashboard.ts#L71-L76// 避免把外部托管的 SecretRef 令牌嵌入终端/剪贴板/浏览器参数 const includeTokenInUrl token.length 0 !resolvedToken.tokenSecretRefConfigured; // 优先使用 URL fragment避免令牌通过 query 参数泄露 const dashboardUrl includeTokenInUrl ? ${links.httpUrl}#token${encodeURIComponent(token)} : links.httpUrl;三种典型场景汇总令牌配置方式URL 是否带令牌附加提示配置明文 token✅ 带http://127.0.0.1:18789/#tokenxxx无SecretRef 托管且已解析❌ 不带提示Token auto-auth is disabled for SecretRef-managed gateway.auth.token; use your external token source if prompted.SecretRef 托管但无法解析❌ 不带提示Token auto-auth unavailable: …并给出修复指引另外两个安全细节值得注意使用 URL fragment#token...而非 query 参数?token...传递令牌。fragment 不会随 HTTP 请求发送到服务器也不会出现在代理日志或Referer头中降低泄露面。当 SecretRef 未解析时命令不会在 URL 中嵌入无效的令牌占位符而是打印明确的修复指引Token auto-auth unavailable: gateway.auth.token SecretRef is unresolved (env:default:MISSING_GATEWAY_TOKEN). Set OPENCLAW_GATEWAY_TOKEN in this shell or resolve your secret provider, then rerun openclaw dashboard.测试 commands/dashboard.links.test.ts#L132-L155 验证了该场景下剪贴板与浏览器打开的都是http://127.0.0.1:18789/无令牌且日志包含上述指引。SecretRef 的结构定义见 config/types.secrets.ts#L10-L16SecretInput string | SecretRef其中SecretRef { source: env | file | exec; provider: string; id: string }。环境变量模板字符串如${CUSTOM_GATEWAY_TOKEN}同样被识别为外部秘密引用。URL 生成细节bind 模式、端口与 basePathdashboard生成 URL 时并非简单拼接127.0.0.1:18789而是基于配置实时计算。核心逻辑在resolveControlUiLinkscommands/onboard-helpers.ts#L302-L331它同时输出 HTTP 与 WebSocket 地址// 输入port、bind、customBindHost、basePath // 输出{ httpUrl, wsUrl }URL 的主机部分由gateway.bind决定bind默认值为loopback见 config/types.gateway.ts#L393-L412gateway.bind生成的 host说明loopback默认127.0.0.1仅本机访问lan自动探测的主网卡 IPv4注意dashboard 会把 lan 强制映射为 loopbackcustomcustomBindHost指定的 IP保持原样tailnetTailnet IPv4100.64.0.0/10不可用则回退 loopback保持原样其中lan 强制映射为 loopback是一个值得关注的安全细节源码注释与测试 commands/dashboard.test.ts#L75-L89 均有说明LAN 地址在浏览器中无法通过 secure-context 校验非安全上下文会阻断 WebCrypto 等能力因此dashboard只做lan → loopback的单向转换其余 bind 模式原样保留。// commands/dashboard.ts#L65-L70 const links resolveControlUiLinks({ port, bind: bind lan ? loopback : bind, customBindHost, basePath, });测试同时验证了custombind: custom, customBindHost: 10.0.0.5与tailnet两种模式会被完整保留commands/dashboard.test.ts#L91-L115。gateway.controlUi.basePath会作为路径前缀拼入 URL若设置了gateway.controlUi.root还可指定 Control UI 静态资源目录默认dist/control-ui。完整的GatewayControlUiConfig字段见 config/types.gateway.ts#L99-L121{ gateway: { controlUi: { enabled: true, // 是否托管 Control UI默认开启 basePath: /openclaw, // 可选路径前缀 root: dist/control-ui, // 静态资源根目录 allowedOrigins: [], // WebSocket 允许的浏览器来源 // dangerouslyAllowHostHeaderOriginFallback: false, // 危险项Host 头回退 // allowInsecureAuth: false, // 非安全上下文认证开关 // dangerouslyDisableDeviceAuth: false, // 危险项关闭设备身份校验 }, }, }端口由resolveGatewayPort解析默认18789GatewayConfig.port见 config/types.gateway.ts#L394-L395。无图形环境自动输出 SSH 隧道提示当命令所在环境没有可用的 GUI例如通过 SSH 登录服务器时dashboard会检测浏览器启动支持失败后回退为打印 SSH 隧道指引commands/onboard-helpers.ts#L137-L168No GUI detected. Open from your computer: ssh -N -L 18789:127.0.0.1:18789 userhost Then open: http://localhost:18789/该提示通过formatControlUiSshHint生成其中 SSH 目标主机取自SSH_CONNECTION环境变量用户名取自USER/LOGNAME。若令牌可安全嵌入非 SecretRef 托管还会额外打印带#token...的自动认证地址。测试 commands/dashboard.links.test.ts#L104-L117 覆盖了浏览器无法打开时打印 SSH 提示的分支。--no-open纯输出模式与剪贴板复制在 CI、脚本或远程环境中--no-open会跳过detectBrowserOpenSupport与openUrl调用仅输出一行提示Browser launch disabled (--no-open). Use the URL above.无论是否--no-open命令都会尝试把 dashboard URL 复制到剪贴板通过 infra/clipboard.js 的copyToClipboard无剪贴板环境会静默降级并打印 Copy to clipboard unavailable.。测试 commands/dashboard.links.test.ts#L119-L130 验证了--no-open下既不会检测浏览器支持、也不会调用打开动作。首次连接设备配对Pairing通过dashboard打开 Control UI 后若是从新的浏览器或设备首次连接网关会要求一次性的设备配对审批——即使位于同一 Tailnet 且设置了gateway.auth.allowTailscale: true也不例外这是防止未授权访问的安全措施。典型表现是页面显示disconnected (1008): pairing required。处理方式详见 docs/web/control-ui.md 与 docs/cli/devices.md# 列出待审批请求 openclaw devices list # 按 requestId 审批 openclaw devices approve requestId # 不传 ID 时自动审批最近一条请求 openclaw devices approve openclaw devices approve --latest # 撤销已配对设备需指定设备 ID 与角色 openclaw devices revoke --device deviceId --role node注意本地连接127.0.0.1会自动批准无需手动配对LAN、Tailnet 等远程连接必须显式审批每个浏览器 profile 会产生独立设备 ID切换浏览器或清除浏览器数据后需重新配对。这些命令要求operator.pairing或operator.admin权限。远程访问与 HTTPS 建议文档 docs/web/control-ui.md 建议了两类远程访问方案方案一Tailscale Serve推荐自动 HTTPS——保持网关在 loopback用 Tailscale Serve 反向代理openclaw gateway --tailscale serve然后通过https://magicdns/访问或配置的gateway.controlUi.basePath前缀。默认情况下gateway.auth.allowTailscale: true时可通过 Tailscale 身份头tailscale-user-login认证。方案二tailnet 绑定 令牌openclaw gateway --bind tailnet --token $(openssl rand -hex 32)然后访问http://tailscale-ip:18789/在 UI 设置中粘贴令牌以connect.params.auth.token发送。需要提醒的是通过纯 HTTP 访问 LAN/Tailnet 地址属于非安全上下文浏览器会阻断 WebCrypto默认情况下 Control UI 会拒绝无设备身份的连接。若确需在非安全上下文中使用应急场景可显式配置gateway.controlUi.allowInsecureAuth: true注意该开关不会绕过设备身份与配对检查。更彻底的破窗选项gateway.controlUi.dangerouslyDisableDeviceAuth: true会关闭设备身份校验属于严重的安全降级仅建议应急使用后立即还原。小结命令执行全景openclaw dashboard从配置读取到浏览器打开的完整链路可归纳为读取配置快照readConfigFileSnapshot解析网关端口、bind 模式、customBindHost、basePath按config → secretRef → 环境变量的顺序解析gateway.auth.token回退变量OPENCLAW_GATEWAY_TOKEN依据 bind 模式生成 URLlan强制映射为loopback其余保留根据是否 SecretRef 托管决定是否将令牌以fragment#token形式嵌入 URL避免 query 参数与终端日志泄露打印 URL → 复制剪贴板 → 检测浏览器支持并打开失败则输出 SSH 隧道提示。整个行为由 commands/dashboard.ts 实现并由 commands/dashboard.test.tsbind 模式选择与 commands/dashboard.links.test.ts令牌泄漏防护、--no-open、SSH 提示双层测试锁定可作为深入阅读与二次开发的入口。赞分享人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载相关推荐openclaw-cn clawdbot dashboard 命令完全指南一条命令打开带认证的 Control UI 网页控制台openclaw cn clawdbot dashboard 命令完全指南一条命令打开带认证的 Control UI 网页控制台 clawdbot dashb人工智能AI Agent即时通讯后端本地部署语音OpenClaw openclaw dashboard通过一次性配对链接安全打开 Control UIOpenClaw openclaw dashboard 通过一次性配对链接安全打开 Control UI openclaw dashboard 是 OpenCAI 应用AI Agent交互助手后端即时通讯网关OpenClaw 设备配对与令牌治理实战clawdbot devices 命令完全指南OpenClaw 设备配对与令牌治理实战clawdbot devices 命令完全指南 clawdbot devices 是 OpenClaw中文社区版网人工智能AI Agent即时通讯后端本地部署语音上一篇Zoraxy 插件开发实战在插件 Web UI 中通过 RESTful API 调用后端含 CSRF 防护与 $.cjax 用法下一篇ChartGPU API 完全参考create、setOption、appendData 核心接口逐一详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考