Files
openbridge-token-usage-viewer/README.md

222 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Token Usage Viewer
一个基于 **TanStack Start + Bun + Tauri** 的桌面应用,用于监控 Claude API 账户的 Token 配额使用情况。
采用 [OpenBridge Design System](https://github.com/oicl/openbridge-webcomponents) 设计规范,提供专业的航海仪表盘风格界面。
## 功能特点
- **实时配额监控**: 显示 4 个账户的 Claude Opus 4.5 (Thinking) 模型配额使用情况
- **可视化仪表盘**: Apple Health 风格的圆环进度指示器
- **智能告警系统**:
- 当配额剩余 < 20% 时显示警告 (Warning)
- 当配额剩余 < 5% 时显示紧急告警 (Alarm)
- **主题切换**: 支持白天/夜间模式切换
- **自动刷新**: 配额数据每 5 分钟自动刷新
- **倒计时显示**: 显示配额重置剩余时间
## 技术栈
| 层级 | 技术 |
|------|------|
| 前端框架 | React 19 + TanStack Router |
| UI 组件 | OpenBridge Web Components |
| 状态管理 | TanStack Query |
| 样式 | Tailwind CSS v4 |
| RPC 通信 | ORPC (类型安全) |
| 桌面壳 | Tauri v2 |
| 运行时 | Bun |
| 构建 | Vite + Turbo |
## 快速开始
### 前置要求
- [Bun](https://bun.sh/) >= 1.0
- [Rust](https://www.rust-lang.org/) (Tauri 桌面应用需要)
### 安装与运行
```bash
# 1. 克隆项目
git clone <your-repo-url>
cd openbridge-token-usage-viewer
# 2. 安装依赖
bun install
# 3. 启动开发服务器
bun run dev:vite # 仅 Web (http://localhost:3000)
bun run dev # Tauri 桌面应用 + Web
```
### 构建
```bash
bun run build:vite # 构建 Web 版本
bun run build # 构建 Tauri 桌面安装包
```
构建产物位置:
- **MSI 安装包**: `src-tauri/target/release/bundle/msi/app-desktop_0.1.0_x64_en-US.msi`
- **NSIS 安装包**: `src-tauri/target/release/bundle/nsis/app-desktop_0.1.0_x64-setup.exe`
## 配置
### 环境变量
应用会按以下优先级读取 `TOKEN_USAGE_URL` 配置:
1. **系统环境变量** (最高优先级)
2. **可执行文件同目录的 `.env` 文件**
3. **默认值**: `http://10.0.1.1:8318/usage`
#### 方式 1: 环境变量
```bash
# Windows PowerShell
$env:TOKEN_USAGE_URL = "http://your-server:8318/usage"
.\app-desktop.exe
# Linux/macOS
TOKEN_USAGE_URL=http://your-server:8318/usage ./app-desktop
```
#### 方式 2: 配置文件
在可执行文件同目录创建 `.env` 文件:
```env
TOKEN_USAGE_URL=http://your-server:8318/usage
```
## 常用命令
| 命令 | 说明 |
|------|------|
| `bun dev` | 启动 Tauri + Vite 开发服务器 |
| `bun dev:vite` | 仅启动 Vite 开发服务器 |
| `bun dev:tauri` | 仅启动 Tauri (需先启动 Vite) |
| `bun build` | 完整构建 (Tauri 桌面应用) |
| `bun build:vite` | 仅构建 Web 版本 |
| `bun typecheck` | TypeScript 类型检查 |
| `bun fix` | 自动修复格式和 Lint 问题 |
## 故障排除
### 清理缓存与重置
如果遇到构建问题、端口占用或缓存问题,按以下步骤重置:
#### 1. 结束所有相关进程
```powershell
# Windows PowerShell (管理员)
taskkill /F /IM "app.exe" 2>$null
taskkill /F /IM "app-desktop.exe" 2>$null
taskkill /F /IM "bun.exe" 2>$null
taskkill /F /IM "node.exe" 2>$null
```
```bash
# Linux/macOS
pkill -f "app-desktop" || true
pkill -f "bun" || true
```
#### 2. 清除所有缓存
```bash
# Turbo 缓存
rm -rf .turbo
# Vite 缓存
rm -rf node_modules/.vite
rm -rf node_modules/.cache
# 构建输出
rm -rf .output
# Tauri sidecar binaries
rm -rf src-tauri/binaries/app-*
```
#### 3. 完全清理 (可选,需要重新编译 Rust耗时 2-5 分钟)
```bash
# 清除 Rust 编译缓存
rm -rf src-tauri/target
```
#### 4. 确认端口已释放
```bash
# Windows
netstat -ano | findstr :3000
# Linux/macOS
lsof -i :3000
```
#### 5. 重新构建
```bash
bun run build
```
### 常见问题
#### "An unhandled error happened!" 错误
1. 确保没有其他进程占用端口 3000
2. 尝试完全清理缓存后重新构建
3. 检查 `.env` 文件中的 `TOKEN_USAGE_URL` 配置是否正确
#### 端口被占用 (EADDRINUSE)
```powershell
# 查找占用端口的进程
netstat -ano | findstr :3000
# 结束进程 (替换 PID 为实际进程 ID)
taskkill /F /PID <PID>
```
#### MSI 安装后无法运行
1. 卸载旧版本: 控制面板 → 程序和功能 → 卸载 app-desktop
2. 重新安装新的 MSI
3. 确保安装目录有写入权限
## 项目结构
```
├── src/
│ ├── components/
│ │ ├── HealthRing.tsx # 圆环进度指示器
│ │ ├── TokenUsageDashboard.tsx # 主仪表盘
│ │ └── ...
│ ├── hooks/
│ │ └── useTheme.ts # 主题切换 Hook
│ ├── orpc/
│ │ ├── contracts/usage.ts # API 契约
│ │ └── handlers/usage.ts # 数据获取逻辑
│ ├── routes/
│ │ ├── __root.tsx # 根布局
│ │ └── index.tsx # 首页
│ └── env.ts # 环境变量配置
├── src-tauri/ # Tauri 桌面应用
│ ├── src/
│ │ ├── lib.rs # Tauri 入口
│ │ └── sidecar.rs # Sidecar 管理
│ ├── binaries/ # 编译后的 sidecar
│ └── tauri.conf.json # Tauri 配置
└── .output/ # Vite 构建输出
```
## 许可证
MIT