系统监控
上线版本
每次部署新二进制自动登记一版(按 MD5 去重),记录版本号与中文功能说明。正在运行的版本已高亮标记。
{{ relBuild.commit }}
· 构建于 {{ relBuild.built_at }}
· md5 {{ relCurrentMd5.slice(0,12) }}
| 版本 | 功能说明 | 构建时间 | commit | 部署时间 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ r.version }} {{ r.title }} |
{{ r.description || '-' }} | {{ r.built_at || '-' }} | {{ r.git_commit || '-' }} | {{ (r.deployed_at||'').slice(0,19).replace('T',' ') }} | 运行中 补录 历史 | |
| 暂无上线记录 | ||||||
成本费用
汇总上游调用费用、待计量请求及订阅等固定费用;不同币种分别统计。
含参考价格覆盖:{{ expenseCoverage(expenseTotals.price_coverage_percent) }}
上游回报 {{ expenseMoney(r.reported_amount,r.currency) }} · 单价计算 {{ expenseMoney(r.calculated_amount,r.currency) }}
固定费用摊销:{{ expenseMoney(r.fixed_amount,r.currency) }}
参考估价(另列):{{ expenseReferenceSummary(r) }}
历史预算计价(另列):{{ expenseMoney(r.legacy_budget_estimate_usd,'USD') }}
{{ fmtNum(r.unknown_requests) }} 个待计量,{{ fmtNum(r.partial_requests) }} 个仅部分已知
每日已知费用 · {{ series.currency||'币种待确定' }}
供应商费用
| 供应商 | 币种 | 请求数 | 已知请求费 | 固定费用摊销 | 参考估价 | 待计量 / 部分 | |
|---|---|---|---|---|---|---|---|
| {{ r.provider||'未归属' }} | {{ r.currency||'待确定' }} | {{ fmtNum(r.requests) }} | {{ expenseSummaryAmount(r,'amount') }} | {{ expenseMoney(r.fixed_amount,r.currency) }} | {{ expenseReferenceSummary(r) }} | {{ fmtNum(r.unknown_requests) }} / {{ fmtNum(r.partial_requests) }} | |
| 暂无供应商记录 | |||||||
本范围固定费用
| 费用名称 | 供应商 | 周期金额 | 本范围摊销 | 费用周期 |
|---|---|---|---|---|
| {{ r.name }} | {{ r.provider||'全系统' }} | {{ expenseMoney(r.amount,r.currency) }} | {{ expenseMoney(r.applied_amount,r.currency) }} | {{ fmtTime(r.period_start) }} — {{ fmtTime(r.period_end) }} |
全部模型费用
{{ expenseModelRows.length }} 个供应商 / 模型 / 币种组合| 供应商 / 模型 | 币种 | 请求数 | 已知请求费 | 已计量平均每次 | 参考估价 | 待计量 / 部分 | |
|---|---|---|---|---|---|---|---|
| {{ r.model||'未识别模型' }} {{ r.provider||'未归属' }} | {{ r.currency||'待确定' }} | {{ fmtNum(r.requests) }} | {{ expenseSummaryAmount(r,'amount') }} | {{ expenseAverage(r) }} | {{ expenseReferenceSummary(r) }} | {{ fmtNum(r.unknown_requests) }} / {{ fmtNum(r.partial_requests) }} | |
| 所选范围暂无模型记录 | |||||||
| 供应商 / 模型 | 请求类型 | 计价方式 | 费率 / 币种 | 依据与备注 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ r.provider||'*' }} {{ r.model||'*' }} | {{ expenseRequestTypes[r.request_type]||r.request_type }} | {{ expenseModes[r.mode]||r.mode }} | {{ expenseRateLabel(r) }} | {{ r.source||'未填写依据' }} {{ r.note }} | {{ r.enabled?'启用':'停用' }} | |
| 暂无价格规则,未知成本将明确标记为待计量 | ||||||
| 名称 / 类型 | 供应商 / 账户 | 周期金额 | 费用周期 | 备注 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ r.name }} {{ expenseFixedCategories[r.category]||r.category }} | {{ r.provider||'全系统' }} {{ r.credential_id?'账户 #'+r.credential_id:'未限定账户' }} | {{ expenseMoney(r.amount,r.currency) }} | {{ fmtTime(r.period_start) }} {{ fmtTime(r.period_end) }} | {{ r.note }} | {{ r.enabled?'启用':'停用' }} | |
| 暂无固定费用。可登记 Codex 订阅、服务器或资源包的实际周期支出。 | ||||||
成本优化
按模型对比请求日志的旧计价金额、其他供应商参考价和市场参考价。价格是按日期抓取的牌价快照({{ cost.catalog_checked_at || '—' }},人民币按 {{ cost.cny_per_usd || '—' }} 折美元),花费取自请求日志。这里只出建议,不改路由:换供应商要调用方改模型名,或由我们启用对应账号。
花费是账本记的数:大模型、图片、语音按我们向调用方的计费价记(Claude 走订阅账号池,账本按 API 牌价记,实付是订阅费);KIE 的异步视频自 09-17 起按 KIE 实扣结算。可省金额 = 用量 ×(现价 − 更便宜的价):实扣部分按上游价折回用量,其余按计费价折回。只比同一个模型、交互式按量购买、官方/大云厂商/正规平台的报价;Batch/Flex/高峰价/预付套餐/其它区域/限时优惠、替代模型、中转商只展示,不计入可省。
按供应商
花费最多的模型
点模型跳到它的比价;标「未比价」的还没有价格数据。
| 模型 | 计价单位 | 现在走 | 网关内最便宜 | 全网最低(可信) | 窗口花费 | 可省(网关内 / 全网) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ f.name }} {{ costModalityLabels[f.modality] || f.modality }} | {{ f.unit }} | {{ f.current.vendor }} ${{ fmtUnitUSD(f.current.usd) }} {{ costTrustLabel(f.current.trust) }}— | {{ f.cheapest_gateway.vendor }} ${{ fmtUnitUSD(f.cheapest_gateway.usd) }} {{ costTrustLabel(f.cheapest_gateway.trust) }} 暂无可用账号—
中转商 {{ f.cheapest_gateway_any.vendor }} ${{ fmtUnitUSD(f.cheapest_gateway_any.usd) }}(不推荐) |
{{ f.cheapest_trusted.vendor }} ${{ fmtUnitUSD(f.cheapest_trusted.usd) }} {{ costTrustLabel(f.cheapest_trusted.trust) }}—
{{ costTierLabel(f.cheapest_other_tier.tier) }}:{{ f.cheapest_other_tier.vendor }} ${{ fmtUnitUSD(f.cheapest_other_tier.usd) }} |
${{ fmtUSD(f.spend_usd) }} | ${{ fmtUSD(f.savings_gateway_usd) }} / ${{ fmtUSD(f.savings_trusted_usd) }} | ||||||||||||||||
|
建议:{{ f.advice }}
窗口花费:{{ i?' · ':'' }}{{ s.model }}({{ s.provider }}){{ fmtNum(s.requests) }} 次 ${{ fmtUSD(s.cost_usd) }}(其中上游按实结算 ${{ fmtUSD(s.settled_usd) }})
|
||||||||||||||||||||||
| {{ costOnlySpend ? '窗口内这一类没有花费;取消「只看有花费的」可看全部比价' : '没有比价数据' }} | ||||||||||||||||||||||
按「全网最低(可信)」能省的钱从多到少排。金额是按本窗口用量、按牌价比例折算的估计,换之前先小流量试跑确认效果和稳定性。
{{ f.advice }}
看全部报价其它建议(不计入可省金额)
这些模型换渠道省不了钱,但换型号、换购买方式或调整用法能省;效果要先评估。
{{ f.advice }}
还没有比价数据的花费
这些模型在窗口内花了钱,但价格快照里还没有它们,补进 catalog.json 后才会出建议。
| 模型 | 供应商 | 请求 | 花费 |
|---|---|---|---|
| {{ u.model }} | {{ u.provider }} | {{ fmtNum(u.requests) }} | ${{ fmtUSD(u.cost_usd) }} |
- {{ n }}
计费偏差
网关向调用方记的价和上游牌价差 20% 以上,或上游收钱而我们不计价的。调用方的日预算按左边这个数扣:记高了会提前拦住调用方,记低了预算形同虚设。
| 网关模型 | 单位 | 我们计费价 | 上游牌价 | 偏差 | 来源 · 查价日 |
|---|---|---|---|---|---|
| {{ g.gateway_model }} | {{ g.unit }} | {{ g.billing_usd ? '$'+fmtUnitUSD(g.billing_usd) : '未计价' }} | ${{ fmtUnitUSD(g.usd) }} | {{ g.billing_usd ? ((g.billing_usd/g.usd*100-100).toFixed(0)+'%') : '记 $0' }} | 来源 · {{ g.checked_at }} |
| 没有明显偏差 | |||||
全部报价
查价日超过 30 天的标黄,用之前先重新核一遍。
| 模型 | 供应商 | 牌价(原币) | 折合 $/单位 | 可信度 | 来源 | 查价日 |
|---|---|---|---|---|---|---|
| {{ o.family }} | {{ o.vendor }} | {{ costPrice(o) }} {{ o.price_unit }} | {{ o.trust==='self-hosted' ? '无账单' : '$'+fmtUnitUSD(o.usd) }} | {{ costTrustLabel(o.trust) }} {{ costTierLabel(o.tier) }} 替代方案 | {{ o.source_url }}自建 | {{ o.checked_at }} |
告警记录
凭据下线/恢复/被封、巡检汇总都记在这里。以前只发 Telegram,那个 bot 2026-09-14 销毁后这些事件仍在发生但无处可查 —— 凭据欠费恰好是这类。保留 30 天。
| 时间 | 类型 | 供应商 | 凭据 | 原因 | 详情 |
|---|---|---|---|---|---|
| {{ (a.timestamp||'').slice(0,19).replace('T',' ') }} | {{ a.kind }} | {{ a.provider || '—' }} | {{ a.credential_name || '—' }} #{{ a.credential_id }} | {{ a.reason || '—' }} | {{ a.message }} |
| 窗口内没有告警 | |||||
被拒请求
鉴权失败与限速抓住的请求在进入业务处理前就被挡下,不会进请求日志。某个消费方拿着已失效的 key 天天重试,只能在这里看到。按小时聚合,保留 30 天。
| 来源 IP | key 尾号 | 原因 | 路径数 | 次数 | 首次 | 最近 |
|---|---|---|---|---|---|---|
| {{ r.client_ip }} | {{ r.key_suffix || '—' }} | {{ r.reason }} | {{ r.paths }} | {{ r.total }} | {{ (r.first_seen||'').slice(0,19).replace('T',' ') }} | {{ (r.last_seen||'').slice(0,19).replace('T',' ') }} |
| 窗口内没有被拒请求 | ||||||
key 尾号可以到「API Keys」里对:对得上的是自己人拿着停用/超限的 key,对不上的通常是外部扫描。
操作审计
后台每次写操作(凭据增删改、分组调整、登录等)自动落库留痕,配置类变更查这里;二进制部署查「上线版本」。
| 时间 | 操作 | 对象 / 详情 | 来源 IP |
|---|---|---|---|
| {{ (l.timestamp||'').slice(0,19).replace('T',' ') }} | {{ l.action }} | {{ l.detail || '-' }} | {{ l.ip }} |
| 暂无审计记录(新功能上线后产生的写操作才会落库) | |||
仪表盘
系统概览与实时状态 · 当前统计窗口:{{ dashRangeLabel }} · 已筛选 {{ dashFilterCount }} 项(账户状态与累计请求为全站数据,不受筛选影响)
账户额度概览
{{ dashRangeLabel }}统计筛选:{{ dashFilterSummary }}
请求趋势({{ dashRangeLabel }})
供应商用量({{ dashRangeLabel }})
模型用量 Top 15({{ dashRangeLabel }})
按请求数排名Token 消耗({{ dashRangeLabel }})
按供应商拆分输入 / 输出 Token,含参考估价Top 20 账户用量({{ dashRangeLabel }})
按请求量排名 · 含 Token 与参考估价Top 20 供应商账号用量({{ dashRangeLabel }})
上游凭据 · 按请求量排名 · 含 Token 与参考估价巡检状态
供应商概览
供应商管理
管理 AI 供应商配置和状态
账户管理
管理所有供应商的 API Key、Token、Cookie 等认证凭证(每个供应商支持多账户)
| ID {{credSortIndicator('id')}} | 供应商 {{credSortIndicator('display_provider')}} | 分组 | 名称 {{credSortIndicator('name')}} | Key/Token | 状态 {{credSortIndicator('status')}} | 离线原因 | 额度 {{credSortIndicator('quota')}} | 请求数 {{credSortIndicator('request_count')}} | Tokens(24h) | 创建时间 {{credSortIndicator('created_at')}} | 最后使用 {{credSortIndicator('last_used_at')}} | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.display_provider||c.provider }} | {{ groupLabel(c.group) }} | {{ c.name || '-' }} | {{ c.key_preview }} | {{ statusLabel(c.status) }} | {{ c.quota===-1?'无限':c.quota }} | {{ c.request_count }} | {{ credUsageMap[c.id]?fmtTokens(credUsageMap[c.id].total_tokens):'-' }} | {{ fmtTime(c.created_at) }} | {{ fmtTime(c.last_used_at) }} | |||
| 暂无账户。点击"+ 添加账户"或"批量添加"来导入 API Key / OAuth Token / Cookie 等认证凭证。 支持 OpenAI API Key、Claude API Key、Gemini API Key、Grok SSO Cookie、Kiro/Copilot/Windsurf OAuth Token | |||||||||||||
模型列表
所有可用模型(含别名映射)
| 模型 ID | 来源 | 类型 | 可用账户 |
|---|---|---|---|
| {{ m.id }} 别名 | {{ m._source }} | {{ m._isAlias?'别名映射':m._provType }} | {{ m._credCount }} |
别名映射
将自定义模型名称映射到真实模型和供应商
| ID | 别名 | 目标模型 | 目标供应商 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ a.id }} | {{ a.alias }} | {{ a.target_model }} | {{ a.target_provider || '自动' }} | {{ a.enabled?'启用':'停用' }} | |
| 暂无别名。创建别名可将自定义模型名映射到真实模型。 | |||||
模型黑名单
被屏蔽的模型不会出现在 /v1/models 列表中
| ID | 模型 | 原因 | 操作 |
|---|---|---|---|
| {{ b.id }} | {{ b.model }} | {{ b.reason || '-' }} | |
| 黑名单为空。添加模型名称可将其从模型列表中屏蔽。 | |||
API 调试
测试任意模型的 API 调用
/admin/playground,无需 API Key,直接测试上游模型。
响应
请求(走 admin/playground,直接测上游模型)
响应
响应
响应
响应
响应
/v1/ 端点,需要 API Key 认证,完全模拟外部调用方的体验。
响应
原始响应
原始响应
响应
响应
请求日志
API 请求历史记录(持久化存储)
| 时间 | 分组 | Key | Key名称 | 供应商 | 账户 | 模型 | 路径 | 状态码 | 状态 | 延迟 | 费用 | 类型 | 客户端IP | 请求参数 | 响应结果 | 详情 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ fmtTime(l.timestamp) }} | {{ l.group }}- | {{ l.api_key_suffix?('****'+l.api_key_suffix):'-' }} | {{ l.provider }} | {{ l.model }} | {{ l.request_path||'-' }} | {{ l.status_code }} | {{ asyncStatusLabel(l.async_status) }} - | {{ l.latency_ms }}ms +{{ gatewayOverhead(l) }}ms ×{{ l.upstream_attempts }} | {{ expenseLogAmount(l) }} {{ expenseStatusLabel(expenseLogCost(l).status) }} |
{{ l.stream?'流式':'普通' }} | {{ l.client_ip }} |
|
|
|||
| 暂无日志 | ||||||||||||||||
配额管理
查看和管理每个账户的实际配额使用情况
| ID{{quotaSortDir==='asc'?' ▲':' ▼'}} | 供应商{{quotaSortDir==='asc'?' ▲':' ▼'}} | 名称{{quotaSortDir==='asc'?' ▲':' ▼'}} | 分组{{quotaSortDir==='asc'?' ▲':' ▼'}} | 状态{{quotaSortDir==='asc'?' ▲':' ▼'}} | 配额{{quotaSortDir==='asc'?' ▲':' ▼'}} | 已用{{quotaSortDir==='asc'?' ▲':' ▼'}} | 使用率{{quotaSortDir==='asc'?' ▲':' ▼'}} | 最后使用{{quotaSortDir==='asc'?' ▲':' ▼'}} | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ q.id }} | {{ q.display_provider }} | {{ q.group }} | {{ q.status }} ({{ q.offline_reason }}) | ∞ 无限 0 (已耗尽) {{ q.quota }} | {{ q.request_count.toLocaleString() }} |
{{ q.quota_percent.toFixed(0) }}%
-
|
{{ q.last_used_at ? new Date(q.last_used_at).toLocaleString('zh-CN',{month:'2-digit',day:'2-digit',hour:'2-digit',minute:'2-digit'}) : '-' }} | ||
| 暂无数据 | |||||||||
API Keys 管理
管理消费端 API Key,用于保护 /v1/ 接口访问。未创建任何 Key 时接口开放访问。
| ID | 名称 | 分组 | Key | 状态 | 请求数 | 速率限制 | 最大在飞 | 日限额 | 过期时间 | 最后使用 | 创建时间 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ k.id }} | {{ k.name }} | {{ groupLabel(k.group) }} | {{ k.key_preview }} | {{ k.status==='active'?'启用':'禁用' }} | {{ k.request_count }} | {{ k.rate_limit===0?'无限制':k.rate_limit+'/分钟' }} | {{ !k.max_inflight?'无限制':k.max_inflight+' 个在飞' }} | 无限制 ${{ keyUsedToday(k).toFixed(2) }} / ${{ Number(k.daily_cost_limit_usd).toFixed(2) }} | {{ k.expires_at&&k.expires_at!=='0001-01-01T00:00:00Z'?fmtTime(k.expires_at):'永不' }} | {{ fmtTime(k.last_used_at) }} | {{ fmtTime(k.created_at) }} |
• Header:
Authorization: Bearer rp-xxx...• Header:
X-API-Key: rp-xxx...• Query:
?key=rp-xxx...
API 文档
OpenAI 兼容的 API 接口文档
Base URL
认证方式
所有 API 请求需要携带 API Key(如已配置):
也支持 X-API-Key Header 或 ?key= Query 参数。
当前未配置 API Key,接口开放访问。
GET /v1/models
获取所有可用模型列表。
响应示例
POST /v1/chat/completions
发送聊天补全请求。完全兼容 OpenAI Chat Completions API 格式。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型名称(支持别名映射) |
| messages | array | 是 | 消息列表,每条包含 role 和 content |
| max_tokens | integer | 否 | 最大生成 token 数 |
| stream | boolean | 否 | 是否使用 SSE 流式输出 |
| temperature | number | 否 | 采样温度 (0-2) |
响应示例
支持的供应商和模型
集成示例
Python (openai SDK)
Node.js (openai SDK)
错误码
| HTTP 状态码 | 类型 | 说明 |
|---|---|---|
| 401 | authentication_error | API Key 缺失或无效 |
| 400 | invalid_request | 请求参数错误(如缺少 model) |
| 502 | proxy_error | 上游供应商请求失败 |
分组管理
管理账户分组,用于隔离不同用途的凭证(如自用/商用/测试等)
| ID | 标识 (slug) | 显示名称 | 描述 | 关联账户数 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ g.id }} | {{ g.name }} | {{ g.label }} | {{ g.description || '-' }} | {{ g.cred_count }} | {{ g.created_at }} | |
| 暂无分组 | ||||||
系统设置
运行时配置