当前位置: 首页 > article >正文

openclaw dashboard实现分析

OpenClaw Dashboard / Control UI 前端实现框架与原理本文基于openclaw仓库源码与官方文档对Gateway DashboardControl UI的前端实现做一次整体梳理方便在 MW4Agent 中对标实现类似的 Web 控制台。1. 整体架构概览定位Dashboard 即 Gateway 的Control UI是一个浏览器单页应用用于查看和控制聊天会话、通道状态、定时任务、技能、节点、日志等作为 Gateway 的“管理后台”暴露各种管理级 RPC。运行位置由 Gateway HTTP 服务器直接提供静态资源默认地址http://host:18789/可通过gateway.controlUi.basePath改为子路径例如/openclaw静态文件路径为dist/control-ui。技术栈构建ViteUILitWeb Components而不是 React/Vue与 Gateway 的通信浏览器端WebSocket直接连 Gateway 的 WS 端口典型部署形态本机开发openclaw gateway 浏览器直接访问127.0.0.1:18789远程/内网通过 Tailscale Serve/Tailnet 或 SSH 隧道暴露 Control UI公网推荐配合 HTTPS 严格 authtoken/password 设备配对2. CLI 到 Dashboard 的链路openclaw dashboard入口在src/commands/dashboard.tsCLI 负责读取配置与 Gateway 监听信息readConfigFileSnapshot()解析当前OpenClawConfigresolveGatewayPort(cfg)获取 Gateway 监听端口默认 18789cfg.gateway.bind/cfg.gateway.customBindHost/cfg.gateway.controlUi.basePath解析 Dashboard 访问 URL// src/commands/dashboard.ts节选constlinksresolveControlUiLinks({port,bind:bindlan?loopback:bind,customBindHost,basePath,});处理网关认证 tokengateway.auth.token可以配置为明文、环境变量或 SecretRef外部密钥管理解析逻辑抽象在// src/commands/dashboard.ts节选constresolvedawaitresolveConfiguredSecretInputWithFallback({config:cfg,env,value:cfg.gateway?.auth?.token,path:gateway.auth.token,readFallback:()readGatewayTokenEnv(env),});URL 中是否带 token 的决策如果 token 直接来自配置或环境变量非 SecretRefCLI 可以在 URL 的fragment中添加一次性 token// src/commands/dashboard.ts节选constincludeTokenInUrltoken.length0!resolvedToken.tokenSecretRefConfigured;constdashboardUrlincludeTokenInUrl?${links.httpUrl}#token${encodeURIComponent(token)}:links.httpUrl;若 token 由 SecretRef 管理则不注入 URL只打印无 token 的 Dashboard 地址避免在终端、剪贴板或浏览器启动参数中泄露外部密钥。额外 UX自动复制链接到剪贴板copyToClipboard(dashboardUrl)尝试自动打开浏览器openUrl(dashboardUrl)使用detectBrowserOpenSupport检查平台支持在无法自动打开时打印 SSH 隧道提示formatControlUiSshHint(...)小结openclaw dashboard本身不包含前端逻辑而是负责“拼好 URL 安全地处理 token 打开浏览器/打印提示”前端 SPA 全在dist/control-ui里由 Gateway 提供。3. Dashboard 前端框架Vite Lit SPA3.1 构建与产物在docs/web/control-ui.md中官方说明Gateway 从dist/control-ui提供静态文件The Gateway serves static files from dist/control-ui. Build them with: bash pnpm ui:build # auto-installs UI deps on first run- 开发模式通过 Vite dev server bash pnpm ui:dev # auto-installs UI deps on first run可选的绝对 basePath构建时注入OPENCLAW_CONTROL_UI_BASE_PATH/openclaw/pnpmui:build因此Dashboard 是一个典型的Vite SPA使用 Vite 的 dev server默认 5173 端口进行开发编译后的静态资源HTML/JS/CSS/静态资源放入dist/control-ui由 Gateway HTTP 服务托管。UI 组件使用Lit构建每个模块聊天、会话、通道、Cron、配置等对应一个或多个 Lit Web Components通过自定义元素 Shadow DOM 组合出完整控制台。3.2 Browser → Gateway WebSocket 通道Dashboard 本身不通过 REST API而是直接通过 WebSocket 与 Gateway 通信WebSocket 地址与 HTTP 同端口基于 Gateway 配置 / 控制台设置推导所有前端动作发送消息、查看状态、修改配置等都封装为RPC 事件发送给 Gateway如chat.send/chat.history/config.get/config.set/skills.*/cron.*等Gateway 回发事件流前端根据事件类型和 payload 更新 UI 状态。这部分逻辑对应于src/web/*下的一系列 TypeScript 模块更偏内部协议层而非 UI 组件本身src/web/inbound.*处理 WebSocket 入站事件src/web/outbound.ts将前端操作转为发送给 Gateway 的消息格式src/web/session.ts/src/web/auth-store.ts负责连接生命周期管理与认证处理src/web/auto-reply/**为 Web 自动回复场景复用同一套事件/会话抽象。从架构角度看Dashboard UI Vite Lit 组件层src/web/** WebSocket 协议与会话管理层两者通过浏览器端 JS 共享同一运行环境。4. 认证与安全模型前端视角4.1 WebSocket 握手认证在docs/web/control-ui.md中认证是通过 WebSocket 握手参数完成的控制 UI 在建立连接时发送connect.params.auth.token或connect.params.auth.passwordGateway 会在握手时校验token/password 是否匹配gateway.auth.*配置设备是否已完成配对Device pairing 系统是否允许 Tailscale 身份作为认证来源gateway.auth.allowTailscale。前端这边的核心原则不在 URL query 中传 token避免日志泄漏、Referer 泄漏首次打开可从 URL fragment / 页面设置中注入 token然后token存在于sessionStorage当前标签页 当前 Gateway URLpassword仅保存在内存不落盘部分网关 URL 配置gatewayUrl可以保存在 localStorage 中以方便 dev server 远程 Gateway 开发模式。4.2 URL 参数与本地存储策略docs/web/control-ui.md对 dev server remote Gateway 场景有示例http://localhost:5173/?gatewayUrlws://gateway-host:18789 http://localhost:5173/?gatewayUrlwss://gateway-host:18789#tokengateway-token行为总结gatewayUrlWS 地址从 URL query 读取读取后写入 localStorage随后从 URL 移除允许指定远程 Gateway 主机配合 Tailscale / SSH 转发。token认证 token从 URL fragment#token...读取存入 sessionStorage仅对当前浏览器标签页 当前gatewayUrl生效随后从 URL 中剥离以减少泄漏面。password不落盘只驻留在内存状态机中由用户在 UI 中手动输入。Dashboard 的前端状态管理大致遵循初始化阶段解析 URL → gatewayUrl token根据 URL / 存储的 gatewayUrl 决定连接目标若无显式凭证则报错提示用户补充认证信息。运行时UI 内的“设置面板”允许用户修改gatewayUrl、token、语言、主题等改动会反映到本地存储与当前 WebSocket 连接。5. 功能模块与 WebSocket 协议映射Control UI 在文档中列举了当前支持的主要模块它们都通过统一的 Gateway WS RPC 协议实现聊天Chat调用chat.send/chat.history/chat.inject/chat.abortUI 显示消息列表、实时流式输出、工具卡片/事件流。通道ChannelsWhatsApp / Telegram / Discord / Slack 等渠道的状态、登录 QR、配置表单使用channels.status/web.login.*/config.patch等 RPC。会话Sessionssessions.list/sessions.patch支持 per-session 的思考/verbose 开关定时任务Croncron.*一整套 RPC列表、创建、编辑、运行、启停、历史查看等技能Skillsskills.*查看/启用/禁用/安装/更新 Skill配置Configconfig.get/config.set/config.apply/config.schema等支持 JSON 表单渲染 原始 JSON 编辑写入时使用 base-hash 防止覆盖并发修改节点、日志、更新等模块node.list、logs.tail、update.run、status、health、models.list等。从前端实现角度Lit 组件只负责渲染与事件触发RPC 发送 / 事件流订阅统一封装在某个“GatewayClient / Session” 抽象里对应src/web/session.ts/src/web/outbound.ts等UI 和 WebSocket 层松耦合替换 Gateway 后端时只要 RPC 协议保持兼容Control UI 可以复用。6. 调试与远程开发模式Dashboard 支持使用 Vite dev server 连接远程 Gateway便于在本机上开发前端将 Gateway 部署在本地 Docker / 远程服务器 / Tailscale 节点上。典型流程见docs/web/control-ui.md本地起 UI dev serverpnpmui:dev用gatewayUrl指向远程 Gatewayhttp://localhost:5173/?gatewayUrlws://gateway-host:18789如需带 token一次性通过 URL fragment 传入http://localhost:5173/?gatewayUrlwss://gateway-host:18789#tokengateway-tokenControl UI 会将gatewayUrl存入 localStorage将token存入 sessionStorage当前标签页并从 URL 移除建立到 Gateway 的 WebSocket 连接并在失败时展示详细错误与重连提示。安全注意远程 Gateway 部署时必须配置gateway.controlUi.allowedOrigins以白名单方式允许 dev server 源如http://localhost:5173否则 Gateway 拒绝启动可以通过gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback暂时放宽 Host header 检查但这是“救火模式”应尽快恢复安全配置。7. 设计启示前后端边界清晰所有管理能力都通过统一的 WebSocket RPC 暴露前端只是 Vite Lit SPA专注 UI 和状态管理。认证与 token 处理安全token 使用 URL fragment sessionStorage一次性导入后即从 URL 剥离密钥管理支持 SecretRef / 环境变量CLI 明确避免在非必要场景下打印或拼接敏感值。绑定模式与 Origin 安全通过bindcontrolUi.basePathallowedOrigins管理 Control UI 暴露面Tailscale Serve / Tailnet 与 JWT/token/password 结合形成多层防护。模块化的 WebSocket 协议所有功能面板都基于一套统一的事件/命令总线chat.*、config.*、skills.*等为未来扩展新模块如 Memory 可视化、LLM 监控提供良好基础。

