Add token consumption tracking system Update version to v1.10.0

This commit is contained in:
2026-03-18 12:09:08 +08:00
parent c4afdb811b
commit b0c985e220
6 changed files with 426 additions and 5 deletions

122
README.md
View File

@@ -8,6 +8,7 @@ JChatGPT 是一个基于 Kotlin 的 Mirai Console 插件,它将大型语言模
- **丰富的工具系统**:包括网络搜索、代码执行、图像识别、群管理等
- **上下文记忆**:支持持久化记忆存储
- **好感度系统**:基于用户行为的好感度管理机制
- **Token消耗统计**记录每次对话的Token消耗支持多维度统计查询
- **LaTeX 渲染**:自动将数学表达式渲染为图片
- **灵活的触发方式**@机器人、关键字触发、回复消息等
- **权限控制**:细粒度的权限管理系统
@@ -37,12 +38,22 @@ AI 可以自动调用多种工具来完成复杂任务:
## 命令列表
- `/jgpt setToken <token>` - 设置 OpenAI API Token
### 基础命令
- `/jgpt enable <contact>` - 启用目标对话权限
- `/jgpt disable <contact>` - 禁用目标对话权限
- `/jgpt reload` - 重载配置文件
- `/jgpt favorability <userId> <value>` - 设置指定用户的好感度值(-100~100
- `/jgpt resetFavorability` - 重置所有用户的好感度
- `/jgpt clearMemory` - 清空所有对话记忆
- `/jgpt clearContextCache` - 清空所有对话上下文缓存
### 好感度管理
- `/jgpt setFavor <user> <value>` - 设置指定用户的好感度值(-100~100
- `/jgpt clearFavor` - 重置所有用户的好感度
### Token统计
- `/jgpt tokensDaily [days]` - 查看指定天数的每日Token消耗统计默认7天
- `/jgpt tokensUsers [limit]` - 查看Token消耗最多的用户排名默认Top 10
- `/jgpt tokensGroups [limit]` - 查看Token消耗最多的群组排名默认Top 10
- `/jgpt tokensQuery [userId] [days]` - 查询详细的使用记录(可按用户和时间过滤)
## 配置文件
@@ -284,6 +295,111 @@ JChatGPT 插件包含一个可选的好感度系统,用于根据用户行为
- `enableFavorabilitySystem` - 是否启用好感度系统默认true
- `favorabilityBaseShiftSpeed` - 好感度每日基础偏移速度(点/天默认2.0
## Token消耗统计
JChatGPT 插件内置了Token消耗统计功能可以记录每次对话的Token使用情况并提供多维度统计查询。
### 功能特性
- **自动记录**每次对话自动记录Token消耗
- **详细数据**:记录时间戳、用户、群组、模型、输入/输出Token数
- **多维统计**:支持按日期、用户、群组进行统计
- **灵活查询**:支持详细记录查询和过滤
### 记录内容
每次对话记录包含以下信息:
- 时间戳Unix timestamp
- 用户QQ号和昵称
- 群组ID群聊或null私聊
- 使用的模型名称
- 输入Token数promptTokens
- 输出Token数completionTokens
- 总Token数totalTokens
### 统计命令
#### 每日统计
```
/jgpt tokensDaily [days]
```
- 显示指定天数内的每日Token消耗统计
- 默认显示最近7天
- 输出示例:
```
最近 7 天 Token 使用统计:
2026-03-18: 15342 tokens
2026-03-17: 12890 tokens
2026-03-16: 9567 tokens
```
#### 用户排名
```
/jgpt tokensUsers [limit]
```
- 显示Token消耗最多的用户排名
- 默认显示Top 10
- 输出示例:
```
Token 使用排名 Top 10
张三(QQ:123456): 25430 tokens
李四(QQ:234567): 18920 tokens
王五(QQ:345678): 12450 tokens
```
#### 群组排名
```
/jgpt tokensGroups [limit]
```
- 显示Token消耗最多的群组排名
- 默认显示Top 10
- 仅统计群聊对话,不包括私聊
- 输出示例:
```
群组 Token 使用排名 Top 10
群 987654321: 45670 tokens
群 876543210: 32100 tokens
群 765432109: 28930 tokens
```
#### 详细查询
```
/jgpt tokensQuery [userId] [days]
```
- 查询详细的使用记录
- 可按用户ID过滤可选
- 可指定时间范围默认7天
- 最多显示20条记录
- 输出示例:
```
最近 7 天使用记录最多显示20条
[03-18 14:35] 群987654321 - 张三
模型: qwen-max, Tokens: 2345 (提示: 1234, 完成: 1111)
[03-18 14:30] 私聊 - 李四
模型: qwen-max, Tokens: 1876 (提示: 980, 完成: 896)
```
### 数据存储
- Token记录保存在插件数据目录的 `data/data.json` 文件中
- 使用 `AutoSavePluginData` 自动持久化
- 记录永久保存,不会自动删除
- 数据格式为JSON可手动查看和备份
### 使用场景
- **成本监控**了解API调用成本控制预算
- **使用分析**:分析哪些用户或群组使用最频繁
- **性能优化**:识别高消耗对话,优化提示词
- **趋势分析**:观察使用趋势,规划资源
### 注意事项
- 仅统计聊天模型的Token消耗
- 推理模型和视觉模型的消耗不在统计范围内
- 每次对话轮次都会单独记录
- 统计数据基于实际API返回的Token数
## 部署要求
- Java 11 或更高版本