Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claw Dashboard

Claw Dashboard

Apple 风格的 AI Agent 实时监控面板

功能特性 · 快速开始 · 技术栈 · 项目结构 · 安全 · 开发指南 · 贡献指南


简介

Claw Dashboard 是一个专为多 AI Agent 运行状态监控而设计的实时可视化面板。采用 Apple 风格 的设计语言(玻璃态、圆角卡片、Space Gray 配色),为 OpenClaw 及同类 AI Agent 编排平台提供开箱即用的监控体验。

核心场景:

  • 实时观测数十至数百个 Agent 的运行状态、任务进度与资源消耗
  • 异常告警与智能通知(Agent 超时、连续失败、资源溢出等)
  • 历史趋势分析与性能基准对比
  • 与 OpenClaw 及其他 Agent 平台的无缝集成

功能特性

监控面板

功能 描述
Agent 总览 全局态势感知 — 活跃/空闲/异常/离线 Agent 实时统计
任务追踪 当前执行任务列表、进度条、预计完成时间
资源水位 CPU、内存、Token 用量等关键指标的实时仪表盘
日志流 Agent 运行日志的实时 tail 与全文搜索
拓扑视图 Agent 间调用链路与依赖关系可视化

告警与通知

  • 可配置的告警规则引擎(基于指标阈值、状态变更、异常模式)
  • 多通道通知推送(Webhook、Slack、邮件、企业微信)
  • 告警聚合与静默策略,避免通知风暴

分析与报告

  • 历史数据趋势图表(任务完成率、平均执行时长、错误率)
  • Agent 性能排行与对比分析
  • 可导出的运营报告(PDF / CSV)

集成能力

  • OpenClaw — 一等公民级别的原生集成
  • 通用适配器 — RESTful / WebSocket / gRPC 协议适配,支持接入任意 Agent 编排平台
  • Prometheus — 指标采集与存储
  • Grafana — 作为可嵌入的数据源补充

技术栈

技术选型
框架 React 18 + TypeScript
构建 Vite 6
状态管理 Zustand
样式 TailwindCSS 4
图表 Recharts / D3.js
实时通信 WebSocket (原生)
网络请求 Axios
路由 React Router v7
国际化 i18next
代码质量 ESLint + Prettier
测试 Vitest + Testing Library
部署 Docker + Docker Compose

设计理念

Claw Dashboard 延续 Apple Human Interface Guidelines 的设计美学:

┌────────────────────────────────────────────────────────────┐
│  ◉ ◉ ◉   Claw Dashboard                    [Search] [U]  │
├────────┬───────────────────────────────────────────────────┤
│        │                                                   │
│  总览  │   ┌─────────┐  ┌─────────┐  ┌─────────┐         │
│  Agent │   │ 活跃 42 │  │ 空闲 8  │  │ 异常 2  │         │
│  任务  │   └─────────┘  └─────────┘  └─────────┘         │
│  日志  │                                                   │
│  告警  │   ┌───────────────────────────────────────┐       │
│  拓扑  │   │          任务执行趋势图表              │       │
│  设置  │   │      ╱╲    ╱╲╱╲                       │       │
│        │   │   ╱╱    ╲╱╱    ╲╲                     │       │
│        │   └───────────────────────────────────────┘       │
│        │                                                   │
│        │   ┌─────────────────┐  ┌─────────────────┐       │
│        │   │  最近任务列表   │  │  告警通知流     │       │
│        │   │  ─────────────  │  │  ─────────────  │       │
│        │   │  > task-0042    │  │  [!] Agent #7   │       │
│        │   │  > task-0041    │  │  [!] 内存告警   │       │
│        │   └─────────────────┘  └─────────────────┘       │
└────────┴───────────────────────────────────────────────────┘
  • 玻璃态 (Glassmorphism) — 侧边栏与顶栏使用 backdrop-filter: blur(20px) 实现磨砂半透明效果
  • 圆角卡片 — 主要面板 12px、按钮/输入框 8px 圆角
  • Space Gray 配色 — 深色模式为主,主背景 #000000 / #121827,强调色 Apple Blue #0a84ff
  • SF Pro / Inter 字体 — 清晰的字重层级:正文 400、导航 500、标题 600–700

项目结构

