CodexBar 集成 Poe Provider:API Key 认证、Points 余额与用量历史的完整指南
CodexBar 集成 Poe ProviderAPI Key 认证、Points 余额与用量历史的完整指南【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar本文以 CodexBar 对 Poe 提供商的官方支持为主线讲解如何通过 API Key 接入 Poe 官方用量接口展示 Points 余额、按天分组的消费历史以及 Today / Last 7 / Last 30 天统计。读完本文你将掌握 Poe 的三种密钥配置方式、底层数据抓取与容错机制以及如何在菜单栏与 CLI 中查看 Poe 用量。文章内容以仓库文档 docs/poe.md 为骨架并结合 poe.js 抓取插件 与对应测试源码进行纵深印证。Poe Provider 的接入方式概述与 Claude、OpenAI 等需要 OAuth 登录或浏览器 Cookie 导入的提供商不同CodexBar 对 Poe 采用最轻量的 API Key 直连方案读取 Poe 官方 usage API无需 OAuth 登录、不导入浏览器 Cookie配置项只有一个Poe API Key提供商被标记为balanceOnly: true见 PoeProviderDescriptor.swift即只展示 Points 余额与用量历史不涉及 Token 成本折算、订阅计划等能力。在 Providers.swift 中Poe 是 CodexBar 内置提供商枚举case poe的一员。其元数据配置了显示名Poe、会话/周标签统一为Points菜单栏开关文案为 Show Poe usage默认不启用defaultEnabled: false用户需手动开启。认证三种方式配置 Poe API Key在 Poe 官网的 API Keys 页面创建或复制密钥然后在 CodexBar 中按以下任一方式配置。方式一设置界面Settings → Providers → Poe在Settings → Providers → Poe中粘贴 API Key。对应的设置项由 PoeProviderImplementation.swift 中的settingsFields声明字段 idpoe-api-key类型.secure安全存储输入时脱敏存储位置~/.codexbar/config.json官方来源poe.com/api/keys。方式二环境变量export POE_API_KEY...环境变量键名定义在 PoeSettingsReader.swift 中apiKeyEnvironmentKey POE_API_KEY。读取时会对值做trimmingCharacters清洗并自动剥离首尾成对出现的双引号或单引号这在复制 shell 变量时非常实用。测试 PoeSettingsReaderTests.swift 验证了 poe-key 会被规整为poe-key。方式三CLI 写入配置printf %s $POE_API_KEY | codexbar config set-api-key --provider poe --stdin通过 stdin 将密钥写入 CodexBar 配置避免密钥出现在 shell 历史中。可用性判定provider 的isAvailable逻辑PoeProviderImplementation.swift要求环境变量POE_API_KEY或配置中的 apiKey 字段至少有一项非空否则该提供商在菜单中不会启用。数据源两个官方端点与容错优先级CodexBar 通过内置插件 poe.js 请求以下两个 Poe 官方端点端点用途失败影响GET https://api.poe.com/usage/current_balance当前 Points 余额必需失败则整个抓取失败GET https://api.poe.com/usage/points_history近期消费历史best-effort失败不影响余额展示这一点在文档与测试中双重确认文档明确The current balance request is required. Recent points history is best-effort, so a history error does not hide a valid balance.测试 PoeUsageFetcherTests.swift 用historyStatus: 500模拟历史接口失败断言快照仍保留Balance: 1,500 points及 Points 详情区即历史错误不会隐藏有效余额。底层抓取实现细节poe.js从插件源码看实际抓取做了以下容错与归一化处理认证方式auth: { type: bearer, secret: POE_API_KEY }即Authorization: Bearer key端点域为https://api.poe.com。错误分类余额接口返回401/403时抛出 Invalid or expired Poe API token其他非 2xx 抛出Poe API error: HTTP status响应体非 JSON 对象时抛出解析错误。历史分页points_history请求以?limit100起步若存在游标则追加starting_aftercursor游标来源优先取响应中的next_cursor其次在has_more true时取最后一行query_id最多抓取 5 页且一旦最后一条记录时间早于 30 天截止线即提前终止。历史响应兼容数据行可从data、items、results任一字段读取适配 Poe 接口可能的返回结构差异。无效时间戳跳过文档明确History rows with invalid timestamps are skipped。插件中entryDate对时间戳做了三重归一超过100000000000000视为微秒除以 1000、超过1000000000000视为毫秒、否则视为秒乘以 1000无法解析出有效Date的行直接跳过。这也解释了文档中including numeric timestamps outside the supported date range的表述——超出日期范围的记录同样不会进入统计。字段兜底points 取值依次尝试cost_points/points/point_cost并取非负值金额尝试cost_usd/usd模型名取bot_name缺失时记为unknown用量类型取usage_type。展示菜单栏余额与按天分组的用量详情Poe 的展示策略由 descriptor 中的ProviderUsagePresentation定义PoeProviderDescriptor.swift菜单卡主展示项为primaryDetailKind: .poeBalance即Points 余额计划行标签为Balance且stripsBalancePrefix: true——显示时直接呈现余额数值而非 Plan: Balance: xxx 形式。测试 MenuDescriptorPoeTests.swift 专门断言Poe 的余额渲染为纯文本Balance: 1,500 points且不包含Plan: Balance:前缀抓取成功后provider 身份信息identity.loginMethod被设置为Balance: points points菜单中以此作为账户标识。当历史数据可用时用量详情按天分组展示具体字段由 poe.js 生成测试在 MenuDescriptorPoeTests.swift 中逐一断言Today今日累计 points 与请求数Last 7 days / Last 30 days滚动窗口内累计 points 与请求数Top model消耗 points 最多的模型Usage mix用量类型如chatTop 2 的 points 占比Recent activity最近 3 条记录含 UTC 时间MM-DD HH:mm格式与模型名Daily points 图表30 天窗口内每日 points 柱状图。时间一致性保证文档特别说明The 30-day history cutoff and todays totals use the same refresh timestamp, so pagination and daily grouping stay consistent throughout a refresh.插件中cutoff nowMillis - 30 * 86400000在抓取开始时一次性计算今日汇总按同一todayUTC快照过滤因此即使分页跨越边界单次刷新内的日分组与截止线始终一致。滚动窗口语义The last 7 and 30 days totals cover rolling time windows, including days without activity. Older activity remains in the 30-day chart without contributing to the 7-day total.插件实现中seven以nowMillis - 7 * 86400000过滤、thirty为窗口内全部条目柱状图使用 30 天内全部日期的数据——超过 7 天的历史活动仍会出现在 30 天图表中但不再计入 7 天总计无活动的日期总计为 0因此 7 天与 30 天窗口都完整覆盖滚动区间。CLI 使用codexbar --provider poe指定 provider 后CLI 将展示 Poe 的 Points 余额与用量信息。CLI 名称poe在 descriptor 的cliName与ProviderCLIConfig.name中均有声明PoeProviderDescriptor.swift。测试与验证依据仓库为 Poe 集成提供了完整的测试覆盖可作行为契约参考测试文件验证点PoeUsageFetcherTests.swift余额为数字或带引号字符串时映射为身份信息、余额缺失时身份为空、畸形 JSON 抛错、历史接口 500 时余额仍保留PoeSettingsReaderTests.swift环境变量 API Key 的引号剥离与空白清洗PoeProviderDescriptorTests.swift官方品牌图标资源ProviderIcon-poe与品牌色RGB(93, 92, 222)MenuDescriptorPoeTests.swift余额渲染为文本而非计划标签Today / 7 天 / 30 天 / Top model / Usage mix / Recent activity 六类行均正确出现小结Poe 是 CodexBar 中极简接入的提供商之一一个 API Key、两个官方端点、一套容错抓取管线。其核心设计值得复用——必需数据余额与尽力而为数据历史分离保证关键信息永远可见无效时间戳与字段兜底让第三方响应结构的差异被静默归一。配置与验证路径总结如下密钥来源Poe API Keys配置入口为Settings → Providers → Poe、POE_API_KEY环境变量或codexbar config set-api-key --provider poe --stdin抓取实现poe.js提供商注册PoeProviderDescriptor.swift设置界面PoeProviderImplementation.swift行为契约可参考 PoeUsageFetcherTests.swift 与 MenuDescriptorPoeTests.swift。【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考