
问题背景
这次记录的是一个使用 Codex 的小技巧:如果额度窗口是按“首次使用后开始计算,每 5 小时一轮”这样的规则运行,那么每天什么时候第一次唤醒 Codex,会影响后面几个额度窗口落在什么时间段。
我的目标不是让 Codex 无意义地持续运行,而是根据自己的作息,把自动唤醒时间尽量对齐到真正可能使用 Codex 的时间。这样可以减少额度窗口因为长时间未使用而向后漂移,也能避免晚上休息后再开启不必要的新窗口。
当时的作息是北京时间:
- 早上 `07:30` 开始工作,通常会使用 Codex;
- `16:30-18:00` 是休息时间;
- `18:00-22:00` 之间都有可能继续使用;
- `22:00` 以后休息;
- 另外还有一些凌晨 `04:00/05:00` 左右的其他定时任务,可能也会触发 Codex。
现象
一开始最直观的方案,是把工作日唤醒时间设在:
“`text
07:30
12:31
17:31
“`
这样刚好把一天切成三段接近 5 小时的额度窗口:
“`text
07:30 – 12:30
12:31 – 17:31
17:31 – 22:31
“`
这个方案对普通工作日已经够用,但有一个隐患:如果凌晨 `04:00/05:00` 的定时任务先使用了 Codex,那么第一轮窗口就会从凌晨任务开始算。
结果就会变成:
“`text
04:00 使用 -> 下一次重置约 09:00
05:00 使用 -> 下一次重置约 10:00
“`
这样到早上 `07:30` 真正开始工作时,其实还处在凌晨任务打开的同一轮窗口里,不能保证拿到一轮刚重置后的额度。
排查过程
讨论中先确认了一个关键点:如果凌晨其他任务会实际唤醒或使用 Codex,那么这些任务会改变当天第一轮额度窗口的起点。
因此,`07:30` 作为第一轮起点只有在一个前提下才稳定:凌晨没有更早的 Codex 使用。如果凌晨 `04:00/05:00` 已经使用过 Codex,`07:30` 就不是当天第一轮起点,而只是落在凌晨窗口中间。
后来调整思路,不再把 `07:30` 作为当天的第一次唤醒,而是在凌晨更早的时候主动唤醒一次:
“`text
02:30 第一次唤醒
“`
这样做的好处是,`02:30-07:30` 会形成一轮完整窗口。即使 `04:00/05:00` 有其他定时任务运行,它们也会被包进这轮窗口里,不会再把早上真正工作时的重置点推迟到 `09:00/10:00`。
在这个基础上,每个后续时间点都多留 5 分钟余量,避免刚好卡在重置边界:
“`text
02:30 -> 07:30
07:35 -> 12:35
12:40 -> 17:40
17:45 -> 22:45
“`
解决方法
最后采用的是每天四个固定唤醒时间,全部为北京时间:
“`text
每天 02:30 / 07:35 / 12:40 / 17:45
“`
对应的额度窗口大致是:
“`text
02:30 – 07:30 覆盖凌晨其他定时任务,并让早上工作前完成一轮
07:35 – 12:35 覆盖上午工作
12:40 – 17:40 覆盖下午工作
17:45 – 22:45 覆盖晚间可能使用的时间
“`
在 Codex 里设置时,为了简单和节省 token,没有创建多个独立任务,而是把它做成一个本对话内的每日唤醒任务。任务名是:
“`text
每日 Codex 额度窗口唤醒
“`
唤醒提示词也应该尽量短,只要能让当前对话保持一次轻量活动即可,不需要让它执行额外分析或复杂操作。
注意事项
这个方法的前提,是当时采用的额度理解确实成立:额度窗口从首次使用开始计算,并且大约每 5 小时重置一次。如果以后 Codex 的额度规则发生变化,这套时间表就应该重新评估。
`02:30` 这个点的价值,是把凌晨 `04:00/05:00` 的其他任务包进同一轮窗口。如果还有更早的任务会使用 Codex,比如 `02:00` 左右,那么第一次唤醒就要再提前到那个任务之前。
不建议在 `22:00` 以后再额外唤醒。因为那会把夜间休息时间也纳入额度周期,反而可能影响第二天早上的节奏。
如果周末也会使用 Codex,可以像这次一样改成“每日”规则;如果只在工作日使用,则可以改成“周一到周五”规则,避免周末产生不必要的唤醒。
总结
这次的小技巧,本质上是把自动唤醒时间和自己的真实使用节奏对齐。
最关键的不是机械地每 5 小时唤醒一次,而是先找出哪些时间会实际触发 Codex,再把这些时间纳入同一套窗口规划。对我这套作息来说,最终的每日四点方案是:
“`text
02:30 / 07:35 / 12:40 / 17:45
“`
它既覆盖了凌晨定时任务,也覆盖了早上、下午和晚间的主要使用时段,同时避免在深夜休息后继续开启新的额度窗口。