claw-dashboard/
├── public/                    # 静态资源
│   └── favicon.svg
├── src/
│   ├── assets/                # 图片、图标、字体
│   ├── components/            # 可复用 UI 组件
│   │   ├── common/            #   通用组件 (Card, Button, Input ...)
│   │   ├── charts/            #   图表组件
│   │   ├── layout/            #   布局 (Sidebar, Header, MainContent)
│   │   └── agents/            #   Agent 相关组件
│   ├── hooks/                 # 自定义 React Hooks
│   ├── lib/                   # 工具库 (API client, WebSocket, helpers)
│   ├── pages/                 # 页面视图
│   │   ├── Dashboard/         #   总览仪表盘
│   │   ├── Agents/            #   Agent 列表与详情
│   │   ├── Tasks/             #   任务管理
│   │   ├── Logs/              #   日志浏览
│   │   ├── Alerts/            #   告警管理
│   │   ├── Topology/          #   拓扑视图
│   │   └── Settings/          #   系统设置
│   ├── store/                 # Zustand 状态管理
│   ├── types/                 # TypeScript 类型定义
│   ├── i18n/                  # 国际化翻译文件
│   ├── App.tsx                # 根组件
│   ├── main.tsx               # 入口文件
│   └── index.css              # 全局样式 & 设计 Token
├── docker/                    # Docker 相关文件
│   ├── Dockerfile             #   前端多阶段构建
│   └── nginx.conf             #   Nginx 安全配置
├── docs/                      # 项目文档
├── tests/                     # 测试文件
├── .eslintrc.cjs              # ESLint 配置
├── tailwind.config.ts         # TailwindCSS 配置
├── tsconfig.json              # TypeScript 配置
├── vite.config.ts             # Vite 配置
├── docker-compose.yml         # 一键部署编排
├── .env.example               # 环境变量模板
├── package.json
└── readme.md

快速开始

方式一:Docker Compose 一键部署(推荐)

生产环境推荐使用 Docker Compose,所有依赖已容器化打包。

前置条件: Docker Engine >= 24.0,Docker Compose >= 2.20

# 克隆仓库
git clone https://github.com/Veritas-Calculus/claw-dashboard.git
cd claw-dashboard

# 复制环境变量模板并按需修改
cp .env.example .env

# 一键启动全部服务
docker compose up -d

启动后访问 https://localhost 即可使用面板。

docker-compose.yml 包含以下服务:

服务 端口 说明
dashboard 443 (HTTPS) 前端应用(Nginx + TLS)
api 8080 (内部) 后端 API 服务
redis 6379 (内部) 会话缓存与实时消息队列
prometheus 9090 (内部) 指标采集
postgres 5432 (内部) 持久化存储

常用运维命令:

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f dashboard

# 停止全部服务
docker compose down

# 重新构建并启动
docker compose up -d --build

# 保留数据卷的完整重建
docker compose down && docker compose up -d --build

方式二:本地开发

前置条件: Node.js >= 20,pnpm >= 9(推荐)

git clone https://github.com/Veritas-Calculus/claw-dashboard.git
cd claw-dashboard

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

打开浏览器访问 http://localhost:5173 即可看到面板。

环境变量

在项目根目录创建 .env.local(本地开发)或 .env(Docker 部署):

# Agent 数据源 API 地址
VITE_API_BASE_URL=http://localhost:8080/api/v1

# WebSocket 地址(实时数据推送)
VITE_WS_URL=ws://localhost:8080/ws

# 默认语言 (zh-CN | en-US)
VITE_DEFAULT_LOCALE=zh-CN

# --- Docker 部署专用 ---
# TLS 证书路径(生产环境必须配置)
TLS_CERT_PATH=./certs/server.crt
TLS_KEY_PATH=./certs/server.key

# PostgreSQL
POSTGRES_USER=claw
POSTGRES_PASSWORD=        # 必须修改为强密码
POSTGRES_DB=claw_dashboard

# Redis
REDIS_PASSWORD=           # 必须修改为强密码

# API 密钥(用于 Agent 数据源认证)
API_SECRET_KEY=           # 必须修改,建议 32+ 字符随机字符串

[!CAUTION] 不要将包含真实密码的 .env 文件提交到版本控制。.gitignore 已默认排除该文件。

安全

Claw Dashboard 在设计和部署层面均将安全性作为核心关注点。

传输安全

  • 强制 HTTPS — Nginx 默认配置 TLS 1.2+,自动将 HTTP 重定向至 HTTPS
  • 安全响应头 — 默认启用以下 HTTP 安全头:
    • Content-Security-Policy — 限制资源加载来源,防御 XSS
    • Strict-Transport-Security (HSTS) — 强制浏览器使用 HTTPS
    • X-Content-Type-Options: nosniff — 禁止 MIME 类型嗅探
    • X-Frame-Options: DENY — 防止点击劫持
    • Referrer-Policy: strict-origin-when-cross-origin
  • WebSocket 安全 — WSS (WebSocket over TLS) + Origin 校验

