Codex 配额与重置时间
最后更新:2026年9月8日
ChatGPT/Codex 卡片读取什么,为什么恰好是两个窗口而不是每个模型一个,两种积分有何不同,以及重置时间从哪里来。
恰好两个窗口——不按模型拆分
App 保存的 Codex 配额状态由四部分组成:5 小时窗口、每周窗口、套餐类型和积分余额。完整清单就是这些。与 Claude 不同,这里没有按模型的窗口字段,因为接口不提供。
所以,如果你在找 Codex 进度条旁边单独的 GPT-5 进度条,或每周窗口内某个模型的子限额:这里没有。这张卡片上任何类似的东西都只是装饰,不是读数。两个窗口就是全部配额。
按时长匹配,绝不按位置
返回结果把两个窗口标为“primary”和“secondary”,而这些标签并不稳定——5 小时窗口并不总是第一个。因此 AI Cockpit 完全忽略顺序,只按标明的窗口时长匹配:300 分钟是 5 小时窗口,10,080 分钟是每周窗口。同一规则适用于两种来源——实时获取和本地日志后备——所以两者得到完全相同的窗口。
这听起来像细节,其实不是。按位置分配,正是让卡片信心十足地把每周数字当成 5 小时数字来显示的那种错误。
自 6.5 版起提供实时数字
自 6.5 起,Mac App 在你于 App 内一次性登录后,从 https://chatgpt.com/backend-api/wham/usage 实时获取数字。这张卡片不需要 API 密钥。登录采用设备码流程,但——提醒想自己重建的人——它不是 RFC 8628:标识符的名称不同,请求携带 JSON 而不是表单数据,“尚未兑换”以 HTTP 403 或 404 返回而不是待处理状态,PKCE 密钥对由服务器而非客户端生成。得到的令牌存放在钥匙串中。
实时途径不需要文件夹访问权限
一个常见误解:ChatGPT 卡片不需要文件夹权限。实时途径只读取钥匙串——没有文件,没有目录,没有权限对话框。
只有后备途径会读取磁盘。如果没有登录或获取失败,App 会退回到本地安装的 Codex,从 ~/.codex/sessions/ 读取其会话日志。文件夹授权正是为此而设,而且是只读的。在 App 内登录,这个问题就不会出现。
两种积分,有意分开
在 ChatGPT 账户中,“积分”指两种不同的东西,App 不会把它们混在一起:
- 金额积分——一笔金额,以及自月初以来已花掉的部分。
- 重置积分——赠送或购买的兑换券,可提前重置窗口。它们不是钱;对卡片来说,只有它们的过期日期有用。
两者最多每五分钟获取一次。它们只是附带信息,不是核心配额:如果任一接口消失或改变格式,那一行会悄悄消失,两个窗口照常工作。
重置时间
每个窗口都带有自己的重置时间戳(Unix 时间),卡片以两种方式显示:相对时间,让你看到还要等多久;绝对时间,方便你据此安排。只给相对时间,一旦你想知道它是在会议之前还是之后,就没用了。
坦白说说限制
- 积分接口没有公开文档。OpenAI 从未在任何地方描述过这两个接口;它们可能随时改变而不另行通知。它们是通过阅读第三方源代码,并用有效令牌调用确认的。所以它们被当作附加信息,而不是关键依赖。
- 没有可显示的支出限额。没有接口提供它。看起来像支出限额的字段是面向托管团队账户的企业功能,在个人订阅中始终为空——个人套餐在积分余额为零时就停止。在那里显示数字就是编造,所以不显示。
- 无法识别的返回结果是错误,而不是空卡片。如果实时返回中完全没有已知窗口,说明格式变了,App 会如实告知。否则你会去自己账户里找问题,而不是在软件里找。
在 iPhone 和 iPad 上
移动 App 使用同样的实时途径和同样的一次性登录。它没有的是后备途径:手机上没有本地安装的 Codex,所以没有会话日志可读。没有登录时,卡片会有意保持为空。
相关问题的简短解答——为什么卡片什么都不显示、密钥存放在哪里、App 要多少钱——见常见问题页面。登录令牌如何存储和处理,见安全页面。