这是一个用 Python 编写的常驻采集程序,用来从 CLIProxyAPI 暴露的 Redis RESP 队列中持续拉取最近请求的用量记录,并按天保存成 JSONL 文件。
.
├── .env.example
├── README.md
├── pyproject.toml
├── uv.lock
├── src/
└── tests/
- 创建项目内虚拟环境:
uv venv- 安装依赖:
uv sync --extra dev- 复制环境文件:
cp .env.example .env如果你想把它当成一个可安装工具,直接在当前项目目录执行:
uv tool install .安装后会得到 usage-collector 命令。
如果要更新已安装版本:
uv tool upgrade resp-usage-collector如果要卸载:
uv tool uninstall resp-usage-collector把下面这些值写入 .env:
RESP_HOST:RESP 服务地址RESP_PORT:RESP 服务端口RESP_KEY:Management key,必填RESP_QUEUE:队列名称BATCH_SIZE:每次批量拉取的条数EMPTY_SLEEP:队列为空时的等待秒数RETRY_SLEEP:连接失败时的重试秒数OUTPUT_DIR:输出目录(必须是绝对路径)
示例:
RESP_HOST=127.0.0.1
RESP_PORT=14991
RESP_KEY=sk-9999
RESP_QUEUE=queue
BATCH_SIZE=50
EMPTY_SLEEP=5
RETRY_SLEEP=5
OUTPUT_DIR=/home/your-user/resp-usage-data优先使用项目脚本:
uv run usage-collector如果你想显式带参数,也可以这样:
uv run usage-collector --host 127.0.0.1 --port 14991 --key sk-9999 --output-dir /home/your-user/resp-usage-data也可以直接运行模块:
uv run python -m usage_collector.cli --key sk-9999 --output-dir /home/your-user/resp-usage-data程序会把记录追加写入到按天切分的文件里,例如:
/home/your-user/resp-usage-data/usage-stats-2026-05-12.jsonl
每行是一条 JSON 记录,适合后续脚本、jq、日志管道或批处理消费。
项目附带了一个单文件工具 jsonl2html.py,可以将生成的JSONL用量文件转换成中文友好的交互式HTML报表,方便查看和分析。
- 📊 自动生成统计概览:总请求数、成功率、Token消耗统计、延迟统计、模型统计
- 📋 响应式表格展示核心数据:时间、模型、延迟、输入/输出/总Token、缓存用量、请求状态、API Key
- 🔍 支持全局搜索、按模型筛选、按请求状态筛选
- 📂 点击表格行可展开查看完整JSON详情,支持语法高亮
- 🔑 API Key默认打码保护,点击可切换显示明文
- 📱 完全响应式设计,适配桌面和移动端屏幕
- 📦 生成的HTML是完全独立的单文件,无任何外部依赖
直接运行脚本并指定JSONL文件所在的文件夹路径:
uv run jsonl2html.py <JSONL文件所在文件夹路径>- 自动删除目标文件夹内所有已存在的
.html文件 - 查找文件夹内所有
.jsonl文件 - 逐个处理并生成同名的
.html报表文件 - 处理完成后输出结果提示
uv run jsonl2html.py /home/your-user/resp-usage-data处理完成后,会在同目录下生成对应的HTML文件:
usage-stats-2026-05-12.jsonl → usage-stats-2026-05-12.html
- 读取
.env和命令行参数 - 检查
RESP_KEY - 解析并规范化
OUTPUT_DIR - 自动创建输出目录(如果不存在)
- 连接 RESP 队列并认证
- 批量执行
RPOP queue 50 - 有数据就写入当天 JSONL 文件
- 队列为空就等待
EMPTY_SLEEP秒 - 出现连接或读取异常就等待
RETRY_SLEEP秒后重试
如果没填 RESP_KEY,程序会直接报错并退出。请先确认 .env 是否存在、内容是否正确。
OUTPUT_DIR 现在要求填写绝对路径。程序会自动创建目录,如果路径不存在就新建。
这表示 Management 端触发了失败次数限制。通常是:
RESP_KEY写错- 服务端没有启用 Management
- 端口连错了
先修正配置,再重新运行。
请检查:
OUTPUT_DIR是否有写权限- 队列里是否真的有数据
RESP_QUEUE是否和服务端使用的一致
- 所有依赖只安装在项目自己的虚拟环境里
- 可以使用
uv tool install .进行本地工具安装 - 不做系统级安装
- 不会修改系统路径或全局环境
- 默认按天生成新文件,旧文件会继续追加
- 这是一个采集工具,不是完整 Redis 服务