news 2026/9/13 18:14:25

CodexBar 接入 GroqCloud 用量统计:GroqCloud Provider 与 Enterprise Prometheus 指标 API 实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CodexBar 接入 GroqCloud 用量统计:GroqCloud Provider 与 Enterprise Prometheus 指标 API 实战指南

CodexBar 接入 GroqCloud 用量统计:GroqCloud Provider 与 Enterprise Prometheus 指标 API 实战指南

【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar

CodexBar 将 GroqCloud 作为独立的用量统计数据源接入,通过 GroqCloud API Key 与 Groq 的 Enterprise Prometheus 指标 API 获取请求、Token 与缓存命中速率,并在菜单栏中以每分钟速率的形式呈现。本指南完整介绍配置方法、菜单显示语义、底层 Prometheus 查询实现与错误处理机制,阅读后你可以在本地为 CodexBar 配置 GroqCloud 统计、理解速率指标的计算来源,并快速排查权限与数据缺失问题。

GroqCloud Provider 在 CodexBar 中的定位

GroqCloud Provider 与 xAI 的 Grok Provider 是完全独立的两个数据源,这一点在官方文档 docs/groqcloud.md 中明确说明:GroqCloud 使用GroqCloud API KeyEnterprise Prometheus 指标 API获取用量数据,而 Grok 走的是另一套 xAI 认证与接口体系。

从源码可以印证这一设计:在 ProviderManifest.swift 中,Groq Provider 的 descriptor 通过GroqProviderDescriptor.descriptor注册;而 GroqProviderDescriptor.swift 中 CLI 名称为groqcloud,并带有groqgroq-api两个别名。也就是说:

  • 在 CodexBar 设置界面中,该 Provider 显示为Groq,切换标题为 "Show Groq usage";
  • 在 CLI 与配置层面,它的标识是groqcloud(别名groq);
  • 默认处于关闭状态(defaultEnabled: false),需要显式启用。

配置 GroqCloud API Key

GroqCloud 的密钥存储在 CodexBar 共享的应用/CLI 配置中,官方文档给出了两种配置方式。

方式一:通过 CLI 写入共享配置

printf '%s' "$GROQ_API_KEY" | codexbar config set-api-key --provider groq --stdin

这条命令将GROQ_API_KEY环境变量的值通过标准输入写入 CodexBar 解析出的配置文件(默认位于~/.codexbar/config.json),同时默认启用该 Provider。命令的完整形态可从 CLIHelp.swift 中看到,它支持:

codexbar config set-api-key --provider <name> (--api-key <key>|--stdin) [--label <label>] [--usage-scope team] [--organization-id <org>] [--workspace-id <project>] [--no-enable]

其中--provider参数接受 provider 名称,Groq 对应的名称就是 descriptor 中定义的groqcloud(别名groq,因此--provider groq也可用)。需要留意的是set-api-key默认会启用该 Provider;若只想存储密钥而不启用,可追加--no-enable。存储后的密钥还会以 Token Account 的形式支持多密钥管理,相关能力定义在 GroqProviderDescriptor.swift 的ProviderCredentialAdapter.apiKey中(标题 "API keys"、通过环境变量注入)。

方式二:进程环境变量

直接设置GROQ_API_KEY环境变量即可,CodexBar 会通过GroqSettingsReader读取。相关的环境变量键在 GroqSettingsReader.swift 中定义:

