Codex 额度为什么还没恢复?用 Python 分开核验窗口与北京时间
AIXiamo 整理 · 2026 年 9 月 11 日(北京时间)
排查额度时,要把每个窗口分开看:一个窗口还有余额,不能推出其他窗口也可用;记录中的重置时间已到,也需要刷新 Usage 才能知道新状态。本例用 Python 标准库演示百分比校验、Unix 秒转北京时间,以及缺失和过期记录的处理。
先核对使用入口
使用 ChatGPT 登录与使用 API key 登录,对应不同的访问及计费方式。官方用量页面或 Codex CLI 的 /status 可用于核对当前限额。先确认账号、工作区及登录方式,再记录实际展示的窗口名称、百分比含义和重置时间。OpenAI:Authentication、OpenAI:Pricing
运行三个合成案例
需要 Python 3.8 或更高版本。在本目录运行:
python3 usage_windows.py --as-of '2026-09-11T15:00:00+08:00'
python3 -m unittest -v test_usage_windows.py
省略 --as-of 也使用上述固定时间,便于复现;程序不会自动读取当前时间。三个案例均为构造数据,不对应任何真实账号或订单。
| 案例 | 窗口 | 已用 | 重置时间(北京时间) | 预期判定 |
|---|---|---|---|---|
| A | 5 小时 | 100% | 9 月 11 日 17:00 | 已用完 |
| A | 周窗口 | 40% | 9 月 14 日 10:00 | 当前未用完 |
| B | 5 小时 | 20% | 9 月 11 日 17:00 | 当前未用完 |
| B | 周窗口 | 100% | 9 月 14 日 10:00 | 已用完 |
| C | 旧窗口 | 100% | 9 月 11 日 14:59:59 | 到重置时间,需刷新 |
| C | 缺失记录 | 未记录 | 9 月 11 日 17:00 | 信息缺失 |
| C | 毫秒误填 | 40% | 误把 13 位毫秒填为秒 | 数据异常 |
“5 小时”和“周窗口”是案例标签,程序不会依据名称生成周期,也不假定所有账号和模型都有相同窗口。A 和 B 分别显示为什么不能只看一条进度条;C 显示为什么空值不等于零、过点不等于已恢复。
人工记录格式
也可直接传入一个构造的 JSON 数组:
python3 usage_windows.py \
--as-of '2026-09-11T15:00:00+08:00' \
--records '[{"name":"示例窗口","usedPercent":80,"resetsAt":1789117200}]'
输出中的北京时间为 2026-09-11T17:00:00+08:00,判定为“当前未用完”,该窗口剩余 20%。
| 字段 | 本例约定 |
|---|---|
name |
人工填写的窗口名称;应能区分实际窗口和模型范围 |
usedPercent |
已使用的百分比,必须是 0–100 的有限数字;若界面显示“剩余”,先确认语义再转换 |
resetsAt |
人工填写的整数 Unix 时间戳,单位为秒;不接受毫秒或无时区字符串 |
--as-of |
核验时刻,必须包含时区,例如 +08:00 或 Z;所有输出统一为固定 UTC+08:00 |
这些字段是本示例的数据格式,不是官方接口。人工记录应对应 --as-of 所述时刻的观察;旧截图、估算百分比或缺少重置时间时,先重新核对,不把推测补成真实数值。程序仅解释传入记录,不能验证其真实性或实时性,也不代表账号诊断。
判断顺序与边界
- 数据异常优先。
NaN、无穷、布尔值、数字字符串、负数及超过 100 的百分比均拒绝;重置时间限定为 1–9999999999 的整数 Unix 秒,这是本例的输入边界,用来排除常见的 13 位毫秒误填,不是 OpenAI 的接口要求。 - 缺失保留缺失。 没有名称、百分比或重置时间,输出“信息缺失”;
null不转成 0,0 本身是合法的已用百分比。 - 到点必须刷新。 当
as_of >= resetsAt,输出“到重置时间,需刷新”,不计算新窗口余额,不自动把旧的 100% 改为 0%。 - 有效记录逐条判断。 未到重置时间时,100% 为“已用完”,其他合法数值为“当前未用完”,剩余按
100 - usedPercent计算。
程序不相加、平均或合并不同窗口的百分比;“当前未用完”仅指这条记录,不保证任务一定能继续,还需要核对其他适用窗口、实际错误与账号状态。
文件与验证
- usage_windows.py:内置三个案例、输入校验与 Markdown 表格输出。
- test_usage_windows.py:覆盖 0、100、浮点、缺失、非法类型、
NaN/无穷、毫秒、时区转换、重置时间前后和多窗口独立判断。
程序只处理内置数据或 --records 参数中的人工数据;不读取账号文件、环境变量或本地凭据,不请求网络。示例沿用本仓库的 MIT 许可。