bolikoto/daili-usage
0
Daili Usage Keeper
English README
Daili Usage Keeper 是一个独立的用量持久化与可视化服务。这个 Space 只提供受密码保护的统计看板,不提供模型推理、API 代理或请求转发服务。
Space 的 Docker 镜像由当前仓库中的 Go 与 React 源码直接构建,最终运行在标准 Alpine 镜像上。服务从单独配置的 management metadata 端点读取用量数据,写入 SQLite,并提供 usage、pricing、request health 和 model/API 维度的统计视图。

功能特性
- CPA usage 数据持久化到 SQLite
- usage 聚合 API 与 pricing API
- 启动时及每 6 小时从 models.dev 同步当前 CPA 模型价格(可配置,失败保留旧价格)
- 内置 React Dashboard
- 可选密码登录保护
- SQLite 数据库本地备份与保留策略
- Docker / Docker Compose 部署
项目结构
cmd/ 应用入口
internal/api/ HTTP 路由与处理器
internal/app/ 应用装配与启动
internal/auth/ 内存 session 鉴权
internal/backup/ SQLite 数据库备份管理
internal/config/ 环境配置加载
internal/cpa/ CPA 客户端与类型定义
internal/models/ GORM 模型
internal/poller/ 后台同步轮询
internal/repository/ SQLite 访问与聚合逻辑
internal/service/ 同步、usage 与 pricing 服务
web/ React + TypeScript 前端配置
复制配置模板:
cp .env.example .envAPP_BASE_PATH 必须为空或以 / 开头;例如 /cpa,/cpa/ 会规范为 /cpa。
安全与数据说明:
- SQLite 数据库备份会保存应用数据库中的原始数据,备份文件不做加密。
- 面向浏览器的 API 会对 key-like source/lookup 字段做脱敏或稳定公开标识映射,但不会修改数据库原始值。
- 公开部署建议开启
AUTH_ENABLED=true,并在反向代理层配置 HTTPS。 - 登录 session 存在服务进程内存中,服务重启后已登录 session 会失效。
- Redis inbox 原始消息会自动清理:成功数据保留到当天结束后清理,失败数据保留 7 天。
本地开发
前置依赖
- Go 1.22+
- Node.js 22+
- npm
- 已运行的 CLIProxyAPI(CPA)
本地启动
- 复制本地配置:
cp .env.example .env- 启动后端:
go run ./cmd/server/main.go- 在另一个终端安装前端依赖并启动开发服务器:
npm --prefix ./web ci
npm --prefix ./web run dev -- --host 127.0.0.1- 构建前端生产产物:
npm --prefix ./web run build测试
运行完整的本地验证基线:
make verify也可以单独运行各项检查:
go test ./cmd/... ./internal/...
npm --prefix ./web run test
npm --prefix ./web run lint
npm --prefix ./web run typecheck
npm --prefix ./web run buildDocker
如果 CPA 已在宿主机运行:
# TZ 设置容器时区,日志时间会按该时区显示。
docker run -d \
--name cpa-usage-keeper \
--add-host=host.docker.internal:host-gateway \
-p 8080:8080 \
-v "$(pwd)/keeper/data:/data" \
-e TZ=Asia/Shanghai \
-e CPA_BASE_URL=http://host.docker.internal:8317 \
-e CPA_MANAGEMENT_KEY=replace-with-your-management-key \
-e REDIS_QUEUE_ADDR=host.docker.internal:8317 \
-e AUTH_ENABLED=true \
-e LOGIN_PASSWORD=replace-with-your-login-password \
ghcr.io/willxup/cpa-usage-keeper:latest/data 用于保存 SQLite 数据库、备份文件和日志文件,请挂载到持久化目录。
子路径反代
部署到 /cpa 时设置 APP_BASE_PATH=/cpa,并在反向代理中保留该前缀:
location /cpa/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}Daili Space deployment
This Space builds the usage dashboard from source and imports usage metadata from the separately configured CPA_BASE_URL. Dashboard auth is enabled with LOGIN_PASSWORD.