环境变量作用默认值
GROQ_API_KEYGroqCloud API Key无(缺失时报missingCredentials
GROQ_API_URL覆盖 API 基础地址https://api.groq.com/v1

其中GROQ_API_URL用于接入私有网关(private gateway)或自建代理。值得注意的校验细节是:GroqSettingsReader.validateEndpointOverrides会调用ProviderEndpointOverrideValidator.normalizedHTTPSURL校验该覆盖值,必须是 HTTPS URL 或裸主机名,否则会抛出invalidEndpointOverride错误("Groq endpoint override GROQ_API_URL must use HTTPS or a bare host.")。读取时还会自动去掉首尾空白与成对的引号包裹(见cleaned方法),避免复制密钥时带入多余字符。

菜单栏显示指标与语义

启用并配置完成后,GroqCloud 的用量会显示在菜单栏,官方文档定义的显示层级为:

  • Primary(主指标):每分钟请求数(requests per minute);
  • Secondary(次级指标):每分钟 Token 数(tokens per minute);
  • Tertiary(第三指标):每分钟 Prompt 缓存命中数(prompt cache hits per minute),仅当该指标存在时才显示;
  • Dashboard 链接:跳转到 GroqCloud 指标面板(https://console.groq.com/dashboard/usage)。

这套语义在源码 GroqUsageFetcher.swift 的GroqUsageSnapshot中有完整对应实现:

public var requestsPerMinute: Double { self.requestRatePerSecond * 60 } public var tokensPerMinute: Double { (self.inputTokenRatePerSecond + self.outputTokenRatePerSecond) * 60 } public var cacheHitsPerMinute: Double { self.promptCacheHitRatePerSecond * 60 }

toUsageSnapshot()中:

  • primary填充requestsPerMinute,描述文本为"X req/min"
  • secondary填充tokensPerMinute,描述文本为"X tok/min"
  • tertiary仅在promptCacheHitRatePerSecond > 0时生成,描述文本为"X cache/min",否则为nil——这正对应文档中"当该指标存在时"的表述;
  • 窗口固定为 5 分钟(windowMinutes: 5),因为底层 PromQL 查询使用的就是rate5m(5 分钟速率);
  • 登录方式标记为 "Prometheus metrics"。

数值的显示格式也做了分级处理(formatDecimal):大于等于 100 显示整数、10 到 100 之间显示 1 位小数、小于 10 显示 2 位小数,保证菜单栏在窄宽度下也能清晰可读。

底层实现:Prometheus 指标查询

GroqCloud Provider 的用量并非猜测或从无关接口拼凑而来,而是直接查询 Groq 的 Enterprise Prometheus 指标 API。核心实现在 GroqUsageFetcher.swift 的fetchUsage中,其请求流程如下:

  1. 校验 API Key 非空,否则抛出missingCredentials
  2. 校验GROQ_API_URL覆盖值合法;
  3. 基于GroqSettingsReader.apiURL(默认https://api.groq.com/v1)拼接出{base}/metrics/prometheus端点;
  4. 并发执行 4 个 PromQL 查询(每条独立请求{base}/metrics/prometheus/api/v1/query):
查询对应指标
sum(model_project_id_status_code:requests:rate5m)请求速率
sum(model_project_id:tokens_in:rate5m)输入 Token 速率
sum(model_project_id:tokens_out:rate5m)输出 Token 速率
sum(model_project_id:prompt_cache_hits:rate5m)Prompt 缓存命中速率
  1. 每个请求使用Authorization: Bearer <API Key>认证、Accept: application/json头,通过共享的ProviderHTTPClient传输层发出。

Prometheus 返回的标量解析逻辑(parseScalar)值得单独说明:CodexBar 解析响应中status == "success"data.result序列,取每个序列value数组的最后一个数值元素并求和(compactMap+reduce(0, +))。由于value数组中时间戳为字符串、数值为数字,解码器实现了PrometheusValue枚举同时兼容数字与字符串两种类型,保证容错。

请求过程使用 Swift 并发(async let)同时发起 4 个查询,避免串行等待拖慢刷新;超时与错误信息则通过responseSummary截取响应前 500 字节作为诊断摘要。

错误处理与排障

官方文档特别强调:如果 API Key 缺少 Prometheus 指标访问权限,CodexBar 会直接展示 API 返回的错误,而不是从无关端点猜测数据。这与源码中的错误分类设计一致,GroqUsageError(见 GroqUsageFetcher.swift)定义了 5 类错误:

错误类型触发条件
missingCredentialsAPI Key 缺失(提示设置apiKey~/.codexbar/config.jsonGROQ_API_KEY
invalidURLPrometheus 指标 URL 构造失败
accessDeniedHTTP 401/403,说明密钥无指标访问权限
apiError其他非 2xx 响应,附带 HTTP 状态码与响应摘要
parseFailed响应 JSON 解析失败或status != "success"

从 fetch 管道角度看(GroqProviderImplementation.swift),Prometheus 密钥路径的 strategy ID 为groq.api,source label 为metrics;当密钥缺失时抛出missingCredentials。普通 GroqCloud 密钥(未开通 Enterprise Prometheus)在此接口上通常会得到 404 之类的响应,CodexBar 不会据此伪造零数据,而是如实呈现错误或空数据,方便你区分"没数据"与"权限不足"两种情况。

需要补充的背景是:从源码结构看,Groq 数据源实际存在两条路径——文档所述的 API Key + Prometheus 是其中一条(groq.api);另一条是读取浏览器中console.groq.com会话 Cookie(stytch_session/stytch_session_jwt)走控制台平台 API 的groq.console路径(相关实现见 GroqConsoleSession.swift 与 GroqConsoleFetcher.swift),fetch 计划按auto模式先尝试控制台会话、再回退到 Prometheus 密钥路径。这与文档强调的"API Key 可选、仅用于 Enterprise Prometheus 指标"保持一致——设置界面的 API Key 字段副标题也写明:用量与消费来自console.groq.com浏览器会话自动获取,API Key 为可选项,只用于补充 Enterprise Prometheus 指标。

常见问题与排查要点

  • 菜单栏不显示任何指标:确认 API Key 已写入配置(codexbar config dump可查看归一化配置,默认脱敏)或已设置GROQ_API_KEY;确认 Provider 已启用(codexbar config providers可查看持久化启用状态,codexbar config enable --provider groq可启用)。
  • 显示权限错误(accessDenied):401/403 表示该 Key 未开通 Enterprise Prometheus 指标访问,需要在 GroqCloud 侧确认组织/密钥权限,而非更换显示来源。
  • Tertiary 缓存指标不显示:这是预期行为——仅当prompt_cache_hits查询返回非零速率时才会渲染第三行。
  • 私有网关接入:通过GROQ_API_URL覆盖基础地址,注意其必须为 HTTPS URL 或裸主机名,且端点需兼容 Groq 的/metrics/prometheus/api/v1/query路径结构。

延伸阅读

本文涉及的核心实现与配置均可继续深入仓库:

  • 官方文档入口:docs/groqcloud.md
  • Prometheus 指标抓取与解析:Sources/CodexBarCore/Providers/Groq/GroqUsageFetcher.swift
  • 环境变量与端点校验:Sources/CodexBarCore/Providers/Groq/GroqSettingsReader.swift
  • Provider 注册与 fetch 策略编排:Sources/CodexBar/Providers/Groq/GroqProviderImplementation.swift
  • CLIset-api-key用法:Sources/CodexBarCLI/CLIHelp.swift
  • 控制台会话补充路径(背景知识):Sources/CodexBarCore/Providers/Groq/GroqConsoleSession.swift

【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 18:13:16

单片机示波器设计全解析:从采样率、信号链到PCB与固件要点

简介&#xff1a;这份合集围绕单片机示波器与数字示波器电路设计&#xff0c;面向电子竞赛、毕业设计及嵌入式自学者&#xff0c;汇集从51、STM32到TMS320F28033、Arduino Pro mini等不同平台的完整方案。五套资料涵盖原理图、PCB、源程序、操作文档与初步指南&#xff0c;整体…

作者头像 李华
网站建设 2026/9/13 18:13:10

CSDN Token机制解析:JWT实现与安全实践

1. 项目概述tokenCSDN是一个专注于CSDN平台Token机制的技术解析项目。作为国内知名的开发者社区&#xff0c;CSDN的Token机制贯穿了用户认证、API调用、数据安全等核心环节。这个项目旨在深入剖析CSDN Token的生成原理、使用场景以及安全策略。在Web开发领域&#xff0c;Token机…

作者头像 李华