ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Codex 重置次数查询 Skill:把过期时间写进 config.toml 骨架

Codex 重置次数查询 Skill:把过期时间写进 config.toml 骨架 1. Codex 重置次数只给数字不给时间用量规划全靠猜Codex 的重置次数reset credits在界面上只显示一个可用数量比如「2 次可用」但每一次具体什么时候过期、还剩几天几小时界面上完全不提。对偶尔用一次的人来说无所谓但对把 Codex 当日常开发工作流的人这就是个实打实的资源管理问题你手里握着两次重置却不知道它们是不是明天就归零那到底该现在用掉还是留着等下周赶项目我试过手动翻本地登录状态去算过期时间过程很别扭——要找到auth.json、取出 token、请求接口、再把 UTC 时间换算成中国时间最后还要自己算「过期前 1 天」和「过期前 1 小时」两个提醒点。每次想看一眼都得重来一遍纯属重复劳动。所以这篇要解决的就是这个信息缺口把「查询 Codex 重置次数 过期时间」做成一个可安装的 Skill并且把配置写进config.toml骨架里让 Codex 自己知道该调哪个脚本、该怎么展示结果。核心检索词就三个Codex、Skill、重置次数查询。适合谁适合每天都要用 Codex、需要提前规划重置额度、又不想每次手敲命令的开发者。下面我会给出可复制的config.toml骨架、Skill 的查询配置并演示一次验证动作调用后确认返回结果里同时包含剩余次数和过期时间字段。整个过程不需要你懂后端照着填就行。2. 前置准备TaoToken 接入与 Codex 环境确认在动手写 Skill 之前先把两件事理清楚一是 Codex 的调用入口怎么配二是本地环境需要哪些文件。这里我用 TaoToken 作为统一的模型接入层它的好处是 API Key 和模型对话、编码计划都在一个控制台里管理省得在多个平台之间来回切。TaoToken 官网入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 这个不加 UTM。你需要先去控制台生成一个 API Key后面写进config.toml里。2.1 确认本地 Codex 登录状态文件Codex 的登录状态默认放在~/.codex/auth.json脚本会从这里读 access token。你可以先确认这个文件存在ls -la ~/.codex/auth.json如果路径不对说明你改过CODEX_HOME环境变量脚本里也做了兼容DEFAULT_AUTH_FILE Path(os.environ.get(CODEX_HOME, Path.home() / .codex)) / auth.json也就是说只要你设了CODEX_HOME脚本会自动去那个目录找auth.json不用改代码。2.2 准备 Python 运行环境脚本是纯 Python 写的没有第三方依赖Python 3.8 以上就能跑。确认一下版本python --version2.3 拿到 TaoToken 的 API Key去控制台创建 Key路径是 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。创建后复制出来下一步写进配置。注意这个 Key 只用于模型调用和 Codex 本地登录的 token 是两回事别混在一起。3. 可复制配置config.toml 骨架与 Skill 查询配置这一节是全文的核心给你一份可以直接抄的config.toml骨架以及 Skill 的目录结构和查询脚本配置。3.1 config.toml 骨架把下面这段存成config.toml放在你的 Codex 配置目录下通常是~/.codex/config.toml。字段我都加了注释你按自己的实际情况改# Codex 主配置 [model] # 通过 TaoToken 接入统一走这个 base_url base_url https://taotoken.net/api # 你的 TaoToken API Key从控制台复制 api_key sk-你的TaoToken密钥 # 默认使用的模型 name gpt-4o # 重置次数查询 Skill 配置 [skills.codex-reset-credits] # Skill 是否启用 enabled true # 查询脚本路径相对仓库根目录 script skills/codex-reset-credits/scripts/query_reset_credits.py # 默认输出格式text 或 json output_format text # 提醒时间点单位小时可配多个 reminder_hours [24, 1] # 时区展示默认中国时间 timezone Asia/Shanghai # 是否在输出中隐藏 token务必保持 true mask_token true几个关键点说明一下。base_url指向 TaoToken 的 API 地址这样模型调用统一走一个入口。api_key填你刚创建的那个。[skills.codex-reset-credits]这一段是给 Skill 用的script指向查询脚本reminder_hours [24, 1]表示自动算「过期前 24 小时」和「过期前 1 小时」两个提醒点。mask_token true是硬性要求任何情况下都不能把 token 打印出来。3.2 Skill 目录结构Skill 的目录结构保持和 Codex Skill 常见发布方式一致这样 Skills CLI 才能识别codex-reset-credits/ ├── README.md ├── README.zh-CN.md ├── LICENSE ├── .gitignore └── skills/ └── codex-reset-credits/ ├── SKILL.md ├── agents/ │ └── openai.yaml └── scripts/ └── query_reset_credits.py其中SKILL.md告诉 Codex 什么时候用这个 Skill、怎么展示结果openai.yaml是给 Skills CLI 和 Codex UI 用的元数据query_reset_credits.py是真正干活的脚本。3.3 SKILL.md 查询配置SKILL.md里要写清楚触发条件和输出要求这样你对 Codex 说一句话它就知道该干嘛。核心内容大概是这样--- name: codex-reset-credits description: 查询 Codex 重置次数、每次过期时间和提醒时间 --- 当用户询问 Codex 重置次数、reset credits、过期时间时使用本 Skill。 执行脚本 python -B skills/codex-reset-credits/scripts/query_reset_credits.py 输出要求 - 展示当前可用重置次数 - 展示每一次的剩余时间和中国时间过期点 - 展示过期前 1 天、过期前 1 小时的提醒时间 - 不要打印 access token3.4 查询脚本核心逻辑脚本的核心就是读auth.json、取 token、请求接口、换算时间。关键片段如下import os import json from pathlib import Path DEFAULT_AUTH_FILE Path(os.environ.get(CODEX_HOME, Path.home() / .codex)) / auth.json URL https://chatgpt.com/backend-api/wham/rate-limit-reset-credits def load_token(): with open(DEFAULT_AUTH_FILE, r, encodingutf-8) as f: auth json.load(f) return auth.get(access_token) def query_credits(token): headers {Authorization: fBearer {token}} # 实际请求用 requests 或 urllib这里省略请求细节 # 返回结构包含 available_count 和 credits[].expires_at ...拿到接口返回后脚本读取available_count和credits[].expires_at把 UTC 时间转成中国时间再分别减去 24 小时和 1 小时得到两个提醒点。这样输出里就同时有了剩余次数和过期时间。4. 验证请求确认返回结果同时包含次数与过期时间配置写完必须验证一次确认返回结果里同时包含剩余次数和过期时间字段。这一步不能省否则你只是「以为」配好了。4.1 直接运行脚本验证先跑一次 JSON 输出方便看字段python -B skills/codex-reset-credits/scripts/query_reset_credits.py --json预期返回结构类似这样{ available_count: 2, credits: [ { index: 1, remaining: 23天 15小时 22分钟 22秒, expires_at_utc: 2026-07-26T23:45:2200:00, expires_at_china: 2026-07-27T07:45:2208:00, reminders: [ { label: 过期前 1 天, at_china: 2026-07-26T07:45:2208:00 }, { label: 过期前 1 小时, at_china: 2026-07-27T06:45:2208:00 } ] } ] }验证要点就两个available_count有值credits[].expires_at_china有值。两个都在说明查询链路通了。4.2 通过 Skill 调用验证再用 Skills CLI 检查仓库能不能被识别npx skills add . --list能看到codex-reset-credits就说明 Skill 注册成功。然后在 Codex 里直接说一句查询我的 Codex 重置次数每一次还有多久过期并显示提醒时间。Codex 会调用脚本并返回中文结果包含剩余次数、每次过期时间、两个提醒点。到这一步整个 Skill 就算跑通了。4.3 输出字段对照字段含义available_count当前可用重置次数credits[].remaining距离过期还剩多久credits[].expires_at_utcUTC 过期时间credits[].expires_at_china中国时间过期点credits[].reminders[]过期前 1 天和 1 小时的提醒时间自己看用普通中文输出就够要接自动化提醒就用 JSON 输出。5. 本篇常见错排查配置和验证过程中最容易踩的坑集中在下面几个地方。5.1 找不到 auth.json报错通常是FileNotFoundError。先确认~/.codex/auth.json是否存在如果改过CODEX_HOME检查环境变量有没有生效echo $CODEX_HOME没设的话脚本会默认去~/.codex找路径对不上就会报错。5.2 返回 401 或 403多半是 token 失效或请求头没带对。确认Authorization头是Bearer token格式中间有空格。如果 token 过期重新登录 Codex 刷新auth.json即可。5.3 时间显示不对脚本默认按Asia/Shanghai换算如果你在别的时区改config.toml里的timezone字段。注意接口返回的是 UTC别直接当本地时间用。5.4 Skill 没被识别npx skills add . --list看不到codex-reset-credits检查SKILL.md的 frontmatter 有没有写对name字段要和目录名一致。另外确认agents/openai.yaml存在Skills CLI 靠它读元数据。5.5 token 被打印出来这是最需要避免的。检查脚本里所有输出逻辑确保没有把access_token直接 print 出来。config.toml里mask_token true要一直保持仓库的.gitignore也要排除auth.json、.codex目录和 session 日志。注意这个接口是 ChatGPT Web 使用的内部接口不是长期稳定承诺的公开 API。适合做个人工作流工具不适合当强依赖的生产系统接口。如果接口路径或返回格式变了脚本要跟着调整。6. 把查询能力接进你的日常编码流Skill 跑通之后下一步是让它真正融入工作流而不是每次手动敲命令。如果你长期用 Codex 做编码和 Agent 任务建议把模型调用统一走 Coding Plan这样重置次数、用量、模型切换都在一个地方看https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。日常使用上你可以把查询动作挂到每天开工前对 Codex 说一句「查询我的 Codex 重置次数」它就会返回剩余次数和过期时间。如果某次重置快到期了提醒字段会直接告诉你还剩多久该用就用别浪费。想验证模型返回是否正常可以直接在模型对话页试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后说个实用技巧把reminder_hours改成[48, 24, 1]你就能拿到过期前两天的预警对需要提前规划用量的场景更友好。改完config.toml不用重启下次调用脚本自动生效。
返回列表