认证与授权

  • JWT 认证 — 短周期 Access Token + Refresh Token 轮换机制
  • API Key 认证 — Agent 数据源使用 HMAC 签名的 API Key 接入
  • RBAC 权限模型 — 管理员 / 操作员 / 只读观察者 三级角色隔离
  • 会话管理 — Redis 存储会话状态,支持主动吊销与并发限制

数据安全

  • 密码存储 — bcrypt (cost >= 12) 哈希,从不明文存储
  • 敏感配置 — 环境变量注入,禁止硬编码密钥;支持 Docker Secrets
  • 数据库 — 强制 SSL 连接,最小权限原则配置数据库用户
  • 日志脱敏 — 自动过滤日志中的 Token、密码、API Key 等敏感信息

网络隔离

  • 容器网络 — Docker Compose 中后端服务(API、Redis、PostgreSQL、Prometheus)均在内部网络中,不暴露到宿主机
  • 最小端口暴露 — 仅 Dashboard 的 443 端口对外开放
  • CORS 白名单 — 仅允许已授权的来源域访问 API
  • 速率限制 — 全局 / 租户 / 用户 / 路径 多级限流,防御暴力破解与 DDoS

供应链安全

  • 依赖审计 — CI 中集成 pnpm audit 自动扫描已知漏洞
  • 镜像安全 — 基于 node:20-alpine 最小基础镜像,多阶段构建剥离开发依赖
  • Dependabot — 自动追踪依赖更新与安全补丁

安全检查清单(部署前)

[ ] 已配置有效的 TLS 证书(非自签名)
[ ] 已修改所有默认密码(PostgreSQL、Redis、API Key)
[ ] .env 文件未提交到版本控制
[ ] 已启用 CORS 白名单并限制到实际域名
[ ] 已确认仅 443 端口对外暴露
[ ] 已启用速率限制
[ ] 已配置日志脱敏规则
[ ] 已运行 pnpm audit 确认无高危漏洞

开发指南

常用命令

pnpm dev          # 启动开发服务器(HMR)
pnpm build        # 生产构建
pnpm preview      # 预览生产构建
pnpm test         # 运行单元测试
pnpm test:e2e     # 运行端到端测试
pnpm lint         # 代码规范检查
pnpm lint:fix     # 自动修复 lint 问题
pnpm format       # 代码格式化
pnpm type-check   # TypeScript 类型检查

接入自定义 Agent 平台

Claw Dashboard 通过 适配器模式 支持接入任意 Agent 平台。只需实现 AgentDataSource 接口:

interface AgentDataSource {
  // 获取所有 Agent 列表
  listAgents(): Promise<Agent[]>

  // 获取单个 Agent 详情
  getAgent(id: string): Promise<AgentDetail>

  // 获取 Agent 任务列表
  listTasks(agentId?: string): Promise<Task[]>

  // 获取实时指标
  getMetrics(agentId: string): Promise<AgentMetrics>

  // 订阅实时事件流
  subscribe(handler: EventHandler): Unsubscribe
}

内置适配器:

  • OpenClawAdapter — OpenClaw 平台原生适配
  • GenericRESTAdapter — 通用 REST API 适配
  • MockAdapter — 本地开发模拟数据

主题定制

修改 src/index.css 中的 CSS 变量来定制主题:

:root {
  --color-bg-primary: #000000;
  --color-bg-secondary: #1c1c1e;
  --color-accent: #0a84ff;
  --color-text-primary: #f5f5f7;
  --color-text-secondary: #86868b;
  --radius-card: 12px;
  --radius-button: 8px;
  --glass-blur: blur(20px) saturate(180%);
}

贡献指南

  1. Fork 本仓库
  2. 创建特性分支:git checkout -b feature/your-feature
  3. 提交更改:git commit -m 'feat: add amazing feature'(遵循 Conventional Commits
  4. 推送分支:git push origin feature/your-feature
  5. 创建 Pull Request

提交规范

feat:     新功能
fix:      Bug 修复
docs:     文档更新
style:    代码格式(不影响逻辑)
refactor: 重构
perf:     性能优化
test:     测试相关
chore:    构建/工具变更

许可证

MIT


Built with care by Veritas-Calculus

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages