Skip to content

统计与系统 API

统计路由位于 src/services/routes/statsRoutes.js,挂载于 /api/stats(JWT 认证); 系统路由位于 src/services/routes/systemRoutes.js,挂载于 /api(JWT 认证),两套 路由在 /api/stats/* 上存在部分重叠(详见下文)。响应封装分别为 ApiResponseChaiteResponse,两者结构一致:{ code: 0, data, message: 'ok' }

接口前缀说明

前缀来源说明
/api/statswebServer.js:736statsRoutesstatsRoutes.js
/apiwebServer.js:746systemRoutessystemRoutes.js,定义 /health/version/system/*/stats/*

Express 中 statsRoutessystemRoutes 各自独立匹配:/api/stats/usage 同时被两条路由定义——statsRoutesGET /usagesystemRoutesGET /stats/usage 均在 Router 上注册,实际响应的先后取决于注册顺序(statsRoutes 先注册;两实现字段不同:前者返回 usageStats.getStats(days) + today,后者返回 { today, recent, modelRanking, channelRanking })。 /api/stats/overview/api/stats/pricing*/api/stats/clear/api/stats/api-calls 等则只存在于 statsRoutes

概览统计

http
GET /api/stats
GET /api/stats/overview

两者行为一致(statsRoutes 内同一 handler):返回 statsService.getOverview() 并 附带 pricingmodelPricingService.calculateStatsOverviewCost 结果,计算失败时 该字段为 null)。

API 调用记录

http
GET /api/stats/api-calls

查询参数

参数类型默认说明
pagenumber1页码
limitnumber20每页条数
channelIdstring-按渠道过滤
successstring-'true' / 'false',其余视为不过滤
startTime / endTimenumber-毫秒时间戳

渠道 / 模型统计

http
GET /api/stats/channels    # 渠道统计(getChannelStats)
GET /api/stats/models      # 模型统计(getModelStats)

使用统计

http
GET  /api/stats/usage                      # 最近 N 天使用 + 今日统计
GET  /api/stats/usage/recent               # 最近使用记录
POST /api/stats/usage/clear                # 清除使用统计
GET  /api/stats/usage/channel/:id          # 单渠道使用统计
  • GET /usage:查询参数 days(默认 7),返回 { ...getStats(days), today } (仅 statsRoutes 实现)
  • GET /usage/recent:查询参数 limit(默认 50)、sourcestatus'success' / 'failed'

清除 / 重置统计

http
DELETE /api/stats/clear
POST   /api/stats/reset

两者行为一致(statsService.clear()),reset 为兼容前端保留。

价格统计

http
GET  /api/stats/pricing                       # 获取模型价格信息
GET  /api/stats/pricing/calculate             # 计算费用
POST /api/stats/pricing/refresh               # 强制刷新价格缓存

GET /pricing/calculate 查询参数:model(必填,缺失返回 400)、inputTokensoutputTokens(均为 token 数)。

系统路由(systemRoutes)

健康检查(公开,/api/health 同实现)

http
GET /api/health

响应不带 {code,data,message} 包装,直接返回:

json
{
  "status": "healthy",
  "timestamp": 1700000000000,
  "uptime": 86400,
  "memoryUsage": { "heapUsed": 256, "heapTotal": 512, "rss": 700 }
}

版本信息

http
GET /api/version

返回仓库类型/分支/提交信息:

json
{
  "code": 0,
  "data": {
    "type": "beta",
    "typeName": "内测版",
    "repoName": "chatgpt-plugin",
    "remoteUrl": "",
    "commitId": "aae68eaf",
    "branch": "frontend",
    "commitTime": "2026-09-18 ... +0800",
    "shortTime": "..."
  },
  "message": "ok"
}

性能指标

http
GET /api/metrics

返回 { timestamp, uptime, process: { pid, cpu, memory }, system: { platform, arch, nodeVersion } }

系统信息

http
GET /api/system/info

返回 { version: '1.0.0', systemInfo: { nodejs, platform, arch, memory }, stats: { totalConversations: 0, activeUsers: 0, apiCalls: 0, presets } }

实时监控

http
GET /api/system/monitor

返回三组数据:

  • memoryheapUsed / heapTotal / rss / external / systemTotal / systemFree / heapUsedPercent / systemUsedPercent(单位 MB)
  • apirpmrpm5successRateavgLatencytokensLastMinutetokensPerMinute
  • systemuptimenodeVersionplatformcpuCountloadAvg

释放端口(热重载用)

http
DELETE /api/system/release_port

仅本机请求或主人可调用,否则 403仅允许本机内部调用或主人释放 Web 服务端口)。 也可通过 x-chatai-internal-token 内部令牌调用。共享端口模式下返回 { success: false, message: '无需释放或共享端口模式' }

系统版本

http
GET /api/system/version

返回 { version: '1.0.0', commitId, commitTime, branch, nodejs, platform }

服务器模式

http
GET /api/system/server-mode
PUT /api/system/server-mode

GET 返回 { isTRSS, sharePortEnabled, currentMode: 'shared'|'standalone', port, canRestart }。 PUT 请求体 { sharePort: boolean }(非布尔返回 400),写入 web.sharePort 并回复 { success: true, message: '配置已保存,重启后生效', needRestart: true }

重启服务

http
POST /api/system/restart

请求体

参数类型默认说明
typestringreloadreload 只重载 WebServer;full 重启 Bot(不支持时 process.exit(0)

响应立即返回 { success: true, message: '正在重启...' },100ms 后执行。

系统路由内的统计(GET /api/stats/*,与 statsRoutes 并存)

http
GET  /api/stats
GET  /api/stats/full                       # 完整统计(getStats)
POST /api/stats/reset                      # 重置统计
GET  /api/stats/usage                      # { today, recent, modelRanking, channelRanking }
GET  /api/stats/usage/recent               # 过滤参数同 UsageStats
POST /api/stats/usage/clear
GET  /api/stats/usage/channel/:id
GET  /api/stats/tool-calls                 # 工具调用汇总
GET  /api/stats/tool-calls/records         # 工具调用记录
GET  /api/stats/tool-calls/record/:id      # 单条记录(404: 记录不存在)
GET  /api/stats/tool-calls/errors          # 工具调用错误(limit 默认 50)
POST /api/stats/tool-calls/clear           # 清除工具调用统计
GET  /api/stats/unified                    # 统一完整统计

GET /stats/tool-calls/records 查询参数:limit(默认 100)、toolNamesuccessuserIdgroupIdkeywordstartTimeendTime

实用查询组合

需求端点
概览 + 费用估算GET /api/stats/overview
实时 KPIs(内存/RPM/延迟/token)GET /api/system/monitor
工具调用明细GET /api/stats/tool-calls/records?toolName=...
单渠道用量GET /api/stats/usage/channel/:id

基于 MIT 许可发布