相关文章:

openclaw dashboard实现分析

OpenClaw Dashboard / Control UI 前端实现框架与原理 本文基于 openclaw 仓库源码与官方文档,对 Gateway Dashboard(Control UI) 的前端实现做一次整体梳理,方便在 MW4Agent 中对标实现类似的 Web 控制台。1. 整体架构概览 定位&…...

Day 42 通道注意力

浙大疏锦行 CNN 有很多卷积核,输出很多通道(特征图)有的通道很重要(比如边缘、纹理)有的通道没用通道注意力就是:自动给每个通道算一个权重,重要的通道权重变大,不重要的变小 SE 通…...

2026年亲测:企业健身房规划实战案例分享

在2026年的当下,我们团队在为企业客户规划员工健身空间时,普遍面临一个核心困境:方案设计与最终落地效果严重脱节。许多企业投入预算采购了高端健身器材,却因前期缺乏专业的空间规划,导致器械布局不合理、动线混乱、使…...

《探索升级!AI应用架构师助力企业数字化转型的策略探索升级》

探索升级!AI 应用架构师助力企业数字化转型的策略探索升级 引言 背景介绍 在当今数字化浪潮汹涌澎湃的时代,企业面临着前所未有的挑战与机遇。数字化转型已不再是一种选择,而是企业生存和发展的必由之路。随着人工智能(AI&#xf…...

视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序

这是视觉自动对焦(Z 轴运动 + 相机拍照 + 清晰度计算) 的核心程序,基于ACS 运动控制器实现,用于精密视觉设备(显微镜 / 相机 / 激光设备)自动找到最清晰的画面位置。 我用通俗中文 + 分层拆解,让你完全看懂逻辑。 一、整体功能一句话总结 控制 Z 轴匀速扫动一段距离,…...

100页PPT2026数字孪生智慧化工园区解决方案

2026年推进5GAI大模型智慧工业园区建设实践路径?【智慧方案文库】汇总了一套《2026AI大模型智慧工业园区建设实践路径指南》,立足“十五五”数字经济与新质生产力发展导向,以AI大模型为核心引擎,融合数字孪生、5G、物联网等技术&a…...

Android 11--横竖屏旋转时背景色异常?

最近遇到一个问题:相册打开一张图片,横竖屏旋转时,有的图片旋转时四周背景色是白色,有的则是黑色的。Why? 难不成背景色与图片相关? -- 11.0的问题,10.0并无 对WMS模块了解一些的人应该都知道&#xff0…...

PowerLine

Powerline 是一款比较酷炫的状态栏工具,可以美化 终端 和 vim界面,由 python 开发,目前仅支持 python2.X,由于 python2 和 python3 互不兼容,安装前要了解清楚使用的Linux /Ubuntu /debian 的Python 版本信息: CentOS 7 : Kali / debian CentOS 系列安装比较简单: 字…...

Synergy服务端显示异常解决办法

第一个问题是服务端不能成功运行,一直显示正在启动: 错误代码: [2020-10-26T19:24:05] INFO: starting new process [2020-10-26T19:24:05] INFO: drag and drop enabled synergys.exe: no configuration available [2020-10-26T19:24:06] ER…...

车流量计数、不同车型统计算法

车流量计数统计算法是目前安防领域重要的应用方向,根据实时或历史视频流,实时统计不同类型的车流量 车流统计双向_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV14q4y1g7Tx/ 比如: 小客车,客货两用车,出租车&…...

Management By Objectives (MBO) - 目标管理

Management By Objectives {MBO} - 目标管理ReferencesManagement by objectives (MBO), also known as management by results (MBR), was first popularized by Peter Drucker in his 1954 book The Practice of Management. 目标管理 (MBO),也称为结果管理 (MBR)…...

博客必读事项

我是小懒猿,人狠话不多,直接上才艺。 本人编写文章来源于1.文档(面试总结-懂得都懂-嘿嘿嘿)2.博客(csdn,掘金,博客园,个人博客等等)3.公众号(持续关注各大优秀公众号)4.视频(B站,网课…...

CarPlay 有线连接流程

一、引言1.1 目的此文档记录CarPlay 开发中有线连接开发部分,详细介绍CarPlay有线连接的流程,希望可以给开发CarPlay小伙伴一些帮助,无线连接后续再梳理。二、架构设计2.1 架构图注:此图翻译自苹果官方的开发帮助文档身份认证 &am…...

java毕业设计——基于JSP+sqlserver的课程教学网站设计与实现(毕业论文+程序源码)——教学网站

基于JSPsqlserver的课程教学网站设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于JSPsqlserver的课程教学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的…...

java毕业设计——基于JSP+sqlserver的科研处管理信息系统设计与实现(毕业论文+程序源码)——科研处管理信息系统

基于JSPsqlserver的科研处管理信息系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于JSPsqlserver的科研处管理信息系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩…...

使用slack-cleaner,打造清爽的Slack工作环境

使用slack-cleaner,打造清爽的Slack工作环境 【免费下载链接】slack-cleaner :speech_balloon: Bulk delete messages and files on Slack 项目地址: https://gitcode.com/gh_mirrors/sl/slack-cleaner 在现代企业中,Slack是团队协作的重要工具。…...

O3DE引擎全面解析:从基础到高级的开源3D创作平台完全指南

O3DE引擎全面解析:从基础到高级的开源3D创作平台完全指南 【免费下载链接】o3de Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and hi…...

U8g2常见问题解答:解决OLED/LCD显示开发中的痛点难题

U8g2常见问题解答:解决OLED/LCD显示开发中的痛点难题 【免费下载链接】u8g2 U8glib library for monochrome displays, version 2 项目地址: https://gitcode.com/gh_mirrors/u8/u8g2 U8g2是一款功能强大的单色显示器库,广泛应用于OLED和LCD显示…...

推荐一款开源利器:Linux Router

推荐一款开源利器:Linux Router 【免费下载链接】linux-router Set Linux as router in one command. Support Internet sharing, redsocks, Wifi hotspot, IPv6. Can also be used for routing VM/containers 🛰️ (也欢迎关注B站 https://space.bilibi…...

gRPC协议在TOMs中的应用:跨平台服务通信的高性能实现

gRPC协议在TOMs中的应用:跨平台服务通信的高性能实现 【免费下载链接】TOMs TOMs is a fully open-source, high-performance, systematic, plugin-oriented, and scenario-agnostic general-purpose development framework. 项目地址: https://gitcode.com/gh_m…...

代码截图的高级技巧:gh_mirrors/car/carbon的隐藏功能

代码截图的高级技巧:gh_mirrors/car/carbon的隐藏功能 【免费下载链接】carbon 项目地址: https://gitcode.com/gh_mirrors/car/carbon gh_mirrors/car/carbon是一款功能强大的代码截图工具,能够帮助开发者轻松创建美观、专业的代码图片。无论是…...

pydata-book bitly使用数据:用户行为数据的统计与分析

pydata-book bitly使用数据:用户行为数据的统计与分析 【免费下载链接】pydata-book wesm/pydata-book: 这是Wes McKinney编写的《Python for Data Analysis》一书的源代码仓库,书中涵盖了使用pandas、NumPy和其他相关库进行数据处理和分析的实践案例和技…...

Used-Trading-Platform2开源项目安装与使用指南

Used-Trading-Platform2开源项目安装与使用指南 【免费下载链接】Used-Trading-Platform2 基于Spring Boot的校园二手交易网站 项目地址: https://gitcode.com/gh_mirrors/us/Used-Trading-Platform2 1. 项目目录结构及介绍 Used-Trading-Platform2 是一个基于Spring Bo…...

Python-Fxxk-Spider 开源项目教程

Python-Fxxk-Spider 开源项目教程 【免费下载链接】python-fxxk-spider 收集各种免费的 Python 爬虫项目 项目地址: https://gitcode.com/gh_mirrors/py/python-fxxk-spider 项目介绍 Python-Fxxk-Spider 是一个收集了各种免费 Python 爬虫项目的开源仓库。该项目旨在为…...

Used-Trading-Platform2 开源项目教程

Used-Trading-Platform2 开源项目教程 【免费下载链接】Used-Trading-Platform2 基于Spring Boot的校园二手交易网站 项目地址: https://gitcode.com/gh_mirrors/us/Used-Trading-Platform2 项目介绍 Used-Trading-Platform2 是一个基于 Spring Boot 的校园二手交易网站…...

Bedrock插件开发终极指南:如何在现代化WordPress环境中创建自定义插件

Bedrock插件开发终极指南:如何在现代化WordPress环境中创建自定义插件 【免费下载链接】bedrock WordPress boilerplate with Composer, easier configuration, and an improved folder structure 项目地址: https://gitcode.com/gh_mirrors/be/bedrock Bedr…...

终极指南:如何快速集成Prisma与Astro、SolidStart前端框架

终极指南:如何快速集成Prisma与Astro、SolidStart前端框架 【免费下载链接】prisma-examples 🚀 Ready-to-run Prisma example projects 项目地址: https://gitcode.com/gh_mirrors/pr/prisma-examples Prisma是一个强大的ORM工具,能…...

Win-Debloat-Tools终极指南:快速打造精简高效的Windows系统

Win-Debloat-Tools终极指南:快速打造精简高效的Windows系统 【免费下载链接】Win-Debloat-Tools Re-imagining Windows like a minimal OS install, already debloated with minimal impact for most functionality. 项目地址: https://gitcode.com/gh_mirrors/wi…...

prompttools常见问题解答:从API密钥到实验调试

prompttools常见问题解答:从API密钥到实验调试 【免费下载链接】prompttools Open-source tools for prompt testing and experimentation, with support for both LLMs (e.g. OpenAI, LLaMA) and vector databases (e.g. Chroma, Weaviate, LanceDB). 项目地址: …...

Inputmask数字扩展终极指南:轻松处理货币、百分比和小数输入

Inputmask数字扩展终极指南:轻松处理货币、百分比和小数输入 【免费下载链接】Inputmask Input Mask plugin 项目地址: https://gitcode.com/gh_mirrors/in/Inputmask Inputmask 是一款强大的输入格式化插件,能够帮助用户确保输入内容符合预定义格…...