1实现原理 · 为什么它能做到
它把「查重置」拆成三条互不替代的证据路径:①官方公告(Tibo 的 X 原帖 + 官方故障线)②本机第一手账户证据(~/.codex 的 rollout 快照)③产品页/实时 API 的账户事实。核心方法论是「公告 ≠ 落地」,任何一条单独都不足以定案。
**先分清用户问的是哪种重置**:
Tibo Radar 被明确定位为「公告索引」而非产品状态来源,因为平台会在不发帖的情况下直接重置账户——这是该 skill 反直觉但最关键的判断规则。
Tibo 官宣没有固定排期;但平台也会在限额 配置切换时**不发 reset 帖而直接重置账户**。所以「没有 Tibo 帖」只证明没有官宣,不能证明 没有重置。
本机取证的原理是 Codex 每轮都会把 rate_limits 快照写进 rollout jsonl,因此无需 GUI、可回溯、可把归零定位到分钟级区间——这是它能给出「第一手账户证据」的技术根因。
`~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*.jsonl` 每轮都写 `rate_limits` 快照。**这比引导 用户去看产品页更强**:可回溯历史、能把归零定位到分钟级区间、不需要 GUI,也不需要让用户替你 看屏幕
该 skill 的大部分篇幅不是「怎么做」,而是「怎么不被数据骗」:它列了四条会静默给出貌似合理错答案的陷阱(primary 槽位不固定、limit_id 有恒零诱饵桶、resets_at 每条秒级微漂、目录日期≠时间戳范围),并把修法写进脚本。
**会给出貌似合理错答案的陷阱(每一条都不报错;1–3 于 2026-09-01 同一次会话里连踩,4 于 2026-09-03 补)**:
「干净 +7d」被明确否证为重置证据:它同时是按钮式重置与「换到另一个有额度的账号」的形状,两者在该维度不可分——这是多账号归因方法论的起点。
- **干净 +7d**:新 `resets_at` ≈ 归零时刻 + 窗口长度。这**只说明窗口从归零那刻重新起算**, 它同时是按钮式重置和「换到另一个有额度的账号」的形状——两者在这个维度上不可分。**单看 +7d 就叫重置是本节最贵的错误**
多账号归因被写成 A/B/C 三层检查,并显式声明「未命中不等于单账户」——该方法论自带失败模式边界。最硬的一点是 A/B 都源自当前快照,结构上不可能发现历史账号。
**先说清楚一个结构性陷阱:直觉上的那个检查永远返回「只有一个」。** `~/.codex/auth.json` 只保存**当前登录的那一个**账号,切走的账号不留痕;`~/.cc-switch/cc-switch.db` 只记它自己 管过的条目,手工 `codex login` 换的账号它完全看不见。
「用户原话绝对优先」被写成输出合同:必须先给唯一最强结论,不确定性只用于收窄结论的属性,禁止把分类责任交还用户;未来时间问题必须给预测判断。
用户原话(2026-08-26):「**你必须给出结论而不是让我给结论。**」 - 第一段第一句必须给出当前证据支持的**唯一最强结论**,禁止用「可能是 A/B/C、请你再看」 把分类责任交还用户。
预测能力靠一个本地 append-only 日志闭环:每次调用先回看历史预测与结果,提出新预测时记录窗口/依据/改判条件,事后回填证据;判定规则由脚本执行但证据由调用方提供。
"""Keep an append-only local forecast/outcome journal (Python 3.10+, macOS/Linux). No network, account access, reset redemption, or background process. Classification uses supplied evidence; the caller must verify its scope and event identity. """
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| api | Tibo Radar 时间线 API(第三方社区站点,作公告索引) |
| api | fxtwitter 公开镜像(取 X 原帖完整正文与回复关系,主通道) |
| api | OpenAI 官方状态页 API(故障线,要求每次回答前都查) |
| api | ChatGPT/Codex 官方用量端点(脚本唯一外发目标;客户端内部接口,非稳定公共契约) |
| network | X 官方 syndication 端点(备胎,正文截断 276 字符) |
| network | Twitter/X publish oEmbed 端点(同档备胎,文本同样截断) |
| network | 同族第三方追踪站(仅作转录/解读交叉验证,不构成独立观测源) |
| network | 官方帮助文档与产品用量页(banked reset 语义、账号切换上限、网页用量卡) |
| network | 原始公告来源账号(经 fxtwitter 读取,不直连 X) |
| cli | curl(所有外部抓取的执行工具) |
| cli | python3(解析 JSON、重建快照曲线、运行自带脚本) |
| cli | macOS BSD date(时区换算;SKILL.md 标注 macOS only,GNU date 无 -j/-f 语义) |
| package | uv(references 推荐的脚本运行方式;有符合要求的 Python 时可省略) |
4风险提醒 风险提醒:橙色 · 评估后使用
- 读取并外发真实账号令牌 — query_usage.py 读 ~/.codex/auth.json 的 access_token 并作为 Bearer 发往 chatgpt.com。目标虽为官方端点,但这仍是「本地令牌被程序读取并使用」的行为;在他人机器或共享环境上运行前应确认授权范围。
- 会操作用户浏览器的 ChatGPT 登录态 — account-usage.md 要求在浏览器里逐账号切换登录、必要时登出。文档假设『临时退出不影响进行中的工作』并给了红线,但这些是文字约束——真实执行时若判断失误,可能打断用户正在进行的会话或丢失草稿。
- 结论会被用户当真并据此安排工作,而证据源多为社区第三方 — Radar / codexlimitwatch / LunarWerx / codexrunway 均为社区站点,Radar 的 type 字段已被该 skill 自己证实会因跨平台互动而误标 reset。若某站点被投毒或解析变更,agent 可能把错误结论包装成「已核实」。文档用「同源/独立源」纪律防御,但无程序化校验。
- 端点脆弱性被文档承认,误判会直接落到结论里 — 文档自述 Radar/fxtwitter/状态页『都会间歇抖动』、端点『不是稳定的公共 API 契约』,要求失败先重试 2–3 次。这意味着「真的没有重置」与「终端点挂了」需要人工区分。
- 平台覆盖不均 — 时区换算仅实测 macOS(BSD date);Windows 未实测;预测日志声明 macOS/Linux。跨平台使用者需自行改写换算命令。
- 篇幅与复杂度本身是使用门槛 — SKILL.md 45KB / 620 行 + 3 份 reference。若 agent 只读片段(尤其漏掉「四条陷阱」或「多账号闸门」),会稳定复现文档自己记录过的错误结论——该 skill 的可靠性依赖被完整阅读,而非被摘要。
5第二遍独立确认
- [ok] query_usage.py 的『只读、不改登录态、不外发到别处』声明是否有反例 — 反例检索失败:全文只有一处 urllib.request.Request/opener.open,method="GET",URL 为常量 USAGE_URL,且被 NoRedirect 拦截跳转(redirect_request 直接 raise 'redirect_refused: open the official Usage page instead');无写文件、无 subprocess、无 os.remove/chmod;凭据只出现在两个请求头里。docstring 'No refresh or redemption occurs.' 与代码一致。
- [ok] 凭据是否可能通过输出或错误信息泄漏 — 专门核对:UsageError 的 docstring 即声明 'A public error message which never contains credential values.';实际 raise 的字符串全部是固定短语(auth_incomplete / identity_mismatch / authentication_failed / usage_unavailable / redirect_refused),无格式化拼接令牌;main 只 print(json.dumps(result)),而 result 由 normalize_usage 构造,字段为 email/plan_type/windows/计数/notes,不含 token。结论成立。
- [ok] forecast_log.py 是否真的无网络,且写盘路径与权限与文档一致 — import 段无 urllib/socket/requests;唯一文件操作是 locked_journal 的 os.open(..., 0o600) 与 makedirs(mode=0o700),路径 root = ${XDG_STATE_HOME:-~/.local/state}/tibo-reset-codex/forecasts.jsonl,与 references/forecast-feedback.md 所述『默认文件是 ${XDG_STATE_HOME:-~/.local/state}/tibo-reset-codex/forecasts.jsonl』一致。docstring 'No network, account access, reset redemption, or background process.' 与代码一致。
- [ok] 是否漏记外发目标(把每个出现的域名回查调用点) — 全目录域名提取结果为:codex-reset.com、api.fxtwitter.com、status.openai.com、api.openai.com、chatgpt.com、cdn.syndication.twimg.com、publish.twitter.com、publish.x.com、x.com、codexlimitwatch.com、codex.lunarwerx.com、codexrunway.com、help.openai.com、otexts.com、example.com/example.invalid(占位)。逐条已归入 external_deps 的 13 个条目(x.com 与 api.openai.com 作为原始来源/端点宿主被 fxtwitter 通道覆盖,chatgpt.com 同时是产品页与用量端点,otexts.com 为文档参考读物)。无未记载的隐蔽外发。
- [discrepancy] 『时区换算 / 平台支持』声明是否自洽 — SKILL.md 明确标注时区换算命令为 **macOS only**(依赖 BSD date -j/-f,'GNU date 无此参数'),references/account-usage.md 也写『Windows 未实测』;但同仓库的 scripts/forecast_log.py 自述平台为『Python 3.10+, macOS/Linux』,query_usage.py 未声明平台限制。即脚本层覆盖 macOS/Linux,文档层把时区换算限定在 macOS。两者非矛盾(不同组件不同约束),但使用者在 Linux 上直接照抄 SKILL.md 的 date 命令会报错——文档已用『macOS only』披露,属已知限制而非隐藏缺陷。
- [ok] 脚本与文档对『重定向』的处理是否一致(安全相关,看是否有代码比文档更松的地方) — SKILL.md 未特别强调重定向;脚本却主动以 NoRedirect 拒绝任何跳转并把用户导向官方 Usage 页面。这是代码比文档更严(有利方向),不构成夸大,已记入 verdict.strengths。
- [unlocatable] 文档中的端点『实测 200 / 字段形状』类声明能否在本次侦查中复核 — SKILL.md 含大量带日期的端点实测声明(如『用 Tibo Radar JSON API 找最新公开公告(2026-08-26 实测 200)』、fxtwitter『2026-08-30 实测:免登录、直连即可』、以及『完整正文在 `tweet.text` 字段——不是 `full_text`』)。本次为离线源码侦查,未发起任何外部请求,因此这些『当前是否仍可用/字段形状是否仍成立』无法在源码内定位验证。文档自身亦声明端点『都会间歇抖动』『不是稳定的公共 API 契约』并把重试写成必须步骤。故记为待补,不作为推翻第一遍结论的依据。
- [ok] pin commit 与 skill.path 是否与任务书表格一致 — git rev-parse HEAD = d5c4678cb5d4fd6acc9c922690df035dbd33d247,与任务书表格『库内 HEAD』一致;目录位于仓库根,相对路径 tibo-reset-codex;本目录最后一次提交 49ddcdae(2026-09-08 22:13)。GitHub API 复核 MIT / stars 1392 / pushed 2026-09-15T09:30:04Z。
6结论
f36131d1c8019312…d5c4678cb5