查詢 Skill:把過期時(shí)間寫進(jìn) config.toml 骨架)
1. Codex 重置次數(shù)只給數(shù)字不給時(shí)間用量規(guī)劃全靠猜Codex 的重置次數(shù)reset credits在界面上只顯示一個(gè)可用數(shù)量比如「2 次可用」但每一次具體什么時(shí)候過期、還剩幾天幾小時(shí)界面上完全不提。對(duì)偶爾用一次的人來說無所謂但對(duì)把 Codex 當(dāng)日常開發(fā)工作流的人這就是個(gè)實(shí)打?qū)嵉馁Y源管理問題你手里握著兩次重置卻不知道它們是不是明天就歸零那到底該現(xiàn)在用掉還是留著等下周趕項(xiàng)目我試過手動(dòng)翻本地登錄狀態(tài)去算過期時(shí)間過程很別扭——要找到auth.json、取出 token、請(qǐng)求接口、再把 UTC 時(shí)間換算成中國(guó)時(shí)間最后還要自己算「過期前 1 天」和「過期前 1 小時(shí)」兩個(gè)提醒點(diǎn)。每次想看一眼都得重來一遍純屬重復(fù)勞動(dòng)。所以這篇要解決的就是這個(gè)信息缺口把「查詢 Codex 重置次數(shù) 過期時(shí)間」做成一個(gè)可安裝的 Skill并且把配置寫進(jìn)config.toml骨架里讓 Codex 自己知道該調(diào)哪個(gè)腳本、該怎么展示結(jié)果。核心檢索詞就三個(gè)Codex、Skill、重置次數(shù)查詢。適合誰(shuí)適合每天都要用 Codex、需要提前規(guī)劃重置額度、又不想每次手敲命令的開發(fā)者。下面我會(huì)給出可復(fù)制的config.toml骨架、Skill 的查詢配置并演示一次驗(yàn)證動(dòng)作調(diào)用后確認(rèn)返回結(jié)果里同時(shí)包含剩余次數(shù)和過期時(shí)間字段。整個(gè)過程不需要你懂后端照著填就行。2. 前置準(zhǔn)備TaoToken 接入與 Codex 環(huán)境確認(rèn)在動(dòng)手寫 Skill 之前先把兩件事理清楚一是 Codex 的調(diào)用入口怎么配二是本地環(huán)境需要哪些文件。這里我用 TaoToken 作為統(tǒng)一的模型接入層它的好處是 API Key 和模型對(duì)話、編碼計(jì)劃都在一個(gè)控制臺(tái)里管理省得在多個(gè)平臺(tái)之間來回切。TaoToken 官網(wǎng)入口在這里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 這個(gè)不加 UTM。你需要先去控制臺(tái)生成一個(gè) API Key后面寫進(jìn)config.toml里。2.1 確認(rèn)本地 Codex 登錄狀態(tài)文件Codex 的登錄狀態(tài)默認(rèn)放在~/.codex/auth.json腳本會(huì)從這里讀 access token。你可以先確認(rèn)這個(gè)文件存在ls -la ~/.codex/auth.json如果路徑不對(duì)說明你改過CODEX_HOME環(huán)境變量腳本里也做了兼容DEFAULT_AUTH_FILE Path(os.environ.get(CODEX_HOME, Path.home() / .codex)) / auth.json也就是說只要你設(shè)了CODEX_HOME腳本會(huì)自動(dòng)去那個(gè)目錄找auth.json不用改代碼。2.2 準(zhǔn)備 Python 運(yùn)行環(huán)境腳本是純 Python 寫的沒有第三方依賴Python 3.8 以上就能跑。確認(rèn)一下版本python --version2.3 拿到 TaoToken 的 API Key去控制臺(tái)創(chuàng)建 Key路徑是 API Keys 頁(yè)面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。創(chuàng)建后復(fù)制出來下一步寫進(jìn)配置。注意這個(gè) Key 只用于模型調(diào)用和 Codex 本地登錄的 token 是兩回事別混在一起。3. 可復(fù)制配置config.toml 骨架與 Skill 查詢配置這一節(jié)是全文的核心給你一份可以直接抄的config.toml骨架以及 Skill 的目錄結(jié)構(gòu)和查詢腳本配置。3.1 config.toml 骨架把下面這段存成config.toml放在你的 Codex 配置目錄下通常是~/.codex/config.toml。字段我都加了注釋你按自己的實(shí)際情況改# Codex 主配置 [model] # 通過 TaoToken 接入統(tǒng)一走這個(gè) base_url base_url https://taotoken.net/api # 你的 TaoToken API Key從控制臺(tái)復(fù)制 api_key sk-你的TaoToken密鑰 # 默認(rèn)使用的模型 name gpt-4o # 重置次數(shù)查詢 Skill 配置 [skills.codex-reset-credits] # Skill 是否啟用 enabled true # 查詢腳本路徑相對(duì)倉(cāng)庫(kù)根目錄 script skills/codex-reset-credits/scripts/query_reset_credits.py # 默認(rèn)輸出格式text 或 json output_format text # 提醒時(shí)間點(diǎn)單位小時(shí)可配多個(gè) reminder_hours [24, 1] # 時(shí)區(qū)展示默認(rèn)中國(guó)時(shí)間 timezone Asia/Shanghai # 是否在輸出中隱藏 token務(wù)必保持 true mask_token true幾個(gè)關(guān)鍵點(diǎn)說明一下。base_url指向 TaoToken 的 API 地址這樣模型調(diào)用統(tǒng)一走一個(gè)入口。api_key填你剛創(chuàng)建的那個(gè)。[skills.codex-reset-credits]這一段是給 Skill 用的script指向查詢腳本reminder_hours [24, 1]表示自動(dòng)算「過期前 24 小時(shí)」和「過期前 1 小時(shí)」兩個(gè)提醒點(diǎn)。mask_token true是硬性要求任何情況下都不能把 token 打印出來。3.2 Skill 目錄結(jié)構(gòu)Skill 的目錄結(jié)構(gòu)保持和 Codex Skill 常見發(fā)布方式一致這樣 Skills CLI 才能識(shí)別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 什么時(shí)候用這個(gè) Skill、怎么展示結(jié)果openai.yaml是給 Skills CLI 和 Codex UI 用的元數(shù)據(jù)query_reset_credits.py是真正干活的腳本。3.3 SKILL.md 查詢配置SKILL.md里要寫清楚觸發(fā)條件和輸出要求這樣你對(duì) Codex 說一句話它就知道該干嘛。核心內(nèi)容大概是這樣--- name: codex-reset-credits description: 查詢 Codex 重置次數(shù)、每次過期時(shí)間和提醒時(shí)間 --- 當(dāng)用戶詢問 Codex 重置次數(shù)、reset credits、過期時(shí)間時(shí)使用本 Skill。 執(zhí)行腳本 python -B skills/codex-reset-credits/scripts/query_reset_credits.py 輸出要求 - 展示當(dāng)前可用重置次數(shù) - 展示每一次的剩余時(shí)間和中國(guó)時(shí)間過期點(diǎn) - 展示過期前 1 天、過期前 1 小時(shí)的提醒時(shí)間 - 不要打印 access token3.4 查詢腳本核心邏輯腳本的核心就是讀auth.json、取 token、請(qǐng)求接口、換算時(shí)間。關(guān)鍵片段如下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}} # 實(shí)際請(qǐng)求用 requests 或 urllib這里省略請(qǐng)求細(xì)節(jié) # 返回結(jié)構(gòu)包含 available_count 和 credits[].expires_at ...拿到接口返回后腳本讀取available_count和credits[].expires_at把 UTC 時(shí)間轉(zhuǎn)成中國(guó)時(shí)間再分別減去 24 小時(shí)和 1 小時(shí)得到兩個(gè)提醒點(diǎn)。這樣輸出里就同時(shí)有了剩余次數(shù)和過期時(shí)間。4. 驗(yàn)證請(qǐng)求確認(rèn)返回結(jié)果同時(shí)包含次數(shù)與過期時(shí)間配置寫完必須驗(yàn)證一次確認(rèn)返回結(jié)果里同時(shí)包含剩余次數(shù)和過期時(shí)間字段。這一步不能省否則你只是「以為」配好了。4.1 直接運(yùn)行腳本驗(yàn)證先跑一次 JSON 輸出方便看字段python -B skills/codex-reset-credits/scripts/query_reset_credits.py --json預(yù)期返回結(jié)構(gòu)類似這樣{ available_count: 2, credits: [ { index: 1, remaining: 23天 15小時(shí) 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 小時(shí), at_china: 2026-07-27T06:45:2208:00 } ] } ] }驗(yàn)證要點(diǎn)就兩個(gè)available_count有值credits[].expires_at_china有值。兩個(gè)都在說明查詢鏈路通了。4.2 通過 Skill 調(diào)用驗(yàn)證再用 Skills CLI 檢查倉(cāng)庫(kù)能不能被識(shí)別npx skills add . --list能看到codex-reset-credits就說明 Skill 注冊(cè)成功。然后在 Codex 里直接說一句查詢我的 Codex 重置次數(shù)每一次還有多久過期并顯示提醒時(shí)間。Codex 會(huì)調(diào)用腳本并返回中文結(jié)果包含剩余次數(shù)、每次過期時(shí)間、兩個(gè)提醒點(diǎn)。到這一步整個(gè) Skill 就算跑通了。4.3 輸出字段對(duì)照字段含義available_count當(dāng)前可用重置次數(shù)credits[].remaining距離過期還剩多久credits[].expires_at_utcUTC 過期時(shí)間credits[].expires_at_china中國(guó)時(shí)間過期點(diǎn)credits[].reminders[]過期前 1 天和 1 小時(shí)的提醒時(shí)間自己看用普通中文輸出就夠要接自動(dòng)化提醒就用 JSON 輸出。5. 本篇常見錯(cuò)排查配置和驗(yàn)證過程中最容易踩的坑集中在下面幾個(gè)地方。5.1 找不到 auth.json報(bào)錯(cuò)通常是FileNotFoundError。先確認(rèn)~/.codex/auth.json是否存在如果改過CODEX_HOME檢查環(huán)境變量有沒有生效echo $CODEX_HOME沒設(shè)的話腳本會(huì)默認(rèn)去~/.codex找路徑對(duì)不上就會(huì)報(bào)錯(cuò)。5.2 返回 401 或 403多半是 token 失效或請(qǐng)求頭沒帶對(duì)。確認(rèn)Authorization頭是Bearer token格式中間有空格。如果 token 過期重新登錄 Codex 刷新auth.json即可。5.3 時(shí)間顯示不對(duì)腳本默認(rèn)按Asia/Shanghai換算如果你在別的時(shí)區(qū)改config.toml里的timezone字段。注意接口返回的是 UTC別直接當(dāng)本地時(shí)間用。5.4 Skill 沒被識(shí)別npx skills add . --list看不到codex-reset-credits檢查SKILL.md的 frontmatter 有沒有寫對(duì)name字段要和目錄名一致。另外確認(rèn)agents/openai.yaml存在Skills CLI 靠它讀元數(shù)據(jù)。5.5 token 被打印出來這是最需要避免的。檢查腳本里所有輸出邏輯確保沒有把a(bǔ)ccess_token直接 print 出來。config.toml里mask_token true要一直保持倉(cāng)庫(kù)的.gitignore也要排除auth.json、.codex目錄和 session 日志。注意這個(gè)接口是 ChatGPT Web 使用的內(nèi)部接口不是長(zhǎng)期穩(wěn)定承諾的公開 API。適合做個(gè)人工作流工具不適合當(dāng)強(qiáng)依賴的生產(chǎn)系統(tǒng)接口。如果接口路徑或返回格式變了腳本要跟著調(diào)整。6. 把查詢能力接進(jìn)你的日常編碼流Skill 跑通之后下一步是讓它真正融入工作流而不是每次手動(dòng)敲命令。如果你長(zhǎng)期用 Codex 做編碼和 Agent 任務(wù)建議把模型調(diào)用統(tǒng)一走 Coding Plan這樣重置次數(shù)、用量、模型切換都在一個(gè)地方看https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。日常使用上你可以把查詢動(dòng)作掛到每天開工前對(duì) Codex 說一句「查詢我的 Codex 重置次數(shù)」它就會(huì)返回剩余次數(shù)和過期時(shí)間。如果某次重置快到期了提醒字段會(huì)直接告訴你還剩多久該用就用別浪費(fèi)。想驗(yàn)證模型返回是否正??梢灾苯釉谀P蛯?duì)話頁(yè)試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 。最后說個(gè)實(shí)用技巧把reminder_hours改成[48, 24, 1]你就能拿到過期前兩天的預(yù)警對(duì)需要提前規(guī)劃用量的場(chǎng)景更友好。改完config.toml不用重啟下次調(diào)用腳本自動(dòng)